用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。
影响范围
1 | SERVER |
漏洞原理
此漏洞是因为 UAC(用户账户控制)机制的设定不严导致的。
默认情况下, Windows 在称为「安全桌面」的单独桌面上显示所有 UAC 提示。提示本身是由名为 consent.exe
的可执行文件生成的,该可执行文件以 NT AUTHORITY\SYSTEM
身份运行并且有 System
的完整性水平。
由于用户可以与此安全桌面的 UI 进行交互,因此有必要对 UI 进行严格限制。否则,低特权用户可能能够通过 UI 操作的路由回路以 SYSTEM 的身份执行操作。甚至看起来无害的单独 UI 功能也可能是导致任意控制的一系列操作的第一步。
另一个需要了解的东西是 OID
,如果在运行一个可执行文件的时候我们触发了 UAC,在点击「展示证书发行者的详细信息」这个链接之后:
我们可以看到证书里的 Issued by(颁发者)
字段,这个字段对应的值就是 OID
。
对比一下cmd的证书
到这一步,也许找不到突破口,但是如果证书对话框定义了一个Microsoft特定对象标识符(OID),值1.3.6.1.4.1.311.2.1.10
。其中WinTrust.h
标头将其定义为SPC_SP_AGENCY_INFO_OBJID
,如果存在,则将在细节标签中显示为SpcSpAgencyInfo
。该OID的语义文献很少。但是,似乎证书对话框会解析此OID的值,如果它找到有效且格式正确的数据,它将使用它来将“常规”选项卡上的“颁发者”字段呈现为超链接。
当涉及证书对话框的UAC版本时,Microsoft没有禁用此超链接,这就给了我们提权的可能。
当 OID
为超链接时,通过点击此链接会触发 consent.exe
以 SYSTEM
权限打开浏览器访问此链接,然后此浏览器就会有 SYSTEM
权限。即使该浏览器是作为SYSTEM
启动的,但是它仍显示在普通桌面而不是安全桌面上。因此,只有在用户退出所有UAC
对话框后,它才变得可见。因此对于攻击者来说,这具有天然的隐藏优势。通过保存该浏览页面,会弹出微软的资源管理器,在资源管理器中邮件打开 cmd.exe
程序,就会继承浏览器的 SYSTEM
权限,由此就完成了由普通用户到 NT AUTHORITY\SYSTEM
用户的提权。
漏洞复现
实验环境 win7 Service1
先用命令查看下这个漏洞有没有打对应的补丁KB4525235、KB4525233
1 | systeminfo>snowming.txt&(for %i in ( KB4525235 KB4525233) do @type micropoor.txt|@find /i "%i"|| @echo %i It seems can be vulunable)&del /f /q /a snowming.txt |
首先查看下权限
这里用到UAC提权专用exe:HHUPD.exe,右键以管理员权限打开并显示详细信息
点击显示有关此发布者的证书的信息,点击颁发者此处的超链接
等待弹出的ie页面加载完成后点击页面这个地方(此时的浏览器以system权限运行)
点击网页另存为
这里的报错不用管
选择位置C:\Windows\System32\cmd.exe
这里就会弹出一个cmd.exe
的对话框,这里发现已经是system权限
参考资料
https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2019-1388