IIS 提权修复

土豆提权是一个老生常谈的话题,近些年也衍生出了很多新的土豆提权方法,各种攻击方法层出不穷。但微软却并不认为这是漏洞,因此也一直没有修复。这里我给出两种修复的方法。mssql 也同理。
我们知道出现这个提权漏洞的原因是因为 IIS 服务有 seimpersonateprivilege 这个模拟特权,那我们把这个 IIS 服务用户的该特权删掉即可。

介绍一下 IIS 的权限配置。
IIS_IUSRS组是用于管理IIS应用程序池权限的用户组。IIS_IUSRS组的主要用途是为IIS应用程序池(Application Pools)中运行的应用程序提供必要的权限。当在IIS中创建一个新的应用程序池时,该应用程序池的身份标识(Identity)会自动被添加到IIS_IUSRS用户组中。
所以有了 2 种限制权限方法,分别针对用户组与应用程序池的身份标识。

1. 删除模拟特权

删除 IIS_IUSRS 组的特权即可
image-20230924171421507
将 IIS_IUSRS 组的模拟特权删除,然后重启机器后重启 IIS 服务即可。
自动化方案

1
2
3
4
5
$secpolcfg = "C:\Windows\Temp\secpol.cfg"
secedit /export /cfg $secpolcfg
(Get-Content $secpolcfg) -replace "SeImpersonatePrivilege = .*$", "SeImpersonatePrivilege = *S-1-5-32-544,*S-1-5-6" | Out-File $secpolcfg
secedit /configure /db c:\windows\security\local.sdb /cfg $secpolcfg /areas user_rights
rm -force $secpolcfg -confirm:$false

2. 修改默认应用程序池的身份标识

https://learn.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities
默认网站的应用程序池的标识是 ApplicationPoolIdentity ,所以很多情况下攻击者在拿到 webshell 的情况下的权限是 DefaultAppPool/ApplicationPoolIdentity ,这个用户是有模拟特权的。
image-20230924171440756

可以新建一个普通用户来替换该用户。
image-20230924171452221

image-20230924171503121
这时拿到的 webshell 权限即为 DefaultAppPool/test 。是默认普通用户组的权限。