使用 Active 控件喷射堆
- Office 有不少关于堆的漏洞,例如比较经典的 cve-2016-7193 漏洞,在覆盖了虚表进行 call 调用时就需要将利用载荷喷射到 call 的地址在进行下一步的利用。而使用 Active 控件进行堆喷射也是比较流行的方法。Parvez Anwar 在他的博客中详细的描述了此方法,并且公布了相关的 Poc
堆喷射样本分析
32 位
- 32 位的样本共有 4 个,分别对应着不同的堆喷射数据大小
- 每个样本都是使用嵌入的 ActiveX 对象,包括一个 bin 文件和多个 xml 文件,xml 文件负责将 bin 文件的数据喷射到内存中
- 喷射的数据为测试数据
64 位
构造
- 使用 create_word_bin.pl 脚本构造 bin 文件
- 使用 create_word_xml.pl 创建解压的 docx 文件
- 将 bin 文件添加并修改以下文件
[Content_Types].xml – 包含指向各个 activeX[x].xml 条目的条目
document.xml – 包含引用 document.xml.rels 中设置的 activex[x].xml 文件的 ID
document.xml.rels – 包含单独的 image[x].emf 和 activeX[x].xml 条目、独特的 rIdes
activeX[x].xml – 调用每个 activeX[x].xml 文件中的 classID
activeX[x].xml.rels – 指向各个 activeX[x].bin 文件
activeX[x].bin – 复合文件二进制格式
测试
- 经过测试不论是 32 位还是 64 位都能够喷射成功,500 chunks 的文件喷射效果如下所示
- 以下是喷射的数据
参考
- https://www.greyhathacker.net/?p=911