hackthebox之mango靶场练习
字数 1622 2025-08-11 08:36:20

HackTheBox Mango靶场渗透测试教学文档

1. 靶场信息收集

1.1 初始扫描

  • 使用nmap进行端口扫描,发现开放的服务
  • mango.htb添加到本地hosts文件
  • 访问80和443端口进行初步侦察

1.2 子域名发现

  • 通过查看浏览器证书信息发现另一个子域名:staging-order.mango.htb
  • 访问该子域名进行进一步侦察

1.3 目录扫描

  • 对以下URL进行目录扫描:
    • http://staging-order.mango.htb
    • http://mango.htb
    • https://mango.htb
  • 关键发现:在http://staging-order.mango.htb/vendor/composer/LICENSE中发现该站点使用MongoDB数据库

2. NoSQL注入漏洞利用

2.1 NoSQL注入原理

  • MongoDB等NoSQL数据库存在特殊的注入漏洞
  • 与传统SQL注入不同,但同样危险
  • 可通过在username或password字段后添加逻辑运算符进行枚举

2.2 漏洞验证

  • 初步尝试确认漏洞存在
  • 使用逻辑运算符测试注入点有效性

2.3 用户名和密码枚举

  • 使用GitHub上的专用脚本进行枚举:
    • 脚本链接:enumeration_username-password
  • 枚举结果:
    • 用户名1:mango,密码:h3mXK8RhU~f{]f5H
    • 用户名2:admin,密码:t9KcS3>!0B#2

2.4 凭证验证

  • 尝试使用两组凭证登录Web应用
  • 确认对应关系:
    • admin:t9KcS3>!0B#2
    • mango:h3mXK8RhU~f{]f5H

3. SSH服务利用

3.1 SSH登录尝试

  • 使用枚举到的凭证尝试SSH登录
  • 发现只有mango用户可以成功登录

3.2 系统用户枚举

  • 登录后检查系统存在的用户:
    • admin
    • mango
    • root

3.3 横向移动

  • 尝试切换到admin用户目录读取flag但权限不足
  • 使用su命令切换到admin账户:
    • 命令:su admin
    • 使用密码:t9KcS3>!0B#2
  • 成功获取第一个flag

4. 权限提升

4.1 提权途径探索

  • 检查sudo权限:sudo -l(不可用)
  • 查找具有SUID属性的文件:
    • 命令:find / -perm -4000 2>/dev/null
  • 发现特殊文件:jjs

4.2 jjs利用分析

  • jjs是调用Nashorn引擎的Java工具
  • 具有SUID属性时,可以以root权限执行Java命令
  • 可利用功能:
    • 文件读写
    • 文件上传下载
    • 反弹shell

4.3 实际利用方法

  1. 通过jjs写入SSH公钥到root的authorized_keys文件
  2. 或者直接读取敏感文件
  3. 最终成功获取root权限并读取flag

5. 关键知识点总结

  1. NoSQL注入

    • MongoDB等NoSQL数据库特有的注入方式
    • 可通过逻辑运算符进行用户名和密码枚举
    • 需要特殊工具或脚本进行有效利用
  2. 凭证重用

    • Web应用的凭证可能在其他服务(如SSH)中重复使用
    • 枚举到的凭证应尝试在所有开放服务中使用
  3. SUID提权

    • 查找具有SUID位的非常见二进制文件
    • jjs的特殊利用方式:
      • 可以执行任意Java代码
      • 具有root权限时可进行系统级操作
  4. 信息收集的重要性

    • 证书信息可能泄露子域名
    • 文件泄露可能暴露后端技术栈
    • 全面扫描和细致分析是关键

6. 防御建议

  1. 针对NoSQL注入

    • 对用户输入进行严格验证和过滤
    • 使用参数化查询
    • 实施最小权限原则
  2. 针对凭证安全

    • 不同服务使用不同凭证
    • 实施强密码策略
    • 定期更换密码
  3. 针对权限管理

    • 谨慎设置SUID权限
    • 定期审计系统上的SUID/SGID文件
    • 及时更新和修补系统组件
  4. 针对信息泄露

    • 移除不必要的文件和信息
    • 配置正确的文件权限
    • 使用安全头部和适当的证书配置
HackTheBox Mango靶场渗透测试教学文档 1. 靶场信息收集 1.1 初始扫描 使用nmap进行端口扫描,发现开放的服务 将 mango.htb 添加到本地hosts文件 访问80和443端口进行初步侦察 1.2 子域名发现 通过查看浏览器证书信息发现另一个子域名: staging-order.mango.htb 访问该子域名进行进一步侦察 1.3 目录扫描 对以下URL进行目录扫描: http://staging-order.mango.htb http://mango.htb https://mango.htb 关键发现:在 http://staging-order.mango.htb/vendor/composer/LICENSE 中发现该站点使用MongoDB数据库 2. NoSQL注入漏洞利用 2.1 NoSQL注入原理 MongoDB等NoSQL数据库存在特殊的注入漏洞 与传统SQL注入不同,但同样危险 可通过在username或password字段后添加逻辑运算符进行枚举 2.2 漏洞验证 初步尝试确认漏洞存在 使用逻辑运算符测试注入点有效性 2.3 用户名和密码枚举 使用GitHub上的专用脚本进行枚举: 脚本链接: enumeration_username-password 枚举结果: 用户名1: mango ,密码: h3mXK8RhU~f{]f5H 用户名2: admin ,密码: t9KcS3>!0B#2 2.4 凭证验证 尝试使用两组凭证登录Web应用 确认对应关系: admin:t9KcS3>!0B#2 mango:h3mXK8RhU~f{]f5H 3. SSH服务利用 3.1 SSH登录尝试 使用枚举到的凭证尝试SSH登录 发现只有 mango 用户可以成功登录 3.2 系统用户枚举 登录后检查系统存在的用户: admin mango root 3.3 横向移动 尝试切换到admin用户目录读取flag但权限不足 使用 su 命令切换到admin账户: 命令: su admin 使用密码: t9KcS3>!0B#2 成功获取第一个flag 4. 权限提升 4.1 提权途径探索 检查sudo权限: sudo -l (不可用) 查找具有SUID属性的文件: 命令: find / -perm -4000 2>/dev/null 发现特殊文件: jjs 4.2 jjs利用分析 jjs 是调用Nashorn引擎的Java工具 具有SUID属性时,可以以root权限执行Java命令 可利用功能: 文件读写 文件上传下载 反弹shell 4.3 实际利用方法 通过jjs写入SSH公钥到root的authorized_ keys文件 或者直接读取敏感文件 最终成功获取root权限并读取flag 5. 关键知识点总结 NoSQL注入 : MongoDB等NoSQL数据库特有的注入方式 可通过逻辑运算符进行用户名和密码枚举 需要特殊工具或脚本进行有效利用 凭证重用 : Web应用的凭证可能在其他服务(如SSH)中重复使用 枚举到的凭证应尝试在所有开放服务中使用 SUID提权 : 查找具有SUID位的非常见二进制文件 jjs 的特殊利用方式: 可以执行任意Java代码 具有root权限时可进行系统级操作 信息收集的重要性 : 证书信息可能泄露子域名 文件泄露可能暴露后端技术栈 全面扫描和细致分析是关键 6. 防御建议 针对NoSQL注入 : 对用户输入进行严格验证和过滤 使用参数化查询 实施最小权限原则 针对凭证安全 : 不同服务使用不同凭证 实施强密码策略 定期更换密码 针对权限管理 : 谨慎设置SUID权限 定期审计系统上的SUID/SGID文件 及时更新和修补系统组件 针对信息泄露 : 移除不必要的文件和信息 配置正确的文件权限 使用安全头部和适当的证书配置