看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布) 聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

博主 Decoder 又分享了一篇如何挖到 Dropbox 0day 漏洞的文章。如下是原文翻译:

又是硬链接!是的!我们可以利用很多机会,结合不正确的权限设置和很多软件中的硬链接来提升权限。

在本文中,我将展示如何使用 DropBoxUpdater 服务作为普通的 Windows 用户获取系统权限。和往常一样,这个“漏洞”是我和“业务搭档”@padovah4ck一起发现并利用的。

注意:我将不会发布任何源代码,我的目的是分享知识而非工具。

DropBoxUpdater Dropbox Client 软件套件的一部分,该软件制造商表示它用于将客户端维护至最新状态:

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

该更新器以一种服务和2个调度任务的形式进行安装,实话说我也没搞懂为何要这么做……不过我们继续。需要记住的是,在标准的安装过程中,它们以系统身份运行,其中一个dropboxupdate 任务由任务调度程序每隔一小时运行。

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

每次触发 dropboxupdate 时,它都会在如下目录中写入日志文件:

c:\ProgramData\Dropbox\Update\Log

权限如下:

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

如你所见,用户可在该目录中增加文件。

日志文件的格式较为特殊:

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

而文件命名约定为:

DropboxUpdate.log-<YYYY>-<MM>-<DD>-<HH>-<MM>-<SEC>-<MILLISEC>-<PID>

用户可覆写并删除这些文件:

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

更有意思的是系统在这些文件上的 SetSecurity 调用:

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

是不是有点眼熟?如果你曾阅读过我之前的文章,就会知道可通过“硬链接”进行利用。

上篇文章即一周前推送的《如何利用Printconfig dll iPhone NT AUTHORITY\SYSTEM 的真实案例》

但这里有一个问题,我们必须“猜测”日志文件名称,它由确切的时间(包括毫秒)和更新器进程的 PID组成。

听起来好像很有挑战性!

经过测试后,我们提出如下解决方案:

  • 确保DropBoxUpdate.exe进程未运行(作为标准用户:c:\>tasklist | find /I dropboxupdate

  • 通过将如下DLL 上的机会排它锁在启动时拦截DropBoxUpdate.exe 进程:

      C:\ProgramFiles(x86)\Dropbox\Update\1.3.241.1\goopdate.dll

  • 该进程将挂起,而由用户定义的回调函数将被触发

  • 找到dropboxupdate 进程的PID

  • 通过此前提到的命名约定创建999个链接,执行“硬链接喷射”,把当前时间(hhmmss) +10(timeA) 作为起始点。

  • 所有这些链接都指向我们想要拥有的目标文件。我们可以为一个文件设置的最大的硬链接数量为1024个。

  • 等待,直到当前时间(hhmmss) 等于timeA

  • 释放锁定。

  • 如果一切运行正常,那么我们应该匹配999毫秒范围内的正确的文件名称。

效果怎么样?我们必须进行测试,通常license.rtf 位于system32 文件夹中。为进行测试,你可以直接以管理员权限调用调度任务,而不必等到下一次为期一小时的运行期间。

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

有效果!现在你可以覆写系统具有完整权限的任意文件并获取最高权限了!

不过,我们可以再进一步……我们可以只通过 Dropbox Client 软件就获取系统 shell 吗?

是的,当然可以!还记得第二个调度任务吗?

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

这个任务以系统权限运行,并且可被任意用户登录时触发。在测试中我们注意到在登录时,DropboxCrashHandler.exe可被调用(只有当其它会话中未运行其它dropboxupdate 进程时):

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

那我们的想法是什么?就是将DropboxCrashHandler.exe 设置为目标文件,启动exploit,用“恶意的”可执行文件覆写该文件,登出,再次登录,这样应该就能够触发可执行文件了!

可在如下地址查看可运行的POC我想应该还有其它提权路径,请自行思考吧!

https://www.youtube.com/watch?v=kGAtRvm8KCQ&feature=youtu.be

边界条件

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

  • 必须以“标准的”方式以管理员权限安装Dropbox

  • 我们通过最新的Windows Dropbox Client 发布版本(当时是87.4.138)进行了测试。

披露时间轴

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

918日,我们将问题告知 Dropbox他们答复称已发现该问题的存在(但并非通过这些技术和完整的提升路径),表示将于10月末之前修复。如今90天的期限已过,于是我们发布本文。

可能的解决方案

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

在等待新版本(希望是修复版本)之时,用户可以删除Log文件夹上的User的“Createfiles / write data权限和Create folders/append data权限,应该没什么不好的情况发生。

旁注

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

通用的硬链接“滥用”将不再适用于未来的 Windows版本。在最新的Insider预览版本中,微软已经增加了一些补充检查,因此如果你没有目标文件的写入权限,那么当你尝试创建硬链接时会收到拒绝访问的错误消息提示。

漏洞补丁

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

Dropbox 尚未发布任何补丁。

不过0patch 平台的CEO Mitja Kolsek 表示,“我们在分析该问题后认为最可靠的解决方案是从DropBoxUpdater 中去除日志写入代码。这样做似乎既不影响DropBox 的功能也不影响更新进程,它只会让日志文件为空,可能导致DropBox 难以解决用户计算机上的故障问题(很显然不易受攻击比这个问题更重要)。

0patch 平台已推出临时短期补丁,不过仅解决了易受攻击的部分,适用于运行系统时的内存中,因此无需重启机器即可打上补丁。不过要使用这个免费的微补丁,必须先安装并注册0patchAgent

 

推荐阅读

如何利用Printconfig dll:从 iPhone 到 NT AUTHORITY\SYSTEM 的真实案例

原文链接

https://decoder.cloud/2019/12/18/from-dropboxupdater-to-nt-authoritysystem/

https://www.bleepingcomputer.com/news/security/dropbox-zero-day-vulnerability-gets-temporary-fix/

题图:Pixabay License

本文由奇安信代码卫士编译,不代表奇安信观点,转载请注明“转自奇安信代码卫士 www.codesafe.cn”

看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

 点个“在看”,bounty 多多~                                          

                                                看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)

相关文章: