Agent Skills
返回列表
🔒

XXE外部实体注入

IT 运维与安全 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 安装 @user_3c6cb52e/xxe-lr-dhr4。

技能介绍

要解决的问题

XXE(XML External Entity Injection)是一种长期存在却容易被低估的注入漏洞。当应用使用支持外部实体的 XML 解析器处理用户输入时,攻击者可通过特制的 XML 文档触发多种危害:读取服务器本地文件、发起 SSRF 探测内网、甚至造成拒绝服务。

在真实测试中,XXE 的难点在于入口分散、形态多变。它可能藏在 SOAP 请求的 envelope 里,也可能通过 REST 接口的 JSON 转 XML 逻辑触发,甚至藏在用户上传的 SVG、DOCX 文件中,在服务端二次解析时才生效。盲注型 XXE 更是没有直接回显,只能通过带外通道间接确认,对测试者的系统性和耐心要求很高。

核心能力与工作方式

该技能将 XXE 测试拆成一份结构化清单,按照攻击面由直接到间接的顺序推进,并把每一类变体的关键判断点单独列出:

  • 经典 XXE:实体定义直接引用外部资源,观察响应中是否回显文件内容或外部 URL 内容
  • 盲 XXE(带外):利用 DNS 或 HTTP 外连,配合 <!ENTITY % remote SYSTEM "http://..."> 等语法做间接确认
  • 文件上传型 XXE:针对 SVG、DOCX 等会触发 XML 解析的文件类型,检查上传后的服务端处理
  • SOAP/REST 中的 XXE:在 API 协议层定位 XML 解析入口
  • 报错型 XXE:利用解析错误回显文件内容
  • XInclude 攻击:在无法直接注入实体时,通过 xi:include 元素触发外部引用
  • 过滤器绕过:当 DOCTYPE、ENTITY 等关键字被过滤时,尝试编码、参数实体嵌套等替代写法

使用时应先按清单逐项确认适用性,再根据当前目标的上下文(解析器类型、输入格式、输出方式)选择下一步动作,并记录已完成项,避免重复探测。

适用边界与注意点

  • 仅用于授权范围内的 Web 应用安全测试、漏洞赏金和教学研究
  • 清单不保证覆盖所有私有解析器的边角行为,遇到异常应结合具体环境深入分析
  • 盲注测试依赖外部监听通道,需自行准备带外服务器
  • 过滤绕过部分给出的是常见思路,实际能否成功取决于目标的过滤规则

使用场景

  • 渗透测试中需验证REST接口的XML解析是否支持外部实体引用
  • 代码审计时需确认SOAP服务对DOCTYPE和实体的处理方式
  • 测试用户上传的SVG在服务端解析时是否可读取本地文件
  • 漏洞赏金中需用带外DNS确认盲注XXE是否存在

适合人员

  • Web渗透测试工程师,需要在授权范围内系统排查XXE注入点
  • 漏洞赏金猎人,希望通过带外与报错手法确认盲注XXE
  • 后端开发工程师,需要在上线前验证XML解析器的安全配置
  • 安全研究员,需要梳理SOAP与REST接口中的外部实体处理逻辑