首页 > 基础资料 博客日记
HackTheBox Cap 靶机:从 IDOR 到 PCAP 凭据提取再到 Capabilities 提权
2026-04-23 11:30:09基础资料围观1次

一、题目信息

二、信息搜集
TCP 全端口扫描 + 指纹识别 + 操作系统识别:
sudo rustscan -a 10.129.35.25 -r 1-65535 -- -sV -O -Pn -n
输出(关键部分):
PORT STATE SERVICE REASON VERSION
21/tcp open ftp syn-ack ttl 63 vsftpd 3.0.3
22/tcp open ssh syn-ack ttl 63 OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
80/tcp open http syn-ack ttl 63 Gunicorn
- 目标 OS:Ubuntu
- 80 指纹:Gunicorn,这是 Python 的 WSGI HTTP 服务器,通常作为 Web 应用与反向代理(如 Nginx)之间的中间层运行(但是在本题中是直接作为后端服务器存在)
- 21 端口可以尝试 ftp 匿名登入
补一波 UDP 高价值(top 20)端口扫描 + 指纹识别:
sudo nmap -sU -sV -Pn -n 10.129.35.25 -vvv --top-ports 20
输出:
PORT STATE SERVICE REASON VERSION
53/udp open|filtered domain no-response
67/udp closed dhcps port-unreach ttl 63
68/udp open|filtered dhcpc no-response
69/udp closed tftp port-unreach ttl 63
123/udp closed ntp port-unreach ttl 63
135/udp open|filtered msrpc no-response
137/udp closed netbios-ns port-unreach ttl 63
138/udp closed netbios-dgm port-unreach ttl 63
139/udp closed netbios-ssn port-unreach ttl 63
161/udp closed snmp port-unreach ttl 63
162/udp closed snmptrap port-unreach ttl 63
445/udp closed microsoft-ds port-unreach ttl 63
500/udp closed isakmp port-unreach ttl 63
514/udp closed syslog port-unreach ttl 63
520/udp closed route port-unreach ttl 63
631/udp closed ipp port-unreach ttl 63
1434/udp closed ms-sql-m port-unreach ttl 63
1900/udp closed upnp port-unreach ttl 63
4500/udp closed nat-t-ike port-unreach ttl 63
49152/udp closed unknown port-unreach ttl 63
目前来看,UDP 这块并没有高价值的信息,优先考虑打 TCP 端口,如果 TCP 那边没有思路,可以回到 UDP 端口用专门的工具进行验证。
三、验证 FTP 匿名登入
尝试:
- 用户名:anonymous
- 密码:空,直接回车
ftp anonymous@10.129.35.25
Connected to 10.129.35.25.
220 (vsFTPd 3.0.3)
331 Please specify the password.
Password:
530 Login incorrect.
ftp: Login failed
ftp> quit
221 Goodbye.
失败了,服务器应该开启了禁止匿名登入。
再次验证,这次将密码输入成合法邮箱格式,但是依旧失败了。
极少数非标准场景,密码可能会要求“邮箱格式”。
将目标转移到 80 端口。
四、80 端口突破
1、功能一览
浏览器访问 80 端口,可以看到一个仪表盘界面:

用户栏和搜索功能是没有作用的:


点了没反应,burp 也没有显示出对应的请求,说明这并不是我们需要关注的点。
左侧汉堡菜单,点开后:

这里的几个功能都是可以正常使用的,对于:
- IP Config
- Network Status
就是一个指定命令执行的接口,后端将指定命令执行的结果返回给用户。


观察 URL 可以发现:
/ip
/netstat
这虽然不是准确的命令,但是也可能存在隐藏接口去执行隐藏命令,现在还看不出来有什么特别的。
重头戏在:
Security Snapshot (5 Second PCAP + Analysis)
点开后可以看到:

下面有个下载按钮,点击下载后,得到一个流量包,用 wireshark 打开:

并没有有用的信息。
2、IDOR
观察 URL:
http://10.129.35.25/data/2
可能存在 IDOR
IDOR(Insecure Direct Object Reference,不安全的直接对象引用)是一种访问控制漏洞。应用系统通过用户可控的标识符(如数字 ID、文件名、UUID)来定位资源,但没有验证当前用户是否有权访问该资源,导致攻击者通过篡改标识符就能越权查看或操作他人的数据。
而且经过几个的测试后,发现:

Value 的值应该就是代表流量包中是否存在信息。
最终发现:
http://10.129.35.25/data/0
这个页面下载得到的流量包是有内容的:

五、流量分析
流量不多,简单查看后,不难发现登入 ftp 的明文用户名和密码就在里面:

FTP 是明文协议,这意味着任何能嗅探到流量的中间人,都能直接看到你的凭据和传输的文件,我们在
.pcap抓包中提取出nathan:Buck3tH4TF0RM3!,就是 FTP 明文特性的直接后果。
现在有一个直接思路就是用账户密码直接登入 ftp。
但是转念一想,账号密码复用的概率非常大,而且本靶机开放了 22 端口。
因此,最高的优先级是“账密复用 + ssh 尝试登入”。
六、ssh 登入
经过检验,果然存在账密复用的现象,直接获得了用户 nathan 的 shell:

在家目录下有 user.txt 文件,查看其中的内容,得到的就是 user flag:

接下来的 root flag 就需要提权获得了。
七、提权
本题的题名为 Cap,很可能提示的就是 Capabilities 提权思路。
查找设置了 Capabilities 的文件:
getcap -r / 2>/dev/null
输出:
nathan@cap:~$ getcap -r / 2>/dev/null
/usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
/usr/bin/ping = cap_net_raw+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
发现 Python3.8 有 cap_setuid(允许进程更改自身的 UID),这是可以直接提权的。
去网站(https://gtfobins.org/)查找 payload:

应用:

成功,并且获取了 root flag。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 我为何选择私有化客服系统作为独立开发的方向
- SpringAI入门指南
- 多租户系统框架的界面分析设计
- RAG 是什么?16 种 RAG 方案一次讲清!AI 应用开发必学 | 万字干货
- 使用 Java 提取 HTML 文件中的纯文本内容
- Python批量图片拼接脚本:支持行列布局、最后一行居中、自然排序
- HackTheBox Cap 靶机:从 IDOR 到 PCAP 凭据提取再到 Capabilities 提权
- AI开发-python-LangGraph框架(3-31-LangGraph 「合并式状态管理」的原理与实践)
- SeaTunnel + AI:一句“我要做什么”,能不能直接变成一份能跑的配置?
- keycloak~实现OAuth 2.0 Token Exchange

