前一段时间,在安全研究人员中,找到带有各种机密信息的配置不当的AWS云存储是非常“时尚”的。 然后,我甚至发布了有关如何发现Amazon S3开放云存储的小笔记 。
但是,随着时间的流逝,研究的重心已经转移到寻找公开可用的数据库上。 在过去一年中,已知的主要数据泄漏案例中有一半以上是来自开放数据库的泄漏( 此处和此处回顾了2018年的泄漏)。

今天,我们将尝试了解安全性研究人员如何检测此类数据库...
必需的免责声明:本文不会解决或提出与搜索和标识公共数据库有关的法律和道德问题。 以下所有信息均应被视为具有教育意义和信息性。
如果我说查找开放式数据库的主要工具是专业的搜索引擎Shodan和Censys,我不会发现美国。 我必须马上说这些不是免费服务,您必须支付您诚实获得的非卢布才能访问完整的搜索结果(对于Shodan,这是每月59美元,而对于Censys,则是每月99美元,这仅适用于最低基本套餐)。 免费版本的搜索引擎极大地限制了搜索结果的数量。
除了使用搜索栏进行类似Google的经典搜索外,这些搜索引擎还提供了通过API连接到它们的功能。 付费订阅的幸运所有者将收到其API密钥。 这使得可以显着促进耙堆搜索垃圾的任务。 在本文的结尾,我给出了使用API密钥的有用脚本和搜索自动化程序的列表。
, , GitHub, API-, .
让我们看一下Shodan搜索引擎,作为如何查找开放式MongoDB和Elasticsearch数据库的示例。
最简单最明显的查询是“ MongoDB”:

从屏幕截图可以看出,此请求将所有已索引的MongoDB服务器返回给我们(在默认端口27017上)。 此外,其中大多数(在屏幕快照中是前三个)将是封闭的数据库,需要连接帐户。 这并不是我们感兴趣的。 更确切地说,情况并非如此。
让我们使用搜索过滤器“ all:”使查询复杂一些,“ mongodb服务器信息” all:” metrics“”:

结果看起来已经好多了。 当搜索引擎将所有找到的数据库编入索引时,它们都是免费的。 您可以使用MongoDB的某些管理器(例如,用于MongoDB的NoSQL Manager或用于MongoDB的Studio 3T)以指定的IP地址连接到它们的可能性很高。
您可以将搜索限制在一个国家。 假设我们在中国寻找开放的MongoDB(查询“ all:” mongodb服务器信息“ all:”度量“ country:” cn“”):

要搜索开放的Elasticsearch数据库,使用查询“ port:” 9200“ all:”弹性索引“”很方便:

不幸的是,我没有找到一种方法来根据数据库的大小在搜索栏中设置搜索条件。 如果您知道如何执行此操作(在搜索栏中的“ totalSize”或“ sizeOnDisk”参数上设置过滤器),请在注释中输入。
您可以使用专门的脚本和程序将更复杂的过滤器(对数据库大小的限制,服务器输入索引的日期等)应用于搜索结果。 为此,您已经需要付费访问权限和API密钥,如我上面所述。
以下是可能派上用场的简短列表: