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

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

我们可以执行该程序,然后使用 tasklist 命令检查正在运行的进程,或者通过任务管理器检查正在运行的进程。
启动程序后,可以通过以下命令查看程序正在运行的权限级别:
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!
Windows 提权-不安全的 GUI 程序的更多相关文章
- 2017-2018-2 20155315《网络对抗技术》免考五:Windows提权
原理 使用metasploit使目标机成功回连之后,要进一步攻击就需要提升操作权限.对于版本较低的Windows系统,在回连的时候使用getsystem提权是可以成功的,但是对于更高的系统操作就会被拒 ...
- 35.windows提权总结
本文参考自冷逸大佬的博客,源地址在这里:https://lengjibo.github.io/windows%E6%8F%90%E6%9D%83%E6%80%BB%E7%BB%93/ windows提 ...
- 「白帽黑客成长记」Windows提权基本原理(下)
上一篇文章我们介绍了信息收集方法和WMIC,今天我们将跟随作者深入学习Windows提权基本原理的内容,希望通过这两篇文章的讲解,大家能够真正掌握这个技能. 推荐阅读:「白帽黑客成长记」Windows ...
- 「白帽黑客成长记」Windows提权基本原理(上)
我们通常认为配置得当的Windows是安全的,事实真的是这样吗?今天让我们跟随本文作者一起深入了解Windows操作系统的黑暗角落,看看是否能得到SYSTEM权限. 作者将使用不同版本的Windows ...
- [转帖]「白帽黑客成长记」Windows提权基本原理(下)
「白帽黑客成长记」Windows提权基本原理(下) https://www.cnblogs.com/ichunqiu/p/10968674.html 提权.. 之前还在想 为什么 我的 sqlserv ...
- [转帖]「白帽黑客成长记」Windows提权基本原理(上)
「白帽黑客成长记」Windows提权基本原理(上) https://www.cnblogs.com/ichunqiu/p/10949592.html 我们通常认为配置得当的Windows是安全的,事实 ...
- Windows提权小结
摸鱼的时候,想想内网这部分还有什么地方适合水一下,翻翻往期,开始填坑 总结一下Windows提权的部分,以后有时间再补一下Linux提权 这仍然是一篇思路总结类的随笔,具体细节内容不展开,也展开不了. ...
- windows提权的几种姿势
想象这种画面:你拿到了一台机器上Meterpreter会话了,然后你准备运行 getsystem 命令进行提权,但如果提权没有成功,你就准备认输了吗?只有懦夫才会认输.但是你不是,对吗?你是一个勇者! ...
- Windows提权总结
当以低权用户进去一个陌生的windows机器后,无论是提权还是后续做什么,第一步肯定要尽可能的搜集信息.知己知彼,才百战不殆. 常规信息搜集 systeminfo 查询系统信息 hostname 主机 ...
- windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)
对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...
随机推荐
- 自用Idea内存配置
自用Idea内存配置 如下: 使用了zgc,自用48g内存的mac.可以应对8后端4前端同时使用. -Xms1g -Xmx12g -XX:+UseLargePages -XstartOnFirstTh ...
- Ubuntu 22.04 LTS 代号已经公布:那就是 Jammy Jellyfish
Ubuntu 22.04 LTS 代号已在 Ubuntu 开发之家 Launchpad 上公布. 在字母系列中的字母"I"之后,是"J". 因此,Canonic ...
- WxPython跨平台开发框架之列表数据的通用打印处理
在WxPython跨平台开发框架中,我们大多数情况下,数据记录通过wx.Grid的数据表格进行展示,其中表格的数据记录的显示和相关处理,通过在基类窗体 BaseListFrame 进行统一的处理,因此 ...
- opencv只在bin目录下编译dll,在lib目录下编译lib,在bin目录下不编译测试程序的各种exe
penCV是一个开源的计算机视觉库,它提供了多种编程语言的接口.如果你只想编译出DLL和Lib库文件,而不编译EXE(可执行文件),这通常是因为你想要进行某种形式的动态链接或者库的分发,而不关心EXE ...
- MySql中MySqlParameter的用法
在C#中,向表person插入一条数据(表person包括两列:id和name),使用MySqlParameter定义表中各列的值. static void Main(string[] args) { ...
- 理解IM消息“可靠性”和“一致性”问题,以及解决方案探讨
本文作者"商文默",本次有修订和改动. 1.写在前面 即时通讯网整理的大量IM技术文章中(见本文末"参考资料"一节),有关消息可靠性和一致性问题的文章占了很大比 ...
- HUAWEI MindStudio安装配置
HUAWEI MindStudio安装配置 官网: 链接 安装流程 获取软件包 软件包 说明 获取链接 MindStudio_{version}_linux.tar.gz MindStudio软件包, ...
- C# 获取系统声卡音频数据,并绘制波形
//by wgscd //date:2022/11/7 UI: <Path Stroke="Red" Data="{Binding path}" Rend ...
- 深入LinkedBlockingQueue实现原理
学习BlockingQueue之LinkedBlockingQueue实现原理 一:概念 LinkedBlockingQueue是一个用链表实现的有界阻塞队列.此队列的默认和最大长度为 Integ ...
- zabbix监控网络设备流量
项目环境 一台liunx服务器,这里使用的为ubuntu22.04(192.168.86.140) 一台华为交换机,本次监控的就是该交换机的端口流量(192.168.86.20) 一台pc主机,使用该 ...