web渗透XML/XXE漏洞

发布于:2025-07-28 ⋅ 阅读:(16) ⋅ 点赞:(0)

 

 

 

 web渗透XML/XXE漏洞

1)XML/XXE漏洞

黑盒测试方法

 

查看数据传输格式:若请求中包含XML格式数据,或Content-Type为application/xmltext/xml等,可直接构造恶意XMLpayload测试

尝试格式转换:即使Content-Type为其他类型(如application/json),也可尝试将请求体改为XML格式提交,部分服务器会兼容解析

关注特殊文件处理:文件上传(如SVG图片,其本质为XML格式)、Excel文件(旧版.xls可能包含XML内容)等功能可能存在隐藏XXE

核心测试目标:主要用于读取本地文件(如/etc/passwdC:\Windows\system32\drivers\etc\hosts),也可探测内网服务

 

漏洞类型区分

有回显XXE:注入的恶意XML会将读取到的内容直接返回在响应中,可直接获取信息

无回显XXE(盲XXE):需结合外带数据通道(如DNSlog、HTTP日志)判断是否触发,通过构造外部实体引用将数据发送到攻击者控制的服务器

 

白盒代码审计

功能定位:重点审计数据导入(如XML文件上传解析)、配置文件读取、API数据交互等涉及XML解析的功能

关键函数检查:不同语言对应的危险函数(如Java的DocumentBuilder、Python的lxml.etree、PHP的simplexml_load_string等),若未禁用外部实体则可能存在漏洞

伪协议利用审计:查看是否过滤file://php://jar://等伪协议,若过滤不严格可尝试编码绕过(如URL编码、UTF-8编码)

 

防御修复方案

基础防御:禁用外部实体解析(如PHP设置libxml_disable_entity_loader(true),Java设置DocumentBuilderFactory.setFeature禁用外部DTD)

输入过滤:严格校验XML内容,过滤<!DOCTYPE<!ENTITY等实体声明关键字

协议限制:禁止XML解析器使用filegopher等危险协议,限制仅允许必要协议(如httphttps)

 

2XXE检查方法

功能点测试:重点关注涉及XML解析的功能,如:

 

数据导入导出(如XML格式配置文件导入、文档转换)

接口交互(采用XML格式的API通信,如SOAP协议接口)

文件上传(支持SVG、XML等格式的文件上传并解析)

在线编辑工具(如在线XML编辑器、代码格式化工具)

 

响应分析:观察服务器返回内容,判断是否存在实体注入成功的特征,如:

 

直接返回本地文件内容(有回显情况)

响应中包含外部实体引用的错误信息(如“无法解析实体”“连接超时”)

响应时间异常(访问内网端口时,开放端口可能响应更快,关闭端口可能超时)

 

特殊场景测试:

 

多阶段注入:先通过基础实体引入外部DTD,再从外部DTD加载恶意内容(绕过部分过滤)

编码绕过:对XMLpayload进行Base64、UTF-16等编码,测试服务器是否解码后解析

嵌套实体:利用实体嵌套规避简单关键字过滤(如<!ENTITYa"<!ENTITYb'test'>">)

 

3)XXE工具

XXEinjector:专门针对XXE的自动化测试工具,支持有回显/无回显场景,可自动尝试读取文件、探测内网服务

XMLLint:本地测试XML解析器是否存在漏洞,验证payload有效性(如xmllint--noentmalicious.xml)

DNSlog平台:用于检测盲XXE,通过构造引用攻击者DNS服务器的实体,查看是否有DNS请求记录(如ceye.io、dnslog.cn)

 

4)靶场

Pikachu靶场,OWASPWebGoat,CTFShow


网站公告

今日签到

点亮在社区的每一天
去签到