Docker攻击树
Docker渗透案例
Docker remote api漏洞利用条件:
1.Docker remote api无认证且对外开放
2.使用root用户启动docker
3.允许对宿主任意磁盘/目录进行读写 利用方法: 启动一个容器,挂载宿主机的/root/目录,之后将攻击者的ssh公钥 ~/.ssh/id_rsa.pub的内容写到入宿主机的/root/.ssh/authorized_keys文件中,之 后就可以用root账户直接登录了 启动一个容器,挂载宿主机的/etc/目录,之后将反弹shell的脚本写入到 /etc/crontab中,攻击者会得到一个反弹的shell。
第2种利用方法也可以挂载 /var/spool/cron/目录,将反弹shell的脚本写入到/var/spool/cron/root(centos 系统)或/var/spool/cron/crontabs/root(ubuntu系统)
kubernets api未授权漏洞导致node宿主沦陷:
{ "paths": [ "/api", "/api/v1", "/apis", "/apis/extensions", "/apis/extensions/v1beta1", "/healthz", "/healthz/ping", "/logs/", "/metrics", "/resetMetrics", "/swagger-ui/", "/swaggerapi/", "/ui/", "/version" ] }
获得所有节点 > kubectl -s http://1.2.3.4:8080/ get nodes // 获得所有容器 > kubectl -s http://1.2.3.4:8080/ get pods -all-namespaces=true // 在 myapp 容器获得一个交互式 shell > kubectl -s http://1.2.3.4:8080/ -namespace=default exec -it myapp bash 如果可以控制容器的运行,我们也可以尝试获取 宿主机(即 nodes)的权限。 参考 Docker Remote API 未授权访问漏洞利用,流程大体为 创建新的容器 -> 挂载宿主机目录 -> 写 /etc/crontab 定时任务反弹 shell。