前言
虽然这事在国内好像没怎么听闻…………但国外可是闹翻了…………
也不得不惊醒某些喜欢把自己的云服务器与数据库裸奔的用户。
事件概述
其实我也是前两天才知道这事,事情经过是这样的。
Victor Gevers大大在12月27日发现一些裸奔的MongoDB用户的数据被黑客删除并发推引起了互联网的注意。(黑客把数据库里的数据都删除了,并留下一张warning的表,里面写着如果想“赎”回数据,就给0.2比特币(约等于200$)到xxxxx地址)
12.27
元旦当天,Victor Gevers大大转发了条关于Amazon服务器与MongoDB的推并说:“请在2017年给我们原生的MongoDB数据库加上默认设置和取消防火墙吧!”
1.1
1月3日,CSOonline发推 Exposed MongoDB installs being erased, held for ransom(关于裸奔的MongoDB被删除数据并被勒索事件)。事件慢慢越闹越大。
1.3
1月4日Victor Gevers大大发推说:“一个名为Hijacked的黑客组织入侵了将近2000个MongoDB数据库。”,但这个名为Hijacked的黑客组织好像觉得玩脱了。就此收手了~然而事情还没完…………
1月4日
1月4日,就在Hijacked收手没多久,一个名为0wn3d的黑客组织又上演了同一出戏码…………而且赎金更贵………0.5比特币(约等于550$)……
1.4
1月5日Victor Gevers大大发推说:“幸运的是没有任何人交付赎金,“匪徒”给的地址无法解码!所以任何数据库被入侵的用户,请千万不要交付赎金,并可以向我寻求帮助!”
1.5
1月5日,名为harak1r1的黑客组织也干了这事,这次是0.2比特币…………
1.5
1月5日,名为0704341626asdf的黑客组织也干了这事,这次更搞笑的是他们在留言里说到:“你tm在想什么???让数据库在公网上裸奔????”
1.5
1月5日,Victor Gevers大大警告大家:请千万不要交付赎金,因为没人保证黑客会保存你的数据!
1.5
1月6日这次是名为mongo3l1t3,赎金0.2比特币……
1.6
1月6日,这次是名为kraken0,赎金1比特币……
1.6
1月6日,这事闹上了BBC NEWS………………
1.6
1月7日,国内的耗子大大发了微博,至此国内也开始关注这事(要知道国外这事可是大新闻…………)
1.7
1.7
至此就是这件事的最新动向。
其实不是数据库不安全,只是用户问题
其实这事也不能全怪MongoDB,因为其实这事就是因为某些用户他把自己的数据库摆上公网,然后还不设置账户密码而引起的………………也正如0704341626asdf说到:“你tm在想什么???让数据库在公网上裸奔???”。其实这事真的不难,很简单,我都能轻松做到…………只要你稍微懂点数据库基本就可以了…………
为什么不设置账户密码???这个主要是因为在安装原生的MongoDB时,默认条件下,MongoDB是不启用认证和访问控制功能,说白了就是MongoDB不会提示你设置账户密码,也不会提示你任何ip都能访问你的数据库,这对一些网络安全意识薄弱的人简直是致命伤!!
理论上许多的云平台(比如腾讯云,阿里云)这些数据库默认是不会也可以不用暴露在公网上的,云平台也不推荐你这么做,我估计是某些用户贪方便懒的折腾内网连接而开放的公网端口……………
入侵个数据库给你们看看~
虽然入侵数据库这不是什么好事,我之前也没怎么接触过MongoDB,但为了证明究竟入侵有多简单,我马上装了个MongoDB并入侵了一个数据库(当然我什么都没干,就只是进去了一下)
首先,先在shodan搜索 MongoDB country:"CN" ,然后你会获得很多在中国公网的MongoDB数据库ip地址(ip地址都打码,要看自己去搜)
shodan
然后我随便选个ip,在终端进行登陆,因为没有账户密码,所以我输入 ./mongo --host xxx.xxx.xx.xx 这个命令就完成登陆了,接下来我就可以对他的数据库的数据进行任何的增删查改了,当然这里我只输入 show dbs 显示所有的数据库,然后什么都没干,毕竟我又不是想干坏事…………
登陆
正是因为没有账户密码设置,结果我轻松入侵…………
有多少这样裸奔的数据库?
我在shodan搜MongoDB country:"CN",是有12788个结果返回的,就是在中国说有12788个放在公网上的MongoDB数据库,至于其中有多少事没有账户密码的我不清楚,但从我刚才随便选一个就成功了,估计没有账户密码的占大部分……
MongoDB country:"CN"
接着我直接搜MongoDB,更是在全球范围里搜到53022个结果…………
53022
MongoDB
不敢说shodan的搜索是完完全全的,也不敢说搜到的数据库全都是裸奔,但从上面的情况来看,裸奔的数据库估计成千上万………………
一些补救措施
由于我对MongoDB并不是那么熟悉,这里我借用vex2的 《MongoDB 数据库被入侵删除事件分析》这篇文章里的方法
如果您是 MongoDB 管理员,下面的其他提示可能对您有用:
检查 MongDB 帐户以查看是否没有人添加了密码( admin )用户(使用 db.system.users.find()命令);
检查 GridFS 以查看是否有人存储任何文件(使用 db.fs.files.find()命令);
检查日志文件以查看谁访问了 MongoDB ( show log global 命令)。
预防方法
这个其实也没什么好说的,就几点。
先把你数据库的账户密码设置好了再说……
尽量不要把你的数据库摆上公网!业务处理都尽量在内网进行!
如果要摆上公网,一定要设置好访问权限,绑定访问源 IP!
备份数据~
后记
还是那句话:“你tm在想什么???让数据库在公网上裸奔???”。
所以说请注意你的云端设备是否加了把“安全锁”~
好吧~滚去复习了…………orz
引用文章:
[1]从 MONGODB “赎金事件” 看安全问题 作者:@左耳朵耗子
[2]MongoDB 数据库被入侵删除事件分析 作者:helloworld01
作者:辉仔SAMA
链接:https://www.jianshu.com/p/48d17a69e190