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。