[译]Windows提权:ahcache.sys/NtApphelpCacheControl

原文地址: https://code.google.com/p/google-security-research/issues/detail?id=118

平台:Windows 8.1 Update 32/64 bit(其他版本未测试)
Windows8更新的系统函数NtApphelpCacheControl(位于ahcache.sys)当新进程创建时允许缓存程序通用数据来达到快速重复使用的目的。普通用户可以查询缓存但是不能添加缓存实体,因为这个操作被限制为管理员权限。这是通过AhcVerifyAdminContext函数检查的。
但是该函数存在漏洞--它不正确检查调用者的伪装token来确定用户是否是管理员。它使用PsReferenceImpersonationToken函数读取调用者的伪装token,然后比较token中的user SID和LocalSystem的SID。它不检查token的伪装级别所以可以从本地系统进程中获得一个token来绕过检查。本PoC使用BITS服务和COM来获得伪装token,但是仍有可能存在其他办法来绕过。
在PoC中,创建一个缓存实体来进行UAC自动提权可执行文件(omputerDefaults.exe)。然后把缓存指向regsvr32的app compat实体,用来强制RedirectExe shim来重载regsvr32.exe。然而,可以使用任何可执行文件,技巧是找到一个合适的预存在的app compat配置。

[url]步骤:
1. 把AppCompatCache.exe和Testdll.dll放到磁盘
2. 确保使用了UAC,当前user是一个split-token admin,UAC设置为默认设置
3. 在命令行中运行AppCompatCache.exe c:\windows\system32\ComputerDefaults.exe testdll.dll
4. 如果成功,那么将会出现一个以管理员权限运行的计算器。否则,重新运行步骤三,有时第一次运行的时候会出现caching/timing问题[/url]

AppCompat介绍: http://technet.microsoft.com/en-us/library/cc728440%28v=ws.10%29.aspx
split-token admin: http://michaelkleef.blogspot.com/2011/09/understanding-whats-in-user-token.html
split-token admin:概要的说,即使你是管理员,你也只能访问部分权限。

猜你喜欢

转载自j4s0nh4ck.iteye.com/blog/2172222