Hacking Team 新 Flash 0day分析

author:路人甲

0x00 背景

继前几天从Hacking Team中找到一个flash 0day,Adobe发布修复补丁之后,又被人在邮件中找到了一个flash 0day。

readme中描述,影响范围为Adobe Flash Player 9+ 32/64-bit (since Jun 2006)

Windows中的IE,OS X中的firefox均可直接执行计算器。

0x01 漏洞分析

漏洞文件http://krash.in/flashnew0day.zip,是从Hacking Team邮件中找到Flash 0day,简单看一下该漏洞的利用方法。

点击Run Calc之后,该程序会调用Check64()函数,这个函数是该漏洞的一个简化版,程序用32、64不同的内存结构判断当前是32位进程还是64位。程序在最开始重载了MyClassvalueOf

opeaqueBackground属性接受数值型,故如果传入一个类,会显示调用该类的valueOf一次,这个也是之前的一个UAF用的一个技巧。所以,在第一次走到下列语句设置opaqueBackground的时候走到了valueOf1

valueOf1中,攻击者使用recreateTextLine重用_tl这个textLine,随之,原始TextBlock(_tb)中的内部TextLine对象被释放。

----->

然后,在valueOf中使用

占住这片被释放的内存,1016是TextLine对象在内存中的大小,1344相当于多分配了一块内存(1016/4-8)。函数return 1,写入到这片内存中。

valueOf返回后,程序搜索_ar,找到值为1的一项,根据该项的位置判断是32还是64位系统:

随后,程序调用TryExpl(),这里使用了类似的方式:

先分配特殊长度的Vector和TextLine留待后用,接着将MyClassvalueOf也设置为valueOf2

然后设置opaqueBackground属性,_mcMyClass的实例,因此触发valueOf2

valueOf2中使用和之前一样的方式给_ar的所有元素全部做一次内存破坏,vLen的值是98。

返回后,程序在_ar中搜索被破坏的块,并设置下一个VectorLength0x40000000,后续就是经典的Vector操作了。

IE11+Flash Player 17中,跟踪可发现length被覆盖后的Vector

0x02 使用的shellcode

和之前一样,使用CreateProcessA调用calc

0x03 效果

在IE11中成功地启动了calc.exe

桌面截图:

评论

夸父追日2015-07-15 19:54:24

怎么才能实现自动弹弹弹,弹走鱼尾纹?

Jn·2015-07-11 18:02:07

吊炸。