XXE漏洞

文章目录

      • XML基础
        • 简单介绍
        • 基本语法
      • XXE
        • 简单介绍
        • 攻击危害
        • 防御方案

XML基础

简单介绍

XML 指可扩展标记语言(eXtensible Markup Language),是一种用于标记电子文件使其具有结构性的标记语言,被设计用来传输和存储数据。
XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。目前,XML文件作为配置文件(Spring、Struts2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVG header)应用比较广泛。 XML 的语法规范由 DTD (Document Type Definition)来进行控制。

基本语法

XML 文档在开头有的结构,这种结构被称为 XML prolog ,用于声明XML文档的版本和编码,是可选的,但是必须放在文档开头。
除了可选的开头外,XML 语法主要有以下的特性:

  • 所有 XML 元素都须有关闭标签
  • XML 标签对大小写敏感
  • XML 必须正确地嵌套
  • XML 文档必须有根元素
  • XML 的属性值需要加引号

XXE

简单介绍

XML外部实体注入(XML External Entity) 简称XXE漏洞。当允许引用外部实体时,可通过构造恶意的XML内容,导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等后果。一般的XXE攻击,只有在服务器有回显或者报错的基础上才能使用XXE漏洞来读取服务器端文件,但是也可以通过Blind XXE的方式实现攻击。

攻击危害

  • 文件读取



]>
<data>&file;data>
  • 拒绝服务攻击(DDoS)

<!ENTITY a0 "dos" >
<!ENTITY a1 "&a0;&a0;&a0;&a0;&a0;">
<!ENTITY a2 "&a1;&a1;&a1;&a1;&a1;">
]>
<data>&a2;data>
  • SSRF


]>
<data>4data>
  • XML 包含机制(XInclude)

<data xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="http://0wlsec.com/owl.xml">xi:include>data>
  • 远程命令执行(RCE)


]>
<catalog>
   <core id="test101">
      <description>&xxe;description>
   core>
catalog>
  • 探测内网端口
  • 攻击内网网站
  • 扩展样式表转换语言(XSLT)

防御方案

  • 禁止使用外部实体,例如libxml_disable_entity_loader(true)
  • 过滤用户提交的XML数据

参考:
XXE漏洞攻防
XXE攻击笔记分享

你可能感兴趣的:(#,《Web安全攻防:,渗透测试实战指南》,xml,安全漏洞,安全,信息安全,数据安全)