漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2016-0209291
漏洞标题:新姿势之获取果壳全站代码和多台机器root权限
相关厂商:果壳传媒
漏洞作者: 黑客,绝对是黑客
提交时间:2016-05-16 14:39
修复时间:2016-05-21 14:40
公开时间:2016-05-21 14:40
漏洞类型:敏感信息泄露
危害等级:高
自评Rank:20
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2016-05-16: 细节已通知厂商并且等待厂商处理中
2016-05-21: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
新姿势~
可获取 果壳,mooc,在行等全站代码
并获取机器root权限
详细说明:
0x00 简介
果壳自动化build docker image的系统
通过之后的分析,发现是通过gitlab hook,当代码变更时,自动触发image build过程,通过将代码和运行环境打包到 docker image里,实现自动化和快速部署
0x01 漏洞原因
docker engine daemon api直接暴露公网
也就是说,docker能做的所有操作,这里都可以做
比如:运行、删除container,拉取image等等
0x02 漏洞证明
查看当前运行的container
docker 命令行(需要安装docker)
1.://**.**.**//54.223.50.135:2375 ps
或直接访问
1.http://**.**.**/containers/json
CLI结果
***** 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服务器
*****23.50.*****
*****23.50.*****
*****54.223.*****
*****is '*****
*****.1p1 Ubunt*****
那么直接把/root/.ssh目录挂载到container内,比如/tmp/.ssh,然后修改/tmp/.ssh/authorized_keys
文件,把自己的public key写进去,然后就可以了登录
0x04 获取机器root权限
这里具体命令就不给了,只给出证明
ifconfig
*****1-1-228*****
*****(root) gr*****
/home/ubuntu目录下文件
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
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的过程会从
git.iguokr.com
拉取源代码,这里是用了public key验证,找了找,在代码中发现了私钥和公钥
且git.iguokr.com公网开放
有了密钥,看到builder有一个postgresql数据库,可以公网连接,在代码中找到帐号和密码
连接后发现有git repository列表,这里给出部分
里面有果壳,在行,mooc等全站代码,
git clone一份,给出证明
0x05 哎~
在机器上装了个nmap,对所在网段的b段扫了下2375端口,扫到了一些只有内网才能访问的2375端口,并且都有ssh服务,都可以拿到root权限,这里就不贴了,和这个类似。
本来想试试能不能撸到线上,结果发现线上环境在另一个网段,试了试还是放弃了
修复方案:
禁止外网访问~
版权声明:转载请注明来源 黑客,绝对是黑客@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2016-05-21 14:40
厂商回复:
漏洞Rank:15 (WooYun评价)
最新状态:
暂无