欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XXE漏洞

程序员文章站 2022-07-15 15:34:58
...

XXE(xml external entity injection)

一、xxe漏洞

xml外部实体注入漏洞,发生在应用程序解析xml输入时,没有禁止外部实体的加载、导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。是XML注入的一种,普通的XML注入利用面比较狭窄,如果有的话也是逻辑类漏洞。XXE扩大了攻击面。

xxe是一种针对xml终端的实施攻击,想要实施这种攻击需要在xml的payload的包含外部实体声明,且服务器本身允许实体扩展,这样就能读取web服务器文件系统,通过unc路径访问远程文件,或者http/https连接主机


二、XML

XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
XXE漏洞


三、DTD

Document type definition 文档类型定义
<! ELEMENT 元素名 类型>
<! ELEMENT 班级 (学生+)>

DTD文件一般和XML文件配合使用,主要是为了约束XML文件
XXE漏洞


四、例子

更详细的例子在这里

Payload:读取win.ini文件

<?xml version='1.0' encoding='UTF-8'?>
 <!DOCTYPE a [<!ENTITY b SYSTEM 'file:///c:/windows/win.ini'>]>
<students>
     <student>
     <w>&b;</w>
        <name>wanghao</name>
        <age>20</age>
     </student>
</students>

XXE漏洞
请求包使用post方法
XXE漏洞
XXE漏洞


五、防御

  1. 使用开发语言提供的禁用外部实体的方法
    (php:libxml_disable_entity_loader(true);)
  2. 过滤用户提交的xml数据
    (system和public)
相关标签: Web攻击