一个人认为打开一个txt文件很好,他想错了。 Macos CVE-2019-8761

2021-04-03 08:30:52

对不起的ClickBaity标题,但CVE-2019-8761真的是一个有趣的麦克斯错误,让攻击者在TXT文件中执行HTML,泄漏文件,并做各种其他时髦的事情。

当我在OSX上实现了默认文本读取器时,该研究源于默认情况下使用TXT扩展名打开文件。在TextEdit的界面上,它看起来像你可以为你的文字做基本的自定义(你可以打开文字粗体,斜体,改变颜色等......),所以我想知道TXT文件如何存储和解析这些信息。如果我们为文本添加自定义,它似乎使用RTF格式而不是TXT。

在我看来,TXT文件是一个非常有趣的攻击向量,因为它的无辜性质,除了文本。但是,我们之前已经看到了Microsoft Notepad的Tavis Ormare导致RCE的内存损坏错误。 TXT文件也由反病毒软件,防火墙,甚至是MAC'自己的门守视为可以' t可能是恶意的安全下载。

经过一些快速的文件来回测试文件,我很快就意识到了TextEdit可以追求思考,即使文件扩展为TXT,也可以将文件打开是RTF-HTML文件。将HTML注入到TXT文件中的能力显然打开了大量潜在攻击向量。

它似乎是由于某种原因似乎也应该解析HTML,即使文件格式是TXT。所以我们可以将一堆有限的HTML注入文本文件,现在是什么?

我发现的第一个错误之一显示了我,即使从可疑网站下载,Gatekeeper也不会隔离TXT文件。例如,我发现从TOR浏览器中下载的TXT文件,当打开时可以绕过网守并泄漏受害者的真实IP地址而没有任何警告。这不是很简单。

我首先尝试看看由TextEdit解析和解释了多少HTML。似乎存在非常有限的解析,并且许多有趣的HTML属性没有可用。然后,我继续令人敬畏的Cure53' s httpreaks,它是一个奇妙的文件,可以发现HTML / CSS属性是否泄露到第三方。

我使用服务器控制HTTPreaks属性中的所有URL,并将其保存为TXT,以查看TXT文件是否为我的服务器提出了请求。它没有。' t。在一些模糊之后,我发现了两个有趣的CSS和HTML属性,从本地文件中获得了某种奇怪的响应。

允许加载本地CSS文件。但是,唯一一个工作的方案是文件:///甚至不是http / s://。虽然这意味着我们可以' t制作外部请求,但它也意味着我们可以击中或打开本地存储的其他本地文件。这将创建一个非常明显的DOS漏洞,它通过编写递归文件包含或读取与/ dev / urandom,/ dev / reloge等无限数据流的文件来实现盲的ssrf。 2KB文本文件可能会崩溃您的Mac。很酷,但完全没用。

挖入OSX内部后,我遇到了允许文件:/// URL的Automount的功能进行远程请求。 Autofs是OSX上的程序,它使用内核向驱动器进行安装请求。 Automount还可以向外部驱动器进行远程请求。做' ls /net/example.com'强制osx向example.com发送远程请求

虽然他们做得很好地阻止TextEdit来制作外部请求,但这是他们在允许文件中忘记的一件事:///方案,在OSX文件中:///net/11.22.33.44/a.css连接到11.22。 33.44。

所以我会知道你什么时候打开我发给你的txt文件。不仅如此,而且显然自动搜索使用内核使TCP连接即使您使用的代理也是如此,它正在泄露您的真实IP地址。我找到了另一个浏览器技巧,可以在没有用户交互或警告的情况下强制下载的TXT文件(因为Gatekeeper不存在TXT)直接从Tor浏览器中泄漏IP。

泄漏IP地址并知道当您的TXT文件打开时很酷,但我们还能做些什么?这似乎更糟!

它拒绝攻击者可以使用< iframedoc src ="文件:// etc / passwd">并查看其在TXT文件中的内容。

我不会为本章节留下PoC,但我向您保证,在阅读上述两部分后,难以弄清楚。虽然我们可以嵌入/打开本地文件,但我们仍然可以' t执行javascript,所以它看起来可能乍一看没有办法。但这就是悬空标记进来的地方。

悬空标记攻击是良好的浏览器技巧,它用作禁用动态脚本时泄漏数据的脚本攻击。例如,在CSP停止JavaScript执行的情况下,它们通常可以使用它们来窃取反CSRF令牌。

通过组合< style> CSS属性与< iframedoc>属性,攻击者可以首先包含一个未闭合的样式标记,嵌入他们想要窃取的文件的内容,然后一旦文件打开,就会将内容泄漏为邪恶站点。

该漏洞在2019年12月向Apple报告,它在2020年的某处修补了。我不知道为什么给出CVE-2019 ID。鉴于利用多么简单,我会给它一个高CVSS。