cve-2014-0569 漏洞利用分析 | WooYun知识库
source link:
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
cve-2014-0569 漏洞利用分析
0×00 简述
来自CVE的漏洞描述:
测试环境: Win7 SP1 + Flash ActiveX 15.0.0.167
0×01 漏洞利用分析
介绍有关漏洞关键代码前,先看一下heap spray后的内存布局:
简单描述为:
漏洞致使Uint Vector的length字段被改写。
漏洞关键代码:
红线标注的部分其操作流程:
取预定大小0×1000的ByteArray对象_loc3,赋值给domainMemory,以便casi32函数操作此内存
预置大小0×1000的ByteArray对象:
通过函数atomicCompareAndSwapLength将_loc3长度置0
casi32函数内由于整数溢出造成执行流改变,致使向_loc3偏移0×1000处成功写入0×40000001
上述过程细节:
这样就可以以超长的Uint Vector为起点,读取预置的对象数据。
利用关键点:
搜索预置的sound对象进而计算出flash控件基址
预置的sound对象包含于喷射的少量Vector Object里,这里称之为vec_3。
具体的喷射代码:
通过特征比对遍历以获取vec_3中元素:
搜索到的其中一项:
计算flash控件基址:
在flash控件基址基础上获取rop链所需指令,用VirtualAlloc分配可执行内存过DEP。
构造rop链(部分):
修改sound对象虚表指针,并调用修改后的虚表函数将执行流导向stack pivot。
sound对象虚表指针修改前后:
修改后的虚表指针指向内容:
调用虚函数触发利用。
0×02 分析总结
完整的利用至少由两部分组成(html + swf),其中swf并不能独立执行,需要html传入的参数(shellcode),只拿到swf并不能获知攻击者的意图。
0×03 参考文章
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK