本文通过 Google 翻译 Insecure GUI Applications -- Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。
导航
- [0 前言](#0 前言)
- [1 查找高权限的 GUI 程序](#1 查找高权限的 GUI 程序)
- [2 从不安全的 GUI 程序转移到 CMD 命令窗口](#2 从不安全的 GUI 程序转移到 CMD 命令窗口)
- [3 CVE-2019-1388 -- hhupd.exe 案例研究](#3 CVE-2019-1388 – hhupd.exe 案例研究)
0、前言
在这篇文章中,我们将介绍如何滥用不安全的 GUI 应用程序来实现对 Windows 系统的权限提升。
首先,假设我们在桌面上找到一个应用程序的快捷方式,然后执行该程序。执行后,检查正在运行的进程,发现应用程序是以 Administrator 身份运行的。然后,通过一些操作跳出该应用程序并进入到 Administrator 身份的 shell 中。此外,我们还将查看另一个可以以类似的方式滥用的 GUI 应用程序:hhupd.exe。
Windows 中的应用程序可以被这样配置:普通用户能够被授予管理员特权来运行特定的 GUI 应用程序,以便程序需要提升的权限来执行某些功能。【注:这类似于 Linux 中针对应用程序的 SUID 特权或 Capabilities 属性。】
1、查找高权限的 GUI 程序
由于本文所展示的示例均需要在 GUI 图形化界面进行。因此,假设我们已经获得了普通用户 bob 的凭证,并且能够使用远程桌面登录。
bash
sudo xfreerdp /u:bob /p:'P@ssw0rd' /v:172.16.1.250 +clipboard

现在我们已经在目标机器上站稳了脚跟,同时也看到桌面上有一个 Procmon 程序,而这引起了我们的兴趣。众所周知,Procmon 程序需要以管理员权限运行才能查看所有进程。
注:Procmon 的历史版本可在此处获得。

我们可以执行该程序,然后使用 tasklist 命令检查正在运行的进程,或者通过任务管理器检查正在运行的进程。
启动程序后,可以通过以下命令查看程序正在运行的权限级别:
cmd
tasklist /V | findstr -i "procmon"

同样,也可以利用任务管理器来查看此进程的信息。

Amazing!可以看到该程序正以 Administrator 身份运行,那我们该如何滥用它呢?--- 很简单,只需"open"一个 cmd.exe 命令并中断应用程序即可!
注:我在 win10 的最后一个版本中运行 procmon 程序时,它并不能够正常运行且电脑进程会不断增多使得电脑变得很卡。
2、从不安全的 GUI 程序转移到 CMD 命令窗口
通常有许多办法可以从 GUI 应用程序去启动 cmd.exe,但在这,我们主要是想通过 Windows 自带的功能去实现。由于父进程(Procmon)是以管理员权限运行的,因此我们可以生成一个以相同级别的权限运行的 cmd.exe 子进程。
GUI 应用程序通常都具有"打开文件"功能,幸运的是 Procmon 是有的!

单击打开后,将出现另一个窗口来浏览文件。

现在到了最有趣的部分。我们只需在地址栏中键入"cmd.exe",然后按 Enter。

此时,就会出现一个拥有管理员权限的 cmd 窗口。

然后我们可以使用 whoami /priv
命令确认这是一个高完整性 shell。

Amazing!我们能够直接在一个应用程序(procmon.exe)中启动另一个程序(cmd.exe),并且二者的进程权限都是一样的!
3、CVE-2019-1388 -- hhupd.exe 案例研究
在本示例中,依旧假设我们获得了标准用户 bob 的凭证,并且能够通过远程桌面登录目标系统。不过,本次的目标系统不再是 Windows 10 而是 Windows 7 操作系统。

Windows 证书对话框 (hhupd.exe) 中存在权限提升漏洞,它允许攻击者将权限提升至 SYSTEM,该漏洞目前已被记录为 CVE-2019-1388。
hhupd.exe 被称为 HTML Help 1.32 Update,它由 Microsoft Corporation 开发。
此 CVE 影响许多 Windows 版本,包括 Windows 7、8、10(最高版本 1903)和 Windows Server 2008 - 2019(最高版本 1903)。受影响版本的详细列表如下:

好了,既然知道了哪些版本的 Windows 容易受到攻击,那我们看看这个漏洞是如何对 Windows 7 起作用的。
根据我的经验,此漏洞需要 Internet Explorer 作为默认浏览器。
如果 hhupd.exe 尚未在受害者系统上(默认情况下不会),那么我们可以将其副本下载到攻击者机器上,然后开启 HTTP 服务器以供受害者下载。
python3 -m http.server 80

现在,我们将 hhupd.exe 下载到受害者桌面上,如下所示:


现在到了最有趣的部分!我们需要关闭 IE,右键单击 hhupd 应用程序并选择"Run as administrator"。

此时会出现 UAC 弹窗,提示输入管理员密码?但我们并没有管理员的密码,无法进行密码输入操作!而此时,就到了这个漏洞该如何利用的阶段。我们不是管理员并不重要,但我们仍然能够绕过 UAC 并获得 SYSTEM shell!
尽管我们使用 UAC 作为提升到 SYSTEM 的手段,但从技术上讲,这并不是"UAC Bypass"。要了解有关 UAC 旁路技术的更多信息,请在此处查看关于该主题的文章。
单击以管理员身份运行之后,点击显示详细信息,然后单击出现有关发布者证书的信息。

好了,这就是漏洞所在。当我们单击颁发的证书时,它将以 SYSTEM 身份启动一个 IE 实例!


然后,我们单击 Page 按钮,然后单击 Save As...

在 Windows 10 上,有一个齿轮图标取代了"Page"选项卡。
接着,就像之前在 Procmon 中那样,我们只需要在地址栏中键入"cmd.exe",它就会从 IE 中跳出并生成一个 SYSTEM shell。


BOOM!就这样,我们滥用了 GUI 应用程序,并将普通用户权限提升到 SYSTEM!