前言
VulnHub 是一个面向信息安全爱好者和专业人士的虚拟机(VM)漏洞测试平台。它提供了一系列特制的漏洞测试虚拟机镜像,供用户通过攻击和漏洞利用的练习来提升自己的安全技能。本次,我们本次测试的是prime1。
一、主机发现和端口扫描
- 查看Vmware中靶机的MAC地址,方便与之后nmap扫描出来的主机的MAC地址进行对比,选择nmap与靶机MAC地址相符的主机,其IP地址即为靶机的IP地址。> 这里我已知目标使用了NAT模式。
- 使用nmap进行网络扫描
nmap -sP 192.168.1.0/24
> -p(ping)> > -O(operation)> > 除了使用Nmap的命令之外,还可以使用命令对目标的IP地址进行扫描。> > >> arp-scan -l >
> //IP地址和MAC地址的映射> > >> netdiscover -i eth0 -r 192.168.1.0/24 >
> //扫描这个网段下当前还存在的网络 - 使用nmap进行端口扫描
nmap -p 1-65535 -A 192.168.1.129
由上图可知,nmap扫描出来22和80两个端口,并且把其他的一些指纹信息例如操作系统类型、Apache版本等都扫描出来了。 - 访问目标
二、目录扫描
- 进行网页目录扫描
dirb http://192.168.1.129
也可以使用参数-X指定扫描的文件 - 然后访问一下目标目录下的secret.txt文件,结果如下图
- 有提示,看来location.txt是一个特殊文件,但直接访问之后没有什么特殊的,这个文件可能是某个参数的值
三、FUZZ和LFI
- 使用wfuzz工具测试一下,找url中可能存在的参数
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.129/index.php?FUZZ
> FUZZ模糊测试,功能:> > > - 找参数> - 目录扫描> - 密码暴力破解> - 找出被过滤的关键字> - 压力测试 - 大多数都一样,使用hw命令过滤一下不一样的条目
- 可以看出这一条和其他的不一样,可以试着加上payload去访问一下,结果如下图所示给出了错误提示,但却也告诉了我们一些信息,那就是file是网页中中存在的一个文件参数,接下来我们就可以利用这一点了。
- 结合之前我们看到的提示,将location.txt作为file的参数值,然后再访问
- 有效果了,让我们试一下secrettier360参数,我试了一下没什么反应,后来我是把index.php改为image.php才有反应,image.php之前有扫描出来,但是没留意,不知道有什么用处,因为它和index.php的界面没什么区别
- 因为这是一个Linux操作系统,其中的敏感文件有/etc/passwd,我们可以试着将其作为参数参给secrettier360,结果如下图找到要登录Linux的提示了。
在Linux中,/etc/passwd中的密码使用x代替,不显示出来,而在/etc/shadow中则是通过MD5加salt加密,是显示出来的。
- 按照提示在url中输入相关参数
- 得到一个密码follow_the_ippsec,不知道是不是登录Linux操作系统的密码,我尝试了一下,结果不是,看来还得从其他方面入手,我之前对目标目录进行了扫描,扫到了一个wordpress的目录
四、WordPress漏洞扫描
- 目标网站使用wordpress搭建的,这是一个CMS,曾经存在文件上传漏洞,我访问了它的wordpress目录,其中有一个用户名和一个登录链接。
- 已知一个用户名,尝试使用之前从password.txt中获得的密码follow_the_ippsec尝试一下是否能够进行登录。
- 结果成功进入后台界面,如下图所示。
- 现在可以尝试上传webshell了,先寻找上传点,我在Appearance的Theme Editor选项里面的secret.php中找到了上传点。
- 使用MSF来反弹shell,方便快捷,在MSF生成一个shell.php,建立监听。
- 将最前面的注释去掉,复制到secret.php中,然后上传。
- 使用MSF建立监听,然后访问secret.php。
在wordpress中,secret.php其实是位于wordpress/wp-content/themes/twentynineteen目录下的,因此我们通过访问该目录下的secret.php即可反弹shell,即访问http://192.168.1.129/wordpress/wp-content/themes/twentynineteen/secret.php。
- 成功拿到shell,此时我们可以尝试一些命令获取目标更多的信息。
五、Linux内核漏洞提权
- 我们已经拿到目标的shell了,但我们还没达到root权限,要拿到root权限就得在目标的操作系统上提权。我在meterpreter中使用了sysinfo命令查看了目标的相关信息。
- 接下来搜索该Linux系统或系统内核是否存在过漏洞。看来存在,Linux内核在4.13.9之前的版本存在漏洞,我们找到45010.c的路径并将其编译为可执行程序。
如果在目标系统中编译的话可能出问题,因为目标操作系统可能没有gcc编译器,不具备C语言程序的编译环境。
- 将编译好的45010.exe上传至目标的/tmp/目录下。
上传到其他文件中可能没有权限,可以上传到目标的/tmp目录。
- 上传成功之后,我查看了一下,/tmp/目录下存在45010的程序,但是没有可执行权限。
- 执行一个shell脚本使其获得可执行权限。
shellcd /tmplschmod +x 45010./45010whoami
在shell中执行./45010时出现了一个错误:./45010: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./45010)换一个旧版本的Kali,例如Kali2021.4也行,安装好之后在重复上述一些列不走之后再执行whoami命令,结果显示root,说明提权成功。
版权归原作者 奇迹行者- 所有, 如有侵权,请联系我们删除。