Vulnhub|Lampiao Getshell到脏牛提权

前言

vulnhub中的一个靶场,使用drupal cms,涉及CVE-2018-7600RCE和脏牛提权。
靶机下载地址:https://mega.nz/#!aG4AAaDB!CBLRRYQsAhTOyPJqyjC0Blr-weMH9QMdYbPfMj0LGeM

下载完后vm读取
虚拟网络编辑器选择物理机的网卡
虚拟机网卡选择桥接
1

然后开启虚拟机
1

0x01信息收集

主机发现

使用nmap局域网探测

1
nmap -sP 192.168.43.0/24

2
其中192.168.43.38是我物理机,192.168.43.174是我手机
锁定目标190

扫描全端口

1
nmap -p 1-65535 --open 192.168.43.190

3
探测到22,80,1898三个端口

一般而言,爆破ssh会在目标服务器产生大量日志,不是明智的选择。虽然是靶机,但是不到无计可施那一步我也不愿去爆破ssh。
考虑从web入手

目录扫描

80是一个没有意义的页面
访问1898
4
是一个登陆页面,并且还得知网站cms是Drupal。

目录扫描工具有很多,这里用github上的开源项目dirsearch扫一下目录

1
python dirsearch.py -u http://192.168.43.190:1898/ -e php

5

有install.php
能否覆盖安装?
操作发现没有权限
6

Includes是一个目录遍历
但是只能遍历当前目录
翻了翻database,没什么有用的信息
7

Changelog一般是更新日志
在里边发现drupal具体版本
8

0x02漏洞利用

获取webshell

其他目录没有发现有用的信息
随即去搜了一下这个cms的洞,发现历史有rce漏洞
在kali中搜索
9
还不少,挑几个比较新的试试

先试一下2019年的
10
show options填写好参数后 run
11
发现不存在这个漏洞

返回试另一个2018年的
12
参数需要设置目标IP和端口,target用默认的先run一下
13
得到shell

发现只有web权限,看来有可能需要提权
14
翻一下目录发现有一张图
15
下载到本地看一下
16
发现是一张二维码
17
扫描显示Try harger! Muahuahuahua,没什么用。

继续翻,不过msf的shell不是交互shell,使用起来不是很方便
确认目标机有python后
我执行shell进入命令行使用python的pty模块创建一个标准终端

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

18
找配置文件,中间绕了很多弯路,但最终还是找到了 settings.php
19
20
得到数据库账号密码

开始操作
21
翻drupal库的表
22
其中有users表

查看其中内容
23
有tiago用户,但是密码没有解出来

一般密码都有可能通用,既然数据库密码有了,那么很有可能这个也是用户tiago的ssh密码

获取普通用户权限

尝试使用账号tiago密码Virgulino登录
24
成功登录

但是权限不够
25

0x03提权

1、sudo误配
既然已经拿到了低权限账号的密码
那么我首先尝试sudo误配提权
它的成功率非常高,不仅对系统完全无损,并且不会像内核提权那样可能导致系统挂起。
利用方法为:查看home​/用户目录下是否有.sudo_as_admin_successful文件,若有则可以输入当前低权账号的密码直接 sudo su 切换为 root 用户。

切换到/home/tiago目录下
25
没有此文件
没关系,尝试其他提权手法。

查看目标机内核版本

1
uname -a

26
比较老了,先看一下能利用的提权exp

使用msf传linux-exploit-suggester-2到靶机执行
27
但是此时并没有执行权限
赋权

1
chmod 777 linux-exploit-suggester-2.pl

28
执行
28
看了一下最后一个链接涵盖此内核版本
29

2、CVE-2017-16995
选择CVE-2017-16995
下载https://github.com/iBearcat/CVE-2017-16995

上传、赋权、执行
30
一顿操作,最后失败。貌似脚本问题。

3、脏牛提权
从linux-exploit-suggester-2的执行结果中看到提权漏洞涵盖脏牛
尝试脏牛提权
kali自带脏牛exp,使用searchsploit dirty搜索
31
上传.cpp到目标机编辑

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

32
ssh端成功执行
33
得到root密码dirtyCowFun
ssh切换root重新登录
34
得到flag。