千家信息网

如何使用类型混淆在Adobe Reader执行代码

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇文章给大家分享的是有关如何使用类型混淆在Adobe Reader执行代码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言该漏洞的潜
千家信息网最后更新 2025年01月20日如何使用类型混淆在Adobe Reader执行代码

本篇文章给大家分享的是有关如何使用类型混淆在Adobe Reader执行代码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

前言

该漏洞的潜在原因是类型混淆。攻击者通过构造XML数据包(XDP)模板并在XML Forms Architecture (XFA)对象上执行特定的JavaScript操作,可以迫使Reader跳出模板对象的范围来引用数据。如果成功,就会在沙盘渲染程序中执行代码执行。

漏洞分析

触发该漏洞所需的XDP模板代码相当简单:
该漏洞由两个JavaScript指令触发。通过将一个子表单附加到另一个子表单,我们可以触发对底层模板对象的超界(OOB)读取。在这种情况下,当附加一个xfa引用的子表单时,就会出现漏洞。然后调用 .presence = "inactive";.
启用PageHeap后,在读取模板对象的OOB时,CMP指令上发生崩溃。虽然对象看起来只有0x140字节大小,但是我们在偏移量0x1d0处取消了对缓冲区边界以外数据的引用:
根据崩溃情况,我们知道唯一对象的类型是0x7c00。通过观察acroform.api的符号化版本。在Solaris 9.4.1中,我们可以看到这个特定类型的id属于XFATemplateModelImpl对象,它只是底层XDP的"模板"对象:回到非符号化的Windows版本的acroform.api,我们可以确认模板对象的大小为0x140字节,这是上面引用的OOB对象的大小。我们可以通过几个简单的步骤找到:在XFATemplateModelImpl::Type methodAcroform.api可以找到静态变量0x7c00
Xref提供XFATemplateModelImpl vtable:

-Xref到vtable start提供构造函数。-Xref到构造函数并向上滚动几行显示对象的大小,即0x140字节:
由于我们导致了对模板对象的OOB读取,所以我们可以推测代码预期的是一个不同的、更大的对象,而不是模板对象,这也表明这是一个类型混淆错误。最有可能的是,类型混淆发生在xfa模板和xfa表单对象之间。而xfa模板大小为0x140字节,即xfa表单对象的大小为0x270字节。

## Exploit我们不能在模板对象被实例化之前执行JavaScript代码,要知道控制崩溃不是件小事。要实现这一点,需要在PDF解析过程或XDP解析之前的任何其他受控数据处理过程中求助于可控制的分配和释放。控制崩溃的另一种方法是构造一个PDF,其中包含一个附加的PDF,这会触发漏洞。Heap feng shui将发生在"外部"PDF中,触发"内部"(附件)PDF中的vuln。然后,以使其执行JavaScript代码的方式打开附加的PDF需要更高的权限,因此它可能对大多数用户无效。通过执行"poc.pdg"可以观察到这种崩溃是可以控制的。即使没有PageHeap。由于要读取Unicode字符串的某些部分并将其用作指针,因此最终会发生崩溃。下面是一个没有PageHeap的崩溃输出:

如果你想亲自测试一下,PoC就在这里。它可以在2018.011.20040之前在adobereader版本上起作用。看看我们今年发布的建议,你会发现很多pdf相关的案例。adobereader可能是最流行的,但是Foxit Reader中也存在大量bug。在操作系统中加入内置的PDF渲染器,就可以理解为什么如此多的研究人员研究这种攻击表面。

以上就是如何使用类型混淆在Adobe Reader执行代码,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

对象 模板 代码 类型 大小 漏洞 字节 表单 数据 控制 附加 版本 个子 函数 底层 情况 指令 更多 知识 符号 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 qq联系赵女士 网络安全 不用华为设备是因为网络安全 用例图用户和数据库实例 notes修改数据库服务器 怎么确认域服务器搭建成功 网络安全专业在校生可以考什么证 网络安全防护怎么开启 怎么创建移动我的世界服务器头像 浪潮服务器内存坏了怎么查看 开展网络安全宣传活动的简报 管家婆辉煌数据库怎么设置 银行安全邮储银行网络安全 王者注册的服务器怎么删除 web数据库课程设计 计算机网络安全三级 中间件连接oracle数据库 群晖服务器改造 软件开发费用流程 最新linux数据库用的是什么 腾讯网络技术教程 网络技术员五行属什么 澳大利亚文章数据库 维护网络安全的核心是 浙江互联网络技术咨询案例 网络安全拍手歌你拍一我拍一 服务器安全需要哪些硬件 网易服务器id怎么看 扬州营销软件开发系统 淘宝手机数据库怎么改 老外软件开发 一个顶几十个
0