6

cve-2014-0569 漏洞利用分析 | WooYun知识库

 6 years ago
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的漏洞描述:

enter image description here

测试环境: Win7 SP1 + Flash ActiveX 15.0.0.167

0×01 漏洞利用分析


介绍有关漏洞关键代码前,先看一下heap spray后的内存布局:

enter image description here

简单描述为:

enter image description here

漏洞致使Uint Vector的length字段被改写。

漏洞关键代码:

enter image description here

红线标注的部分其操作流程:

取预定大小0×1000的ByteArray对象_loc3,赋值给domainMemory,以便casi32函数操作此内存

预置大小0×1000的ByteArray对象:

enter image description here

通过函数atomicCompareAndSwapLength将_loc3长度置0

casi32函数内由于整数溢出造成执行流改变,致使向_loc3偏移0×1000处成功写入0×40000001

上述过程细节:

enter image description here

enter image description here

enter image description here

enter image description here

这样就可以以超长的Uint Vector为起点,读取预置的对象数据。

利用关键点:

搜索预置的sound对象进而计算出flash控件基址

预置的sound对象包含于喷射的少量Vector Object里,这里称之为vec_3。

具体的喷射代码:

enter image description here

通过特征比对遍历以获取vec_3中元素:

enter image description here

搜索到的其中一项:

计算flash控件基址:

enter image description here

在flash控件基址基础上获取rop链所需指令,用VirtualAlloc分配可执行内存过DEP。

enter image description here

enter image description here

构造rop链(部分):

enter image description here

修改sound对象虚表指针,并调用修改后的虚表函数将执行流导向stack pivot。

enter image description here

sound对象虚表指针修改前后:

enter image description here

enter image description here

修改后的虚表指针指向内容:

enter image description here

调用虚函数触发利用。

enter image description here

0×02 分析总结


完整的利用至少由两部分组成(html + swf),其中swf并不能独立执行,需要html传入的参数(shellcode),只拿到swf并不能获知攻击者的意图。

0×03 参考文章


  1. CVE-2014-0569漏洞分析

  2. Cracking the CVE-2014-0569 nutshell


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK