TryHackMe 靶机「Infinity Pool」通关复盘
来源:dev.to — 2026-09-06
📋 概述
这是一份 TryHackMe 靶机「Infinity Pool」的完整通关复盘:信息收集发现 Gunicorn 托管的「Byte Lotus」酒店站点,robots.txt 泄露 /internal/ 与 /status 两条隐藏路径,其中 /status 暴露的内部工具向 /internal/netcheck POST 一个未经清洗的 host 参数并拼进 shell 执行,构成 OS 命令注入,拿下 web 用户的初始立足点。提权路径环环相扣:通过 /api/config 泄露了未轮换的 FreePBX UCP 默认凭据,浏览器登录后从语音信箱的来电显示字段捞出根进程自动化服务的 Bearer token,最终在 root 运行的 /jobs/export 端点再次命令注入拿到 root flag。文章末尾总结了五类关键漏洞与对应缓解措施。
🔑 核心要点
- 第一层立足点:/status 页面的内部工具把 host 参数未经清洗拼进 f-string 并用 shell=True 执行 ping,标准分号拼接即可达成 OS 命令注入,反弹 shell 需用 --data-urlencode 正确编码 /dev/tcp 里的 & 字符
- 反连 curl 显示 Request timed out 是预期而非失败——反弹 shell 不会回 HTTP 响应,payload 已在后台连接出到监听器
- ss -tulnp 只给出没名字的端口,真正把端口对应到服务与属主的是 ps aux:edge/web 跑 80、watchtower/svc-watch 跑 3000、automation/root 跑 9000
- Watchtower 的 GET /api/config 明文返回 FreePBX UCP 凭据,内部备注明确标注「尚未轮换」;curl 脚本化登录因 UCP 依赖客户端 JS/AJAX 而失败,改走 SSH 端口转发 + 真浏览器秒过
- UCP 语音信箱的来电显示字段里,调用方 ID/名字查找流程把自动化服务的 Bearer token 模板化进了 CID——密钥出现在本应纯人类可读的展示字段,直接暴露了根权限的钥匙
💡 金句
只回环访问并不等于对进程安全——一旦主机上存在任何立足点,所谓「仅内部服务」也可能被利用。
👍 0
👎 0
← 返回 dev.to 首页