2007年7月15日星期日

[Exploit][MSA01110707] Flash Player/Plugin Video file parsing Remote Code Execution POC

Author:云舒(yunshu)
2007-07-16
http://www.ph4nt0m.org

这个漏洞的分析是在这里:http://seclists.org/fulldisclosure/2007/Jul/0277.html,luoluo做出了一个POC,晚上有空,我跟了一下,郁闷的很,在这里简单的说说。我用的是Flash player 9.0.45.0,winxp sp2中文版。

看了分析之后,就开始跟luoluo给的POC,第一次异常发生在这里:

3019CE18 C1E9 02 SHR ECX,2
3019CE1B 83E2
03 AND EDX,3
3019CE1E 83F9
08 CMP ECX,8
3019CE21
72 29 JB SHORT Flash9c.3019CE4C
3019CE23 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]


随后我慢慢耐心的用shift+ f7一步一步的往下走,一直走到头晕眼花的时候,终于到了这样一个有意思的地方:
300ED77D 85C9 TEST ECX,ECX
300ED77F 0F84
00070000 JE Flash9c.300EDE85
300ED785 8B01 MOV EAX,DWORD PTR DS:[ECX]
300ED787 FF50
20 CALL DWORD PTR DS:[EAX+20]


先判断ECX是否为空,不空则把ECX处的内容赋给EAX,然后call。这样如果[ECX]可控的话,就有可能能够利用了。仔细试了几次,发现 [ECX]几乎每次都不一样,但是可以确定的是,[ecx]是flv文件内的内容。一怒之下,我把开头除了文件头的格式之外的所有内容都改成了01。一跟,运气很好,蒙对了,[ECX]变成了0x01010101,也就是说下一步要执行的内容我们可以控制了。但是现在问题是,我把我的shellcode 放到哪里去了?如果把文件的内容改成shellcode,[ECX]不可控了;[ECX]一定可控,则shellcode没地方放了。

在EMM的提醒下,尝试用HeapSpray来做,可惜还是可耻的失败了。HeapSpray之后,[ECX]变了,没法控制到下一步CALL的位置……或许这个漏洞的利用办法还是把shellcode放到文件中某个特殊的位置吧,加长文件或许可以。困得不行,睡觉先。附件这个rar是控制EAX 的POC,有兴趣的看看吧。

附件:flv_9.0.45.0.rar

1 条评论:

云舒 说...

使用HeapSpray确实可以执行到shellcode,http://icylife.net/yunshu/show.php?id=448