当前位置:安全客 >> 资讯详情

shodan扫描结果:3万个MongoDB可以无密码访问 大概包含595Tb数据

2015-07-20 12:14:32 阅读:0次 收藏 来源: 安全客

http://p5.qhimg.com/t01cd60ac45117b1b6d.jpg

我想花一点时间来谈谈数据库。大部分人使用Shodan来发现web服务器设备,但近几年来我也一直在抓取互联网上的各种数据库软件。我经常在谈话中提到这个问题,我也尝试混合结果来加深对它的认识。至少MySQLPostgreSQL和大部分关系型数据库软件的默认默认值是相对安全的:只监听本地端口并且默认提供某种形式的授权。最近一些新的NoSQL产品也开始进入主流,它们不符合这种情况。这篇文章的目的在于,我将谈论NoSQL产品中最受欢迎的一种,名叫MongoDB,尽管多数也应用了其它软件(例如Redis)。

首先,为了使得更容易理解MongoDB的结果,我已经调整了搜索结果的显示方式

http://p3.qhimg.com/t012650866118736dec.png

MongoDB的快速搜索显示,在互联网上大约有30000的接口没有启用任何授权。这实际上有一点奇怪,因为MongoDB默认监听本地端口,并且在最老的Github中的mongodb.conf中可以检查到已经这么做有很长时间了。这使我对结果非常困惑:默认监听本机的情况下怎么会有这么多开放的MongoDB安装结果呢?

配置历史

因此我开始下载旧版本的MongoDB,为了找出从哪个版本开始他们更改了默认配置。原来MongoDB2.4.14版本是最后一个默认监听0.0.0.0的版本,它看起来像是一个维护版本,发布于2015年4月28日。我有点糊涂了,为什么Github上2013年9月的配置文件是默认监听本机,而他们发布的版本一直不包括这一改变?我挖掘了一些更多的信息,最终在Jira发现了这个配置问题:

https://jira.mongodb.org/browse/SERVER-4216

Roman Shtylman实际上早在2012年2月就提出了这一问题!然而却用了长达两年去改变设置。基于我所看到的发行版本,我的猜测是,2.6之前的版本可能还没有绑定到本机。

http://p0.qhimg.com/t0149172624c99b411e.png

这也就解释了为什么会有30000的结果,但只看数据,还有其它一些明显的结果。

http://p5.qhimg.com/t01d123bc6c0fa7ee7c.png

公共MongoDB接口绝大多数情况下是在云操作:Digital Ocean,Amazon,Linode和OVH,这些是受欢迎的目标,采用了MongoDB而没有启用授权。其实我已经观察到了这一趋势:云实例往往比传统的数据中心托管更脆弱。我的猜测是,云镜像不会经常更新,这意味着人们部署使用旧的不安全的软件版本。

问题范围

总共有595.2 TB的数据通过公开访问的MongoDB接口暴露在互联网上,不需要任何认证。确认问题的规模,我使用了Shodan命令行工具来下载数据:

shodan download --limit -1 mongodb "product:MongoDB"

然后我运行了一个Python脚本计算出泄露的数据库总大小。我也统计了最受欢迎的数据库名称。

local: 27,108
admin: 22,286
db: 9,895
test: 6,818
config: 1,119
mydb: 498
Video: 409
hackedDB: 319
storage: 315
trash: 309

上面的数据库名称显示,广泛的安装设备可能已经配置错误甚至暴露。也有很多行政数据库,因此应用程序使用MongoDB可能已经进行过认证,但数据库本身并没有认证。名称中有一项hackedDB。目前还不清楚这些是已经泄露的数据库还是某一公司大量部署的名为“hackedDB”的数据库。也许这是一个蜜罐?注意看结果中有趣的事情,40%的接口使用的是很老的MongoDB版本(1.8.1)。

我可以继续讨论这些问题,因为它们到处都是,很多年都没有被解决。希望更多的人会注意到实际数据服务而不仅仅是使用web接口。


本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://blog.shodan.io/its-the-data-stupid/

参与讨论,请先 | 注册 | 匿名评论
发布
用户评论
无任何评论