前言:

vulnhub里面的一个靶场,涉及到drupal7 cms远程代码执行漏洞(CVE-2018-7600)和脏牛提权。

靶机下载地址:https://mega.nz/#!aG4AAaDB!CBLRRYQsAhTOyPJqyjC0Blr-weMH9QMdYbPfMj0LGeM

0x01信息收集

第一步打开虚拟机要输入用户密码才能登入,这样的话也不知道ip地址;

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

那么我们先要获取它的ip,由于在一个内网,可以使用nmap进行扫描,我虚拟机设置的是NAT模式,那么看看NAT模式的网段

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

是192.168.106.0/24的段,那么使用nmap进行C段扫描

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

明显ip为192.168.106.130,接着全端口扫描一下

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

访问80端口发现一个没用的静态页面,再访问1898端口,出现web页面

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

访问robots.txt

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

发现很多txt和php目录泄露,直接可以读取txt文件

查看源码,任意点一个图片链接

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

又是一个目录泄露,目录下的任意文件读取,但是发现只泄露的这个目录,这下面又全是css,js,png文件,先放在一边吧。

在漏扫和目录扫描之前,我先用谷歌插件wappalyzer知道了这个web是用drupal7 cms写的

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

同时还知道了操作系统,web服务器,后台语言。

在看看刚刚泄露出来的txt文件,发现一个文件里面也爆出了cms的版本,还更具体

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

这么多暗示,怕不是就是利用这个drupal7 cms的漏洞

百度一下drupal7 cms的漏洞,发现是存在一个远程代码执行漏洞的,那么去msf中查一查这个exp,并且利用。

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

0x02 drupal7 cms远程代码执行漏洞(CVE-2018-7600)利用

进入msf,然后search搜索CVE-2018-7600

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

然后一些列的常规操作,先use,再show option,再set,最后run

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

这里设置一下ip和端口就可以了,端口是1898

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

show targets发现有很多版本,不知道选哪一个,先默认吧,直接run

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

直接反弹了shell,发现是www-data权限,这个权限是相当于访客权限,getsystem不行。

如果不熟悉meterpreter命令交互,那么可以在根目录下写入一句话木马,然后,利用菜刀连接。

我们查看网站根目录下面的/sites/default/settings.php文件,看其设置的配置信息

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

我们看到了敏感信息,数据库的用户和密码

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

我们用mysql登录进去查一下这个数据库的user表

先从meterpreter进入shell交互命令,也就是目标机系统的操作命令。

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

但是mysql好像进不去,这个shell是简易版的

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

然后参照别人的方式用python获取标准shell

python -c 'import pty; pty.spawn("/bin/bash")'

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

成功进来了,查看users的用户和密码两个字段。

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

第一个用户就是tiago,密码拿去在线md5一下,解密不了。

最后试来试去,想到了还有个ssh没用到,这会不会是ssh的登录账号和密码,再去看看那个setting.php文件,发现里面就Virgulino一个密码,那么想到用户应该是用的这一个通用密码。

试了试,发现登录上去了,但是权限还不是system的。

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

0x03脏牛提权

查看一下内核版本,发现是ubuntu 16年的

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

在网上去搜索一下,试了很多17年的,但是不行,再看看,发现一个16年内核版本的通杀提权,叫做脏牛提权。

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

去搜索一下这个漏洞,这个提权方法叫做脏牛提权,那么他的提权脚本关键字是dirty。

再kali里面搜索,或者直接用github上面的脚本,然后复制到目标机中。

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

网上搜索得知是这一个cpp的脚本。

在目标机上创建一个40847.cpp脚本,然后将kali里面的脏牛cpp的脚本复制过来。

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

然后进行编译运行:

g++ -Wall -pedantic -O2 -std=c++ -pthread -o  .cpp -lutil

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

执行成功,root用户需要用dirtyCowFun密码登录服务器。

ssh重新连接,用户为root,密码为dirtyCowFun

对vulnhub靶机lampiao的getshell到脏牛提权获取flag-LMLPHP

成功提权获得flag。

05-11 20:18