如何发现MongoDB和Elasticsearch开放数据库

前一段时间,在安全研究人员中,找到带有各种机密信息的配置不当的AWS云存储是非常“时尚”的。 当时,我什至发布了关于如何发现Amazon S3开放云存储的小笔记。


但是,随着时间的流逝,研究的重点已经转移到寻找不安全和公开的公共领域数据库。 在过去的一年中,已知的大数据泄漏案例中有超过一半是来自开放数据库的泄漏。



今天,我们将尝试找出安全研究人员如何发现此类数据库...


必需的免责声明:本文不涉及也没有提出与搜索和标识公共数据库有关的法律和道德问题。 以下所有信息仅应视为具有教育意义。

如果我说搜索开放式数据库的主要工具是专门的搜索引擎Shodan.io,BinaryEdge.io和Censys.io,那么我不会“发现美国”。 我会指出这些不是免费服务,您必须付费才能访问完整的搜索结果(对于Shodan,每月是$ 59,BinaryEdge-$ 50 /月,Censys是$ 99 /最低基本套餐的月份)。 免费版本的搜索引擎严重限制了发行结果的数量。


除了使用搜索功能的类似Google的经典搜索体验外,这些搜索引擎还提供了通过API连接到它们的功能。 付费订阅的幸运所有者将收到一个API密钥。 这使您可以极大地简化清除搜索垃圾堆的任务。 在本文的结尾,我提供了使用API​​密钥的有用脚本和搜索自动化程序的列表。


让我们看一下Shodan搜索引擎的示例:如何查找开放的MongoDB和Elasticsearch数据库。


尝试尝试的最简单,最明显的请求是“ MongoDB”:



从上面的屏幕截图中,我们可以看到该请求返回了所有索引的MongoDB服务器(默认端口为27017)。 此外,其中大多数(屏幕快照中的前三个)将是需要帐户凭据的封闭数据库。 这并不是我们有兴趣找到的。 更确切地说,这一点都不有趣。


让我们使用搜索过滤器“ all:”使查询略微复杂化。mongodb服务器信息“ all:” metrics“”:



结果看起来好多了。 当搜索引擎为它们建立索引时,所有找到的数据库都是免费的。 很可能我们将能够使用任何用于MongoDB的管理器(例如,用于MongoDB的NoSQL管理器或用于MongoDB的Studio 3T)连接到指定的IP地址。


要查找还用作文件存储服务器的未经身份验证的MongoDB实例,您可以尝试使用查询“端口:27017 -all:”部分地“全部:” fs.files“”


可以将搜索限制在任何国家。 假设要查找在中国打开的MongoDB :(查询“ all:” mongodb服务器信息“ all:”度量“ country:” cn“”):



要搜索Elasticsearch开放数据库,使用查询“端口:” 9200“所有:”弹性索引“”是很方便的:



要将更复杂的过滤器(对数据库大小,索引中服务器的日期等进行限制)添加到搜索结果中,可以使用专门的脚本和程序。 为此,正如我在上文中所述,需要付费访问和API密钥。


以下是一些可能有用的链接列表:


  • cli.shodan.ioShodan的官方控制台。
  • github.com/woj-ciech/LeakLooker是一个python程序,用于搜索开放式数据库(MongoDB,CouchDB,Elasticsearch等)。
  • lampyre.io是一个非常强大的图形界面(仍然非常容易出错 !),用于搜索和可视化找到的内容。 它具有用于MongoDB搜索的内置模板等等。 它在Beta测试中暗示着所有后果...

Source: https://habr.com/ru/post/zh-CN443132/


All Articles