新姿势之获取果壳全站代码和多台机器root权限

  • 内容
  • 相关

漏洞详情

披露状态:

 

2016-05-16: 细节已通知厂商并且等待厂商处理中
2016-05-16: 厂商已查看当前漏洞内容,细节仅向厂商公开
2016-05-21: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

新姿势~
可获取 果壳,mooc,在行等全站代码
并获取机器root权限

详细说明:

0x00 简介

果壳自动化build docker image的系统

code 区域
http://builder.iguokr.com/#/signin



builder.png



通过之后的分析,发现是通过gitlab hook,当代码变更时,自动触发image build过程,通过将代码和运行环境打包到 docker image里,实现自动化和快速部署



0x01 漏洞原因

docker engine daemon api直接暴露公网

code 区域
mask 区域
1.http://**.**.**


还有很多其他ip也开放2375端口,请厂商自查



也就是说,docker能做的所有操作,这里都可以做

比如:运行、删除container,拉取image等等



0x02 漏洞证明

查看当前运行的container

docker 命令行(需要安装docker)

code 区域
mask 区域
*****54.223.50*****

 



或直接访问

code 区域
mask 区域
1.http://**.**.**/containers/json

 



CLI结果

code 区域
mask 区域
*****         CREATED             STATUS         *****
***** 4 days ago Up 4 days *****
***** 4 days ago Up 4 days *****
***** 4 days ago Up 4 days *****
***** 4 days ago Up 4 days *****
***** 4 days ago Up 4 days *****
***** 4 days ago Up 4 days *****
***** 4 days ago Up 4 days *****
*****.s" 4 days ago Up 4 days *****
*****ntrypoint.sh redis" 4 days ago *****

 



已证明,其他不列出

漏洞证明:

0x03 脑洞大开

我们现在能做的只是运行docker的一些命令,比如操作container、image,没法直接控制宿主机

那么怎么才能控制宿主机呢?

先分析下:

docker的运行需要root权限的,即我们有一个以root运行的进程

但docker本身执行命令只能在container内部,与宿主机是隔离的,即使是反弹一个shell,控制的也是container,除非有溢出漏洞,然而我并没有~

那么我们来看一下docker本身能够做什么?

脑洞开了下,想到docker 运行 container的时候,可以将本地文件或目录作为volume挂载到container内,并且在container内部,这些文件和目录是可以修改的。

这里一下就想到了redis + ssh漏洞,非常的像

我们看一下服务器是否开放22端口,bingo,有ssh服务器

code 区域
mask 区域
*****23.50.*****
*****23.50.*****
*****54.223.*****
*****is '*****
*****.1p1 Ubunt*****

 



那么直接把/root/.ssh目录挂载到container内,比如/tmp/.ssh,然后修改/tmp/.ssh/authorized_keys

文件,把自己的public key写进去,然后就可以了登录



0x04 获取机器root权限

这里具体命令就不给了,只给出证明

ifconfig

code 区域
mask 区域
*****1-1-228*****
*****(root) gr*****

 



/home/ubuntu目录下文件

code 区域
mask 区域
*****8:/home/ub*****
***** 18*****
*****tu 163 Sep 24*****
*****ubuntu 4.0K *****
*****untu 4.0K Apr*****
*****tu 4.0K Sep 7*****
***** 77 Apr 8 05:50*****
*****untu 4.0K Dec*****
*****tu 4.0K Nov 12*****
*****ubuntu 4.0K *****
*****untu 4.0K May*****
*****ot 4.0K Dec*****
*****.7K Apr 28 10:20*****
*****tu 472K Dec 17*****
*****tu 1.3K Feb 3*****
*****untu 4.0K Nov*****
*****root 4.0K *****
*****tu 4.0K Mar 8*****
*****22M Mar 2 20:10*****
*****untu 4.0K Mar*****
*****tu 1.2K Feb 11*****
***** 14M Dec 17 03*****
*****tu 4.0K Feb 23*****
*****untu 4.0K May*****
***** 110M Dec 3 09*****
*****untu 243 Nov*****
*****M Jul 31 2015 so*****
*****untu 4.0K Jan*****
*****untu 689 Nov*****

 



docker仓库在内网 docker-registry.guokr.com

code 区域
ping docker-registry.guokr.com
PING ec2-54-222-135-194.cn-north-1.compute.amazonaws.com.cn (172.31.14.62) 56(84) bytes of data.





0x04 获取全站源代码

对当前docker运行的container进行了查看和分析,发现image build的过程会从

code 区域
git.iguokr.com



拉取源代码,这里是用了public key验证,找了找,在代码中发现了私钥和公钥

且git.iguokr.com公网开放

有了密钥,看到builder有一个postgresql数据库,可以公网连接,在代码中找到帐号和密码

连接后发现有git repository列表,这里给出部分

D483D862-AA32-49F9-A89E-6319888940EB.png

 

8F89C4FE-4B74-4F52-83F7-ACD5EF3D78D5.png





里面有果壳,在行,mooc等全站代码,

git clone一份,给出证明

2B3A8380-87DB-4AF5-9620-CDD5C3895CF2.png



0x05 哎~

在机器上装了个nmap,对所在网段的b段扫了下2375端口,扫到了一些只有内网才能访问的2375端口,并且都有ssh服务,都可以拿到root权限,这里就不贴了,和这个类似。

本来想试试能不能撸到线上,结果发现线上环境在另一个网段,试了试还是放弃了

修复方案:

禁止外网访问~

版权声明:转载请注明来源 黑客,绝对是黑客@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2016-05-21 14:40

厂商回复:

 

漏洞Rank:15 (WooYun评价)

最新状态:

暂无


本文标签:

版权声明:若无特殊注明,本文皆为《安三》原创,转载请保留文章出处。『鹦鹉搜索』

百度收录:百度已收录『查看详情』

本文链接:新姿势之获取果壳全站代码和多台机器root权限 - https://www.15qq.cn/wooyun/398.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

允许邮件通知