惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
小众软件
小众软件
J
Java Code Geeks
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
L
LangChain Blog
博客园 - 司徒正美
量子位
Y
Y Combinator Blog
C
Check Point Blog
T
Tailwind CSS Blog
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
V
V2EX
阮一峰的网络日志
阮一峰的网络日志

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解
HackTheBox Cap 靶机:从 IDOR 到 PCAP 凭据提取再到 Capabil...
YouDiscovere · 2026-04-23 · via 博客园_首页

file-20260423101950012

一、题目信息

file-20260423102346966

二、信息搜集

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 端口,可以看到一个仪表盘界面:

file-20260423104519705

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

file-20260423104614694

file-20260423104626137

点了没反应,burp 也没有显示出对应的请求,说明这并不是我们需要关注的点。

左侧汉堡菜单,点开后:

file-20260423104805262

这里的几个功能都是可以正常使用的,对于:

  • IP Config
  • Network Status

就是一个指定命令执行的接口,后端将指定命令执行的结果返回给用户。

file-20260423105124773

file-20260423105111164

观察 URL 可以发现:

/ip
/netstat

这虽然不是准确的命令,但是也可能存在隐藏接口去执行隐藏命令,现在还看不出来有什么特别的。

重头戏在:

Security Snapshot (5 Second PCAP + Analysis)

点开后可以看到:

file-20260423105111164

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

file-20260423105745025

并没有有用的信息。

2、IDOR

观察 URL:

http://10.129.35.25/data/2

可能存在 IDOR

IDOR(Insecure Direct Object Reference,不安全的直接对象引用)是一种访问控制漏洞。应用系统通过用户可控的标识符(如数字 ID、文件名、UUID)来定位资源,但没有验证当前用户是否有权访问该资源,导致攻击者通过篡改标识符就能越权查看或操作他人的数据。

而且经过几个的测试后,发现:

file-20260423110224643

Value 的值应该就是代表流量包中是否存在信息。

最终发现:

http://10.129.35.25/data/0

这个页面下载得到的流量包是有内容的:

file-20260423110305414

五、流量分析

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

file-20260423110417486

FTP 是明文协议,这意味着任何能嗅探到流量的中间人,都能直接看到你的凭据和传输的文件,我们在 .pcap 抓包中提取出 nathan:Buck3tH4TF0RM3!,就是 FTP 明文特性的直接后果。

现在有一个直接思路就是用账户密码直接登入 ftp。

但是转念一想,账号密码复用的概率非常大,而且本靶机开放了 22 端口。

因此,最高的优先级是“账密复用 + ssh 尝试登入”。

六、ssh 登入

经过检验,果然存在账密复用的现象,直接获得了用户 nathan 的 shell:

file-20260423110849906

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

file-20260423111306349

接下来的 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.8cap_setuid(允许进程更改自身的 UID),这是可以直接提权的。

去网站(https://gtfobins.org/)查找 payload:

file-20260423111705261

应用:

file-20260423111825891

成功,并且获取了 root flag。