Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

admin 2024年11月21日10:36:27评论13 views字数 2290阅读7分38秒阅读模式

在宣布漏洞赏金计划后,我下载了浏览器并开始寻找漏洞,利用我的逆向工程技能,我查看了浏览器二进制文件

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

我发现了一些有趣的端点

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

在浏览器中打开 URL

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

这是一个用于创建 boost 的漂亮 UI,它只是带有一些自定义配置的扩展,您可以在其中创建和编辑多种类型的 boost,boost 也将作为扩展自动安装,现在让我们看看里面的任何代码和可用路径

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

/play 端点很有趣,所以我开始研究它,让我们访问 arc://boost/play/test

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

查看代码

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

该值取自 URL,然后使用 decompressFromEncodedURIComponent() 函数对其进行解压缩(假设它就像 Base64 一样),然后传递给 JSON.parse() ,稍后它将加载 boost

幸运的是,压缩机制还具有 compressToEncodedURIComponent() 函数来测试我们的有效载荷,现在让我们创建一个简单的对象来测试

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

我们遇到另一个问题,JSON 必须首先是一个数组,让我们修复它 u='[{“x”:”y”}]'

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

最后我们终于开始工作了,这看起来需要做很多工作来创建一个 boost 配置让我们从 UI 创建一个 boost 并在代码上添加一个断点来查看配置

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

替换 boost 的配置由 3 个对象组成,它们是 3 个文件,content.js 是扩展的典型内容脚本,boost.config.json 是 boost 的设置,其中包含 boost 的信息,例如名称、范围和描述,这些信息稍后会被 UI 使用,最后 manifest.json 就是Manifest。让我们制作第一个 boost

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

很好,我们成功了,点击 Install Boost

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

boost 将会被安装,并且在我们的库文件中会创建一个包含所有 3 个文件的新文件夹,使用参数我发现文件 boost.config.json 仅由 UI 和 Arc 使用来显示有关 boost 的信息,并且每个权限和访问都在 manifest.json 中声明,这意味着我们可以欺骗 UI 来显示一个看似无害的 boost,它只会改变 example.com 的背景颜色,并且在清单中我们声明所有权限并可以访问所有内容。

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

这本身就是一个很大的漏洞,它允许我们欺骗 boosts UI 并安装恶意 boosts,从而可以访问所有内容,甚至是 file:// URI,这意味着不仅仅是 UXSS,还可以读取本地文件,这是普通扩展无法做到的,但我发现,当我们安装一个具有所有 URL 完全权限的扩展时,它将可以访问系统上的所有文件

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

我仍然想展示更多的影响力并在机器上获得 RCE,所以让我们稍微倒回去看看其他的东西。

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

当我们设置配置数组时,每个对象内部都有 2 个有趣的值,即名称和路径,作为攻击者,我们首先想到的就是尝试路径遍历,所以让我们尝试一下,并同时更改 ../styles.css 并安装 boost

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

你看到我看到的了吗:)我们的文件是在扩展文件夹的父目录中创建的,这意味着使用 ../ 该文件被反向遍历,我们可以创建具有任意内容和路径的任意文件。

通过这个操作,我发现我们还可以覆盖文件并显示完整内容,例如覆盖 /etc/passwd 来破坏机器或覆盖二进制可执行文件以在运行时执行代码或覆盖其他程序使用的 .py 和 .js 文件

我不想在测试时损坏我的机器,所以我使用了更安全的路径,即LaunchAgent,它是一个包含一堆 plist 配置的文件夹,它将在用户登录或系统启动时运行,现在让我们创建恶意 plist 文件,它将下载图像,将其设置为受害者墙纸,打开终端,其中包含一堆命令和经典的计算器

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

将压缩和其他内容以及路径遍历插入到 UI 中,以便将其插入到 LaunchAgents 文件夹中

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

点击安装

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

很好,我们已经插入了恶意 plist,当系统重新启动时,我们就可以执行代码了

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

我们得到了我们想要的,但是仍然存在一个问题,即如何将 arc:// uri 发送给受害者并且他单击“安装”,该 URI 很特殊,无法通过常规 HTTP 导航导航到它,用户必须将其粘贴到地址栏中并按下 Enter 或浏览器内具有更高权限的任何其他组件。

我们可以创建一个扩展程序并将其上传到具有标签权限的 Chrome 网上应用店,并使用 chrome.tabs.create 导航到 URI,然后当用户单击安装时,我们就会执行代码,这也需要大量的用户交互,我不喜欢这样。

在浏览 Arc 时,我看到了一个名为 Easels 的不错功能,它允许我们将其他网站嵌入白板并与其他人共享,嵌入功能在某种程度上类似于 iframe,但它允许我们嵌入每个页面,包括 arc:// 让我们尝试一下

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

我们可以分享类似这样的 URL https://arc.net/e/ED548B06-...。受害者点击框架,然后安装 boost,这意味着只需点击 2 次,并在 UI 内部提到,它会说这个 boost 只会更改 example.com 的内容,而不知道它具有完全权限。此图总结了我们的攻击

Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

视频POC:

https://youtu.be/c5ewNitNufE

后来我发现这个端点 arc://boost 用于在第一个版本中创建和安装 boosts 但是 /play 端点没有在任何地方提及,也许它已被弃用或从未打算公开使用。

我还发现了一种更简单的方法,可以在受害者浏览器中打开特殊 URI,这将使我们的攻击最小化到一次单击用户交互,受害者访问attacker.com -> 重定向到arc://boost/play/… -> 单击安装 -> pwn

10 月 7 日——报告已发送

10 月 10 日——通过删除旧版 boost 构建器进行修补

10 月 10 日——颁发 10,000 奖金

谢谢

連和

原文始发于微信公众号(OSINT研习社):Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCE

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月21日10:36:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Arc 浏览器 UXSS、本地文件读取、任意文件创建和路径遍历到 RCEhttps://cn-sec.com/archives/3418923.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息