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.htbhttp://mango.htbhttps://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
- 用户名1:
2.4 凭证验证
- 尝试使用两组凭证登录Web应用
- 确认对应关系:
admin:t9KcS3>!0B#2mango:h3mXK8RhU~f{]f5H
3. SSH服务利用
3.1 SSH登录尝试
- 使用枚举到的凭证尝试SSH登录
- 发现只有
mango用户可以成功登录
3.2 系统用户枚举
- 登录后检查系统存在的用户:
adminmangoroot
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文件
- 及时更新和修补系统组件
-
针对信息泄露:
- 移除不必要的文件和信息
- 配置正确的文件权限
- 使用安全头部和适当的证书配置