Foxit Reader 命令注入(CVE-2017-10951)和文件写入漏洞(CVE-2017-10952)

admin
13520admin首席执行运营官
2017-08-23 04:57:04
13520 2017-08-23 04:57:04
关于Foxit Reader - 安全阅读模式和其他漏洞的故事

前几天有人给我发送以下链接,其中描述了Foxit Reader中的两个漏洞:https://thehackernews.com/2017/08/two-critical-zero-day-flaws-disclosed.html
这两个漏洞类似于我在Appsec贝尔法斯特2017年提交的Foxit Reader的行为。不幸的是,录音从未发布,所以我决定是博客文章的时候给出关于这些漏洞的一些额外的信息。首先我要描述在Foxit Reader中实现的安全模型。

安全阅读模式
Foxit Reader实现了一线防御,即所谓的“安全阅读模式”。默认情况下启用。如果它被启用,它将禁止执行脚本和其他功能,这会损害最终用户的安全。在我的演讲中,我说,这个功能永远不会被禁用。如果漏洞需要禁用的“安全阅读模式”,则Foxit将不会修补它。对于上述链接中描述的两个“漏洞”,这是正确的。

注意:
显然,Foxit决定为hackernews博客文章中提到的两个漏洞提供补丁。 https://www.zerodayinitiative.com/blog/2017/8/17/busting-myths-in-foxit-reader从Foxit声明中提取的简短报价:“Foxit Software致力于向其客户提供安全的PDF产品,我们的业绩记录在迅速应对脆弱性[...]所以让我继续谈论我的类似发现,其中一个仍然是不固定的。

执行本地文件
报道:5.5.2017到福昕证券团队
发布安全公告:4.7.2017 https://www.foxitsoftware.com/de/support/security-bulletins.php
函数调用:xfa.host.gotoURL
现实:仍然不固定不受安全阅读模式保护!
测试的Foxit版本:8.3.1.21155

CVE-2017-10951滥用app.launchURL JavaScript调用执行本地程序,无需任何用户交互。我正在使用另一个功能,具有类似的功能,称为xfa.host.gotoURL。通过阅读规范,可以看出,通常这些功能将接受一个在新的浏览器窗口中打开的URL。到目前为止这么简单我认为CVE-2017-10951使用与执行本地程序相同的URL(我不是100%确定,因为没有确切的细节是公开的)。

图片:2015082416215667.jpg

而不是将http / https URL传递给xfa.host.gotoURL,而是使用文件:///协议处理程序。执行cmd.exe。以下文件:/// URL就够了:
xfa.host.gotoURL("file:///c:/windows/system32/cmd.exe");
app.launchURL和xfa.host.gotoURL之间的一个区别是这样的:xfa.host.gotoURL不受安全阅读模式的保护,或者是在我给Foxit安全团队的电子邮件中所述:
XFA标准定义了xfa.host.gotoURL函数调用,它将加载一个URL。 我发现这个功能不受Trust Manager的保护,也没有检查指定的协议。 以下示例将打开“cmd.exe”,无需任何用户交互:
xfa.host.gotoURL("file:///C:/windows/system32/cmd.exe");
我不知道为什么Foxit没有补丁我的漏洞,但希望他们现在做!注意:这不是一个完整的“安全阅读模式”旁路。这只适用于这个精确的函数调用!使用PoC(它会打开cmd.exe和calc.exe),当您关闭PDF时,它会打开explorer.exe):

https://drive.google.com/open?id=0B2HQuxIrwJ53a1hNS2pSYTZzdU0
https://www.youtube.com/watch?v=CWu4OHwtzm8

文件执行 - 限制:
1)不可能将参数传递给执行的程序。也许可以通过app.launchURL,但文本/视频不包含任何提示,这是这种情况。
2)当文件:///协议处理程序指向存储在SMB共享中的可执行文件时,Windows操作系统将触发一个警告框,要求用户确认执行该程序。
3)如果处理程序指向当前下载的文件(很可能通过Web浏览器),Windows将在执行程序之前再次询问用户确认。下载的文件包含所谓的“区域标识符”。此标识符包含有关可执行文件源的信息。如果从像example.com这样的网站下载文件,它将包含3的区域标识符。在文件执行之前,ZI为3始终触发警告对话框(注意:此规则有一些例外)。我知道绕过这些限制的一种可能的方法,但这将需要另一个博客文章;)将文件拖放到本地文件系统

我在2016年通过ZDI报告了我的发现,结合安全阅读模式旁路:https://www.zerodayinitiative.com/advisories/ZDI-16-396/
现实:在2016年结合安全阅读模式旁路修补。它仍然使用禁用的安全阅读模式(如我所想的)
让我们讨论上面链接中描述的下一个漏洞。

图片:8c35802a-d443-41ec-a1ca-246fcf38f7aa.jpg

我再次使用一个具有相同功能的不同的函数调用。我想你可以看到一个模式^^。 CVE-2017-10592正在使用this.saveAs函数调用将文件放入本地文件系统。我总是使用xfa.host.exportData函数实现相同的功能。两个功能都接受设备独立的路径(PDF方式来定义本地路径,独立于操作系统)来存储文件。文件路径完全由用户控制,文件扩展名可以自由选择。

在saveAs功能的情况下,存储的PDF文件本身可以转换为其他文件类型,尽管我不知道Foxit Reader是否实际支持此功能。
xfa.host.exportData函数调用导出XML结构。由于删除有效的可执行文件(因为攻击者没有完全控制文件的内容)确实很难甚至不可能,所以在Windows操作系统上利用此类漏洞的最简单的方法是删除一个HTML应用程序名.hta)。
HTML应用程序的行为像普通的HTML文件(例如,任何字符,没有有效的HTML元素被高兴地忽略),但它可以访问强大的JavaScript API调用,允许执行参数,本地文件访问等等。
所有的攻击者都必须在PDF结构中嵌入一个有效的脚本标签,并确保存储在创建的HTA文件中。
通过将这种文件放入启动文件夹,攻击者只需等待受害者重新启动PC。如果攻击者不想等待重新启动,他可以删除其恶意HTA文件,并使用前面提到的功能立即执行它(丢弃的文件没有区域标识符)。

概念证明(PoC在丢弃的文件中不存储真实的有效载荷):
  • 在Foxit Reader中打开PoC
  • 禁用安全阅读模式
  • 重新启动Foxit Reader
  • 打开PDF
  • 关闭它名为evilHTA.hta的文件将被丢弃在桌面上。
  • PoC:https://drive.google.com/open?id = 0B2HQuxIrwJ53cGxPUndCdWY3T28
如果你想知道为什么使用onclose事件,我可以告诉你一个接近null的异常会崩溃Foxit Reader。所以这是关于Foxit Reader的简短介绍,为什么你不应该禁用安全阅读模式。但是等待...有没有办法绕过“安全阅读模式”?以下旁路是固定的,但也许它激发某人搜索新的旁路,固定:安全阅读模式旁路

当我开始玩Foxit Reader时,我没有阅读任何有关实施的安全性的信息,而是直接跳到这里。我使用不同的功能,我知道可能会引入安全问题,直到我尝试xfa.host.exportData。突然间,我的文件被丢弃,没有任何用户互动。我的第一反应是:“WTF?这不可能是真实的,应该有一些安全保护。”
所以我开始研究和发现:我绕过了安全阅读模式,甚至没有意识到^^基本上我在研究中使用的是XFA。 XFA是在PDF标准中定义的XML结构,它定义了与PDF格式相关的所有内容。它允许定义。
本文标题:Foxit Reader 命令注入(CVE-2017-10951)和文件写入漏洞(CVE-2017-10952)
本文作者:admin
本文来自:蚁安黑客官网
转载请注明本文链接:http://bbs.mayidui.net/t890.html
游客
登录黑客论坛后才可以回帖,黑客登录 或者 注册黑客
weixin
蚁安黑客

找黑客工具、找黑客教程、找黑客朋友,你想不到的黑客技术这儿都有!

微信号:baiyiwangan