针对已退役的 HackTheBox Linux 机器 OneTwoSeven 的完整端到端通关攻略。完整链路:确定性凭据生成 → SFTP chroot 符号链接逃逸 → vim 交换文件恢复 → SSH 端口转发至受防火墙保护的管理面板 → 绕过被注释掉的 Apache 重写规则 → RCE → 利用 CVE-2024-1086(nf_tables UAF)获取 root。
核心亮点:“已禁用”的插件上传并未真正禁用——插件管理器的
switch匹配的是REQUEST_URI,因此可以借助处于活动状态的下载重写规则来触达上传代码路径。而内核利用在提权后故意引发的内核崩溃,迫使你必须采用“设计上即数据外泄”的载荷。
94ab980a4ab2c7c1eb8c7f78334d5a5e42379deee25d3b678a7f0df5c055e888password = md5(REMOTE_ADDR)[:8], username = "ots-" + base64(pw[3:]) → 每个 IP 都会得到自己的 SFTP 账户,而 127.0.0.1 对应的正是管理员的账户。/etc/passwd → 通过 GECOS 字段(127.0.0.1)发现管理员账户。.login.php.swp → 面板凭据 ots-admin / Homesweethome1(使用 john + rockyou 破解 SHA-256)。/bin/false 仍允许 -L 转发 → 可触达受防火墙保护的 60080 管理面板。.htaccess 中上传被“禁用”,但 addon-download.php 的重写规则处于激活状态;插件管理器基于 进行 switch → 可在 中落地一个 PHP shell → 。README.md - this overview
WRITEUP.md - the full walkthrough (recon → user → panel → RCE → root, findings, lessons, timeline)
LICENSE - MIT
注意: 详细攻略(
WRITEUP.md)以西班牙语撰写;本 README 作为英文执行摘要。
nosymlinks 的 SFTP chroot 形同虚设。sudo -l 中的 env_keep 从来都不是摆设——如果代理环境变量被保留,所允许命令的流量就可能被中间人攻击。Axel Feduzka · GitHub @dopaminauta · [email protected]
在已退役的 HackTheBox 机器上进行练习通关。所有攻击均在授权实验环境中执行;目标 IP 已做脱敏处理。
Solve et Coagula — bound by EMET, driven by AHAVA.
REQUEST_URIPOST /addon-download.php?x=/addon-upload.phpaddons/www-admin-data 身份实现 RCECONFIG_NF_TABLES=m,启用用户命名空间 → 使用 musl 静态编译 Notselwyn 的“Flipping Pages” PoC → 获得 root。该 PoC 会故意引发内核崩溃,因此 设计上即数据外泄(modprobe 载荷通过 wget 将 flag 发送到攻击者服务器)成为制胜之举。| 领域 | 技术 |
|---|
| Web 信息收集 | 虚拟主机发现、确定性凭据分析、具备抗 DoS 意识的节奏控制 |
| SFTP / chroot | 符号链接逃逸、跨服务(Apache)解析 |
| 取证 | vim 交换文件恢复(vim -r)、源码恢复 |
| 横向移动 | 使用受限账户进行 SSH 端口转发 |
| Web 利用 | Apache 重写规则绕过、基于 REQUEST_URI 的逻辑滥用、插件上传 → RCE |
| 内核利用 | CVE-2024-1086 (nf_tables UAF)、musl 静态编译、载荷调优(CONFIG_PHYS_MEM) |
| 利用设计中的 OPSEC | 针对会引发崩溃的利用点,采用“崩溃前先外泄”的载荷 |