Docker API暴露下的危机

原文:https://mp.weixin.qq.com/s?__biz=MzI2OTMzNjg4OQ==&mid=2247484819&idx=1&sn=95629a511eecff0839fe45bf199a7f5a&chksm=eae0adc5dd9724d34156b8624577644dc4d7b959b30cd437bc107171774f101589e29cb5469b&scene=0&xtrack=1&key=85096ad5b95db4c9155650ea6d85ddc9cc3314ea15b5909bc3361462798eaa61a1d7f2883a22a73449a266b1f986c615792f15f94117aa33f87f29e19ec3038250c6ee1b95f857ade007e0aca6460ff0&ascene=1&uin=MjY5MDA0ODIwMA%3D%3D&devicetype=Windows+10&version=62060833&lang=zh_CN&pass_ticket=msH5gI3dIdgh7emh0wwegnUJKjzMAyUZQwt7XyPyEi4m9M8u9%2FaheCuqT%2B30r2vr


0x01:简介

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

    当您在系统上安装 docker 时,它将暴露位于端口2375上的本地主机上的 API。这个 API 可以用来与 docker 引擎交互,docker 引擎基本上允许您做任何您想要的未经身份验证的事情。

在这种情况下,没有一个外部方能够访问您的docker API,因为它没有向世界公开。但是,在某些情况下,可以更改该API,以便外部资源可以访问它。如果做得不恰当,那么 docker API 将向世界公开

0x02:查找

0x03:验证  

   1、 在 CLI 中,您可以执行以下命令来获得当前正在运行的容器列表:

docker-H <host>:<port> ps

2、取一个暴露的IP地址进行验证

显出了对方服务器当前的进程

3、利用服务获取shell

通过运行以下命令,我们可以轻松地在这个容器上弹出一个 shell:

Docker-H <host><port> exec-it <容器名称>/bin/bash

root权限到手

0x04:预防

    绝大多数程序猿使用 docker 容器来部署代码。在这个过程中,他们可能会向公众公开他们的 docker API,这可能意味着大麻烦。

    攻击者可以轻松劫持他们的基础设施来部署自己的容器,甚至更糟的是,他们可以获得对容器的root访问权。

    限制端口的访问权限,杜绝不法分子的非法利用。

posted @ 2019-09-30 13:49  mrhonest  阅读(384)  评论(0)    收藏  举报