XXE Lab是一个难度为中级的XXE漏洞CTF挑战,通过实验学习XXE漏洞的利用方式,获取靶机flag。
1. Vulnhub简介
Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用。其大部分环境是做好的虚拟机镜像文件,需要使用VMware或VirtualBox运行。网址:https://www.vulnhub.com。
2. 靶场说明
XXE Lab是一个难度为初级的XXE漏洞CTF挑战。
3. 建议先学习XXE漏洞基础实验:XML外部实体注入漏洞
通过信息收集获取靶机XXE网站地址,利用协议进行XXE漏洞利用,获取靶机flag。
靶机:XXELab、ip随机
攻击机:kaliLinux + Windows 10、ip随机
任务描述:信息收集。
1. 首先查看kali机器IP地址:
# ifconfig
2. 使用netdiscover扫描本地网络主机:
# netdiscover -r 10.1.1.0/24
-r range:扫描给定范围而不是自动扫描。
扫出两个可疑ip,暂时无法确定哪个才是XXE靶机的IP地址。
3. 使用nmap扫描上述ip:
# nmap -sV -p 1-65535 10.1.1.91-v
-sV:探测端口服务版本;
-p:指定端口;
-v:显示扫描过程。
# nmap -sV -p 1-6553510.1.1.92 -v
可以看到10.1.1.92机器开放了22、80和5355三个端口。
5355:hostmon NOCOL网络操作中心主机监视。
4. 浏览器访问10.1.1.91机器的80端口:
似乎没有什么有用的信息。
5. 浏览器访问10.1.1.92机器的80端口:
发现为Apache默认页面,猜测可能存在隐藏目录。
6. 使用dirb扫描10.1.1.91机器目录:
# dirb http://10.1.1.91
浏览器访问 http://10.1.1.91/latest
还是没有得到什么有用信息,看来靶机地址不是10.1.1.91
7. 使用dirb扫描10.1.1.92机器目录:
# dirb http://10.1.1.92
发现存在robots.txt文件,此文件包含了互联网上的网页信息。
8. 浏览器访问http://10.1.1.92/robots.txt,查看robots.txt文件内容:
发现存在后台管理页面和xxe网站。
9. 访问http://10.1.1.92/xxe/(admin.php 404了)开始漏洞利用:
任务描述:漏洞利用。
1. 既然是XXE靶场,就按照XXE的思路来。利用file协议读取任意文件:
Payload:
在响应处直接显示了读取文件的内容,说明是有回显的XXE。
2. 尝试读取出现404的admin.php:
Payload:
结果被base64加密了,可以放到burpsuite的【Decoder】模块进行解密:
在【Decoder】模块选择【Decode as Base64】进行解密,发现了被MD5加密的密码:
拿去解密可以得出密码是admin@123:
注:此处需要联网进行MD5解密,实验直接给出解密后的结果。
3. 使用用户名:administhebest,密码:admin@123登录之前的xxe网站,出现提示:
4. 可能不是这个网址的用户信息,尝试使用dirb扫描/xxe/目录:
# dirb http://10.1.1.92/xxe/
发现还存在一个/xxe/admin.php文件。
5. 尝试用刚才的信息登录/xxe/admin.php:
出现‘Here is the flag’,点击发现是个跳转:
6. 依然是404,再次利用之前的思路,修改payload中resource后的文件名即可:
7. 继续拿去base64解码:
得到的是一串经过base32编码的内容,继续解码:
注:此处需要联网进行base32解码,实验直接给出解码后的结果。
又是一串base64编码,解码后可以看到flag在/etc/.flag.php文件中:
8. 切换到Windows机器,重新访问http://10.1.1.92/xxe/并用burpsuite抓包,利用file协议读取文件内容:
Payload:
得到一串无特征码的PHP webshell:
9. 将webshell保存到phpStudy的网站根目录下,开启phpStudy,浏览器访问webshell即可得到flag:
来源:oschina
链接:https://my.oschina.net/u/4283892/blog/3307733