神刀安全网

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

漏洞详情

披露状态:

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

简要描述:

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

详细说明:

0x00 简介

果壳自动化build docker image的系统

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

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

通过之后的分析,发现是通过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 区域
1.://**.**.**//54.223.50.135:2375 ps

或直接访问

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 区域
1.://**.**.**/home/ubuntu
***** 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列表,这里给出部分

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

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

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

git clone一份,给出证明

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

0x05 哎~

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

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

修复方案:

禁止外网访问~

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

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 漏洞标题: 新姿势之获取果壳全站代码和多台机器root权限

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址