三十六、VulnHub渗透测试实战靶场XXE Lab

落花浮王杯 提交于 2020-12-06 04:56:19
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:

      

      

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!