如何在AWS上发现数千个开放数据库

作者通过扫描AWS公布的CIDR地址块,发现了数千个配置错误的ElasticSearch数据库和Kibana仪表板,这些数据库暴露了包括客户敏感信息、生产日志、医疗记录和银行交易数据在内的多种机密数据。

如何在AWS上发现数千个开放数据库

我在寻找和报告包含财富500强公司、医院、加密平台、初创企业尽职调查期间敏感数据数据库的过程。

目录

  • 概述
  • 背景
  • 我的假设
  • 扫描
  • 数据分析与可视化
  • 我发现的数据示例
  • 结论

概述

通过扫描托管服务的CIDR块(IP范围),很容易在云服务上找到配置错误的资产,因为这些信息是由云服务商公开发布的。

在短短1天内,我发现了数千个ElasticSearch数据库和Kibana仪表板,这些很可能由于错误配置而暴露了敏感信息:

  • 客户敏感信息:电子邮件、地址、当前职业、薪资、私人钱包地址、位置、银行账户等
  • Kubernetes集群写入的生产日志:从应用程序日志到内核和系统日志
  • 从所有节点、Pod和应用程序收集的日志集中在一处,向全世界开放
  • 部分数据库已被勒索软件破坏

背景

有很多资产在其范围之外监听,等待被发现。已发布的CIDR块使攻击者更容易找到这些资产,传播各种恶意软件,或获取真实公司的敏感数据。

DevOps、开发人员和IT从业者经常错误配置以下内容:

  • 在错误的网络接口上绑定套接字
  • 为集群配置错误的安全组(允许来自广泛CIDR块的所有TCP和所有UDP)
  • 使用默认网络或子网,子网设置被派生,公共IPv4地址被静默分配

假设

我假设如果从云运营商内部(实例/VPS)扫描特定的CIDR块,我可以轻松找到配置错误的资产,这主要是由于人为错误。

关键是智能扫描,利用预先已知的网络基础设施(我们想要扫描的软件的已知CIDR块)来找到可访问的实时服务器。

扫描

从AWS获取ElasticSearch服务的CIDR块

某些CIDR块只能从云提供商内部访问。您只需要在要扫描的云提供商内部启动具有互联网连接的VPS/实例。

需要什么来找到它们?

  • 对网络、IP堆栈和路由以及云基础设施的基本理解
  • 轻量级端口扫描工具(如MasScan或NMap)
  • 要扫描的CIDR块列表(托管服务,如Kubernetes或ElasticSearch)以及这些IP范围内实例最可能开放的端口
  • 可视化收集数据的工具(如ElasticSearch+Kibana)

端口扫描 - 收集资产数据

我使用MasScan扫描选定CIDR块上的开放端口。MasScan是TCP端口扫描器,它异步发送SYN数据包。

输入是CIDR块(例如50.60.0.0/16或118.23.1.0/24)和我们想要扫描的端口(9200、5600、80、443等)。

我使用Docker镜像在实例上启动了ELK堆栈。在同一台机器上启动MasScan,开始扫描CIDR块。使用LogStash将MasScan的输出(响应日志)流式传输到ElasticSearch,并通过Kibana可视化所有内容。

在扫描期间,TCP响应被记录并索引到ElasticSearch中。我让它运行了一会儿,很快就扫描了337,000多个IP和端口组合,其中许多是开放的。

分析与可视化数据

照片经过审查。我已向相关方和AWS报告了这些事件,并获得了他们继续发布此文章的许可。

大多数方在一两天内解决了问题,但有些至今仍忽略报告。

得益于我创建的管道,我有实时日志,可以在扫描更多内容时立即开始查看服务。

我使用Kibana的导出按钮将运行的资产从Kibana导出到CSV文件,然后使用pandas(python)加载它。

对于每个IP,我发送HTTP HEAD请求并获取带有资产指纹的HTTP响应。我消除了需要身份验证的响应,然后从HTTP响应中打印它们的网页标题。

我们可以对ElasticSearch端口或任何服务执行相同操作。IP已被MasScan扫描,所以我假设它们是运行的。

现在,我拥有了所有资产及其网页名称的列表。我在浏览器中通过在地址栏输入它们来探索这些地址。

然后,我仔细探索了这些资产,一次一个。我搜索了以下内容:

/_aliases/<index>/_search

这个ElasticSearch REST API非常方便。很容易获取字段元数据、文档计数以及您想了解的有关ES集群的所有信息。

我发现的数据示例

整个生产集群的Kubernetes日志

通过fluentd流式传输的K8集群日志,包含实时URL和内核日志。

使用私钥成功SSH登录

SSH守护进程日志 - 集群机器。实时日志。

完整的云可见性

由于K8和ElasticSearch集群配置错误,实例类型、AMI、账户ID对全世界可见。

私有仪表板

一些公司已将Jira任务流式传输并发布到其ElasticSearch仪表板中,包括客户数据、代码示例、账户名称等。这个Kibana仪表板包含了公司研发的所有信息。

该公司正处于尽职调查过程的中期(或高峰),在我报告此事件几周后,他们报告筹集了大量资金。如果其他人发现了这一点,对他们来说可能是致命的。

医院/医疗供应 - 个人疫苗接种信息

疫苗接种日期和电子邮件地址。

加密交易平台

加密代币交换。

银行业

银行转账以及全名和银行账户详细信息。

实时车队指标

关于每辆车的信息:

  • IMEI(唯一蜂窝标识符)
  • 位置(坐标)
  • gsm信号强度
  • 燃油状态
  • 错误代码
  • 电池状态

这是真实的吗?

有时我难以理解数据库是真实的还是蜜罐。所以,我在谷歌上搜索了在数据库中找到的任何内容。通常,我找到了真实网站,并知道向谁报告。

已被勒索软件攻击的服务器

如果您的集群向全世界开放,则不需要0-day来运行勒索软件。如果您没有身份验证,任何人都可以访问所有内容。

正如您所看到的,我发现的一些资产已经被"黑客攻击"(不是被黑客攻击,而是被勒索软件破坏)。

像elasticsearch-dump这样的工具可用于备份(和恢复)数据库。备份后,他们从集群中删除所有内容,留下此消息:“您的所有数据都已备份。您必须支付0.16BTC到…”

安全与隐私政策

正如您可以想象的,我发现的许多组织都符合GDPR。这意味着他们对数据泄露很敏感,他们有DPO(数据保护官)积极搜索和处理此类事件。

一些DPO没有回复,一些DPO的邮箱因权限错误拒绝了我的电子邮件(他们不允许接收组织外部的电子邮件)。

对于某些公司,DMARC和SPF记录不允许从其邮件服务器接收来自公司外部的电子邮件。多么混乱,他们根本无法通过电子邮件联系到。

我还向姊妹公司和其他子公司发送了电子邮件。我尝试通过他们网站的联系表格联系他们。没有任何回应。我不得不通过CEO、CTO和VPS开始对话。

至于那些忽略的公司,他们的资产和数据至今仍然暴露,他们不在乎。

结论

在端口扫描方面,按服务发布CIDR块是一个逻辑问题。我们出于多种原因需要它,但同时它对云提供商构成了如此巨大的风险,使他们的客户容易被扫描。

错误配置一直在发生,并且会持续存在,在不知情的情况下导致公司安全出现许多漏洞。

我们经常犯错,在配置实例时使用默认VPC子网。因此,许多实例自动分配了公共IP地址。

问题始于缺乏可见性。据我所知,目前AWS内部没有人积极搜索配置错误的数据库或托管服务。这超出了他们的范围。

我报告了我发现的公司,直到某个限制(有太多),我无法独自联系到他们所有人。

在与AWS的电子邮件对话中,他们声称配置和保护其资产是公司的责任,他们没有积极搜索这种错误配置。这有道理,但我发现这出乎意料地容易,他们可以毫不费力地解决它。

我在业余时间自己完成了这项工作,做得相当好。

目前,我们所能做的就是假设错误配置总是可能的,无论公司规模如何,并且总是有人从网络中看到您。如果您向世界开放服务,至少使用适当的授权和身份验证。

顺便说一句,我是在业余时间做这件事的。我也真的很喜欢咖啡!

感谢您阅读到这里。如果您喜欢我的作品,或者您提供漏洞赏金计划,请告诉我。如果您有任何问题,欢迎联系我或评论。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计