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 ...
随机推荐
- Tableau 数值 以万显示
# Tableau 数字以万显示 0"."0,万
- Delon ACL
Delon ACL delon ACL Alain acl 路由守卫 使用 ACLService 核心是 ACLService,See:https://github.com/ng-alain/delo ...
- PDF 图书
我找到的深入介绍 PDF 结构的图书主要有 2 本: PDF Explained,这本书比较早,首发于 2011 年11 月 30 日 Developing with PDF,首发于 2013年10月 ...
- mapstruct坑:Internal error in the mapping processor: java.lang.NullPointerException at org.mapstruct.
错误描述 项目中如果使用了mapstruct框架,在使用Idea新版本后,启动会报错! Internal error in the mapping processor: java.lang.NullP ...
- Qt编写地图综合应用10-点聚合
一.前言 点聚合在地图相关应用中比较常用,比如在地图上查询结果通常以标记点的形式展现,但是如果标记点较多,不仅会大大增加客户端的渲染时间,让客户端变得很卡,而且会让人产生密集恐惧症,密密麻麻的一大堆点 ...
- 移动端弱网优化专题(十四):携程APP移动网络优化实践(弱网识别篇)
本文由携程技术团队Aaron分享,原题"干货 | 携程弱网识别技术探索",下文进行了排版和内容优化. 1.引言 网络优化一直是移动互联网时代的热议话题,弱网识别作为移动端弱网优化的 ...
- Mac 最大连接数和端口的相关参数
1. 最大连接数限制 最大连接数限制就是系统所能打开的最大文件数(文件描述符)的限制,分全局和进程两种: 1.1. 全局 $ sysctl kern.maxfiles kern.maxfiles: 4 ...
- Android 稳定性(二):治理思路篇
本文同步发布于公众号:移动开发那些事:Android 稳定性(二):治理思路篇 一般来讲Android稳定性包括crash和ANR,本文主要围绕crash(应用的crash率)来讲述如何来做Andro ...
- SpringCloud与Dubbo的区别
1.SpringCloud与Dubbo的区别两者都是现在主流的微服务框架,但却存在不少差异: 初始定位不同:SpringCloud定位为微服务架构下的一站式解决方案:Dubbo 是 SOA 时代的产物 ...
- Java线程的通信
当需要多个线程共同完成一件任务,而且需要有规律的执行,那么多个线程之间需要一定的通信机制,可以协调他们的工作,以此实现多线程共同操作一份数据. 1 等待唤醒机制 这是一种线程间的协作机制,与争夺锁的竞 ...