windows install CVE-2018-0868 漏洞分析

admin 2025年2月15日23:45:28评论20 views字数 1483阅读4分56秒阅读模式

这个漏洞是因为对config.msi 没有任何防护所致。攻击者可以自己创建config.msi,并目录连接到其他文件夹。然后windows installer 会修改config.msi 的权限,并往里写入 rbs 脚本。由于目录连接,该文件实际被写入到了一个攻击者可控的文件夹。虽然 rbs 脚本仍然是高权限的,攻击者无法删除,但攻击者可以移动其所在的文件夹,并在原位置重新创建一个同名文件夹,这样就可以在里面创建伪造 rbs 脚本了,然后 windows installer 就会以 local system 权限运行 rbs 脚本。

1. 补丁比较

windows install  CVE-2018-0868 漏洞分析

从流程图上看,差异比较多,有些混乱。

从 Ida F5 的结果来看,该 CMsiOpExecute::GetBackupFolder 函数里几乎全是虚函数调用,不太好观察,但仍可看出一些踪迹。

windows install  CVE-2018-0868 漏洞分析

windows install  CVE-2018-0868 漏洞分析

windows install  CVE-2018-0868 漏洞分析

上面这一段是更新后多出来的代码,可以看到:

打开文件后,获取文件属性,判断是否是 目录连接文件夹。如果是目录连接文件夹:则关闭、删除文件夹。然后调用 CMsiOpExecute::CreateFolder() 重新创建文件夹。

这个补丁相当于插入一段检测代码,一旦检测到Config.msi 已经存在,且是一个补丁文件,就删除它。然后重新创建。

2. 创建目录连接

创建目录连接有两种方式,使用 cmd 的mklink 或者 James Forshaw 写的 CreateMountPoint() 函数。

1. 使用 mklink 创建符号连接

system("mklink /j "C:\config.msi" "C:\Junction"");

使用 mklink 创建目录连接时,目录连接中的 Source 文件夹不能事先存在,但是 Target 可以事先存在,并且 Target 可以是另一个 符号链接。如果需要,我们可以先  c->d ,然后 b->c, 然后 a->b,最总形成 a->b->c->d 这样的一串 目录连接。

2. 使用 CreateMountPoint() 创建目录连接

CreateMountPoint() 函数的优点是 允许对已经存在的 Source 文件夹 创建目录连接。

3. Process Monitor 观察

windows install  CVE-2018-0868 漏洞分析

先通过mklink  创建 C:Config.msi 到 C:Junction 的目录连接,然后运行一个 msi 安装包,通过自动或手动的取消安装,可以观察到 C:Junction 里被写入了 rbs 脚本,并被执行。

我使用 Advanced Installer 创建了一个会自动出错并回滚的 msi 安装包。并使用了 SandboxEscaper 在 CVE-2019-1415 里提供的 rbs 脚本。

exp 大致步骤如下:

1. 创建 C:/Config.msi 到 C:/Junction 的目录连接。并准备好一个存放有 test.rbs 和 test.rbf 的目录。

2. 执行会自动回滚的安装。

3. FindFirstFile()  循环搜索 C:/Junction/*.rbs 文件,如果Windows Installer 创建了回滚脚本,该文件会被写入到 C:/Junction 文件夹里。

4. 开始循环调用 MoveFile 去移动 C:/Junction/ 文件夹。一旦移动成功,我们就将存放有 test.rbs 的目录重命名为 Junction 文件夹,并将 test.rbs 重命名为 回滚中所使用的 回滚脚本的名称。

这样我们的 rbs 脚本就会被以 system 权限运行。

windows install  CVE-2018-0868 漏洞分析

这是一个正经的公众号;drop database;在这里,你可以看到最新的漏洞复现,最全的修复方案以及最特殊的利用技巧。

点击上方蓝字关注我们!

原文始发于微信公众号(肚子好饿啊早知道不做安全了):windows install CVE-2018-0868 漏洞分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月15日23:45:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   windows install CVE-2018-0868 漏洞分析http://cn-sec.com/archives/1023452.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息