无名 发表于 2022-5-8 17:18:25

【梅开二度】Hacking Team Flash 0day

茫茫JIT CODE中,如何找到我们想要跟踪的代码呢? 借HackingTeam Flash 0day事件详细介绍下调试流程以及jitcode,帮助一些朋友们后续更好的学习。

ValueOf频出漏洞,adobe现在一直在缺哪补哪,7月8号才修复了hackingteam爆出来的0day CVE-2015-5119,紧接着10号又被人从泄露的邮件中挖掘出另一个0day,又是valueOf的问题。这次这个0day是TextLine对象的valueOf造成的UAF漏洞,Fireeye已经提交了adobe并领取了CVE-2015-5122,Adobe也发布了安全公告。

一直本着有人分析过的漏洞不在专门写文章来描述,有点重复工作的感觉。不过刚好有点想法通过这个文章详细介绍下调试流程以及jitcode,帮助一些朋友们后续更好的学习。

茫茫JIT CODE中,如何找到我们想要跟踪的代码呢?

茫茫JIT CODE,如何找到我们想要跟踪的代码? 这里有很多方法,具体可以参见附录debug jitcode,这里通过先找到array的函数创建以及数据结构,获取设置值对应的实现函数, 来跟踪整个EXP 代码的JIT CODE 流程(PS:怎么找到的?根据附录里面的方法)

ARRAY Struct
+0x10   m_buffer
+0x18   m_pos
+0x1c   m_cab

Data
m_buffer + 8 + m_pos*4

Array Method 对应18.0.0.203.ocx 地址
106B54D0   ArrayObject::_setUintProperty
106AECB0   ArrayObject:create_array
通过设置如下断点来跟踪

bu Flash32_18_0_0_203!IAEModule_IAEKernel_UnloadModule+0x19b9c0 ".echo set array value;dd esp"   avmplus::ListImpl// 10662080
bu Flash32_18_0_0_203!IAEModule_IAEKernel_UnloadModule+0x19b860 "set array value by obj"   // 10661F20
bu Flash32_18_0_0_203!IAEModule_IAEKernel_UnloadModule+0x1e85f0 ".echo createarray"
bu avmplus::ArrayObject::_setUintProperty
整个exp里面在真正TryExpl之前有个Check64函数,这里不详细讲述,原理跟TryExpl一样主要是用来做探路先小触发下漏洞获取当前是64位还是32位进程。

在调用TryExpl之前有几次分配array 可以直接忽略,可以根据TryExpl里面的Array长度为0x7E来识别
http://cdn.u1.huluxia.com/g4/M03/00/CF/rBAAdl807VyAUFBKAAAy4JwL6Q0571.jpg
页: [1]
查看完整版本: 【梅开二度】Hacking Team Flash 0day