通过证卡打印机软件在 Windows 上进行权限升级
CVE-2024-34329
早在五月份,我就在我的笔记本电脑上安装了一个证卡打印机软件,当时我的公司组织了一个安全研讨会,以演示克隆另一家公司的员工徽章是多么容易。
在 Windows 上,可以下载一个名为 ProcMon 的工具。它是 Windows 的实时监控工具,可以捕获并显示系统活动。因此,如果您打开 ProcMon(进程监视器)并配置适当的过滤器来隔离您的应用程序,您将能够看到应用程序与您的笔记本电脑进行的所有交互,包括文件系统、注册表和进程/线程操作。
通过分析证卡打印机软件的行为,我注意到该软件正在尝试加载不存在的 DLL(动态链接库是 Microsoft Windows 操作系统中的共享库)。该软件在系统上下文(高权限)下运行,将调用文件夹“C:ProgramDataDatacard<CardPrinterSoftware>Service”中的 DEVOBJ.dll 或 CFGMGR32.dll,并以应用程序未找到的响应进行响应安装程序。
通过在该文件夹上运行 icalcs,我注意到我的普通用户可以对其进行写入。
icacls "C:ProgramDataDatacard<CardPrinterSoftware>Service"
C:ProgramDataDatacard<CardPrinterSoftware>Service NT AUTHORITYSYSTEM:(I)(OI)(CI)(F)
BUILTINAdministrators:(I)(OI)(CI)(F)
CREATOR OWNER:(I)(OI)(CI)(IO)(F)
BUILTINUsers:(I)(OI)(CI)(RX)
BUILTINUsers:(I)(CI)(WD,AD,WEA,WA)
坚持,稍等!你问这一切意味着什么?
用户组具有以下权限:
-
继承读取和执行权限,这意味着他们可以读取和执行目录和子目录中的文件。
-
继承了“写入数据”、“添加子目录”、“写入扩展属性”和“写入属性”的权限,这意味着他们可以修改目录内容。
好的,那么——回顾一下
在系统权限(最高权限)下运行的软件会从我们具有写入权限的文件夹中加载不存在的库。
我的黑客思维:如果我创建一个与软件尝试加载的名称相同的 DLL,会怎样?...这是否意味着 SYSTEM 会执行我精心设计的 DLL?嗯,是。
好的,我准备了一个名为 DEVOBJ.dll 的恶意 DLL,作为概念验证 (PoC),它运行whoami并将其存储在名为 PoC 的文件中。我将 DLL 添加到软件加载缺失 DLL 的文件夹中,即Service文件夹中。
一旦软件开始安装,它将搜索我的 DLL,并且 SYSTEM 将执行其中包含的代码。这意味着我可以获得权限升级,因为我可以让 SYSTEM 执行我想要的任何代码。
加载我的恶意DLL后,我们确实可以找到在桌面文件夹中创建的PoC.txt文件。打开该文件可以发现whoami命令确实是由 SYSTEM 执行的。
结论
我已经证明,通过利用卡片打印机软件在普通用户具有写入权限的文件夹中加载的缺失 DLL,我可以将我的权限提升到本地计算机上的最高权限。
可以在此处找到权限升级漏洞的安全公告:https://www.entrust.com/sites/default/files/documentation/productsupport/entrust-security-bulletin-e24-004.pdf 。感谢 Entrust 对此漏洞的快速响应和修复。
更多详细信息可以在这里找到:https://github.com/pamoutaf/CVE-2024-34329
非常感谢 Alaa Kachouh 对这个项目的支持
原文始发于微信公众号(Ots安全):我入侵了卡片打印机软件(CVE-2024-34329)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论