VulnHub实战靶场Mr-Robot

Vulnhub简介

Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行。每个镜像会有破解的目标,大多是Boot2root,从启动虚机到获取操作系统的root权限和查看flag。网址:https://www.vulnhub.com。

靶场说明

    Mr-Robot是一个难度为中等的Boot2root/CTF挑战,由@sho_luv (Twitter)制作。

描述:

      难度等级:中等

      操作系统类型:Linux

      用户::root, robot, daemon

      flag目录:在用户家目录中

实验目的

      获取三个flag.

实验环境

靶机:Mr-Robot  IP:192.168.1.28

攻击机:Kali Linux  IP:192.168.1.26

实验步骤一

准备阶段

①打开靶机(Mr-Robot)。

 

②打开攻击机(Kali Linux)并确认攻击机ip。

使用命令ifconfig查看攻击机ip为192.168.1.26

 

实验步骤二

主机发现

①输入命令netdiscover尝试发现靶机ip为192.168.1.28。

 

②输入命令nmap -sS -p- 192.168.1.28命令扫描靶机开放端口及服务。

 

如图所示分析可知,靶机关闭了ssh服务,但是开放了80端口和443端口对应的http和https服务,于是猜测可以访问对应ip的网站进行渗透测试。

实验步骤三

前期准备

①访问对应ip地址的web服务并依次尝试其中提供的命令。

 

输入prepare命令发现是一个视频。 

输入fsociety命令发现依然是一个视频。 

输入inform命令发现是一些图片和文字。 

输入question命令发现是一些图片。 

输入wakeup命令发现是视频。 

输入join命令,弹出提示输入邮箱地址。  

②输入命令nikto -h 192.168.1.28对目标ip进行探测。

发现了登录界面/wp-login/可以利用。

③输入命令dirb http://192.168.1.28扫描目标ip存在的目录。 

 

 发现了可能会有用的目录:/readme、/robots.txt、/wp-login等。

④依次访问对应的目录,寻找有用的信息,发现第1个flag、得到爆破用的字典以及发现登录界面等。

l  访问readme目录

 

l  访问robots.txt目录

如图所示,发现了第一个flag以及一个字典文件,访问key-1-of-3.txt目录获得第一个flag。 

访问fsocity.dic目录获得字典文件。内容如下:

 

⑤发现得到的字典文件很大,猜测有重复字符。 

   于是使用命令sort fsocity.dic | uniq > dic.txt将字典文件去重复化并保存为dic.txt文件。去重复化后的字典大小仅有96.7kb。 

l  访问wp-login目录,发现WordPress登录界面。

实验步骤四

进一步探索

①使用Burp Suite,利用刚刚得到的字典,分别对网站登录的用户名和密码进行爆破。

l  开启Firefox浏览器代理127.0.0.1,端口为8080 

l  Burp Suitte捕包后,首先进行repeater测试,看是否可以进行爆破。

l  经多次repeater对比后发现网站响应仅有时间不同,说明可以对进行爆破。

首先使用刚刚去重复化的字典对用户名字段进行爆破。

将得到的响应结果按长度进行排序,得到用户名可能为elliot、Elliot、ELLIOT。

l  用同样的方法、同样的字典对密码字段进行爆破。结果如下图:

 

按长度排序后发现密码可能为ER28-0652。

②使用用户名和密码登录后尝试利用php的反弹shell获取权限。修改php-reverse-shell.php文件中的ip地址和端口,并将修改后的代码替换掉WordPress中editor页面的404.php文件。

l  使用用户名:elliot,密码:ER28-0652登陆。 

l  输入命令:find / -name php-reverse-shell.php尝试寻找可以利用的php反弹shell文件。

 

 

将查找到的php-reverse-shell.php文件,修改其中的ip地址为攻击机ip:192.168.1.26,保持端口为默认8888不变,并将修改后的代码替换掉WordPress中editor页面的404.php文件。

 

点击Upadte File上传文件。 

提示上传成功。 

③在Kali上使用nc监听相应的端口,并在浏览器中访问修改过的404.php,得到权限。

l  输入命令nc -lvvp 8888监听8888端口

 

l  在浏览器中访问修改过的404.php,得到权限。

 

④得到权限后,使用cat /etc/passwd查看靶机中的用户,发现有robot这个用户,进入这个用户的目录。

 

⑤尝试查看robot用户下flag的文件,但是发现没有权限并且是robot的文件。于是查看password.raw-md5文件,并按照提示进行md5解密,得到robot用户的密码。

l  使用ls命令查看当前用户下的所有文件,发现有第二个flag与另一个与密码相关的文件。尝试访问key-2-of-3.txt发现权限不足,于是查看password.raw-md5文件。

 

l  使用ls -lar命令发现这两个文件都是robot用户下的文件,说明要想获得第二个flag需要切换到robot用户。

 

l  将之前得到的md5加密后的密码使用在线解密工具进行解密,得到密码为a-z的字母表。

⑥使用python -c 'import pty'pty.spawn("/bin/bash")'命令打开终端,使用密码登陆到robot用户并获取第2个flag。

  

最后的探索

①利用可执行文件SUID进行Linux提权。使用命令:find / -user root -perm -4000 -print 2>/dev/null 寻找可以利用的命令,发现了nmap命令。

 

②查询资料发现早期版本的Nmap(2.02到5.21)有交互模式,允许用户执行shell命令。于是使用命令nmap -v查看nmap的版本为3.81符合要求。

③使用命令:nmap --interactive,进入交互模式,接着使用命令:!sh成功提权为root用户。

 

④切换到root目录下,拿到最后的flag。

 

原文地址:https://www.cnblogs.com/Jesse-Cavendish/p/13203523.html