我在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块(IP地址范围)列表。

需要什么来找到它们?

  • 网络、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响应中打印其网页标题。

发现的数据示例

Kubernetes整个生产集群的日志

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

使用私钥成功SSH登录

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

完整的云可见性

实例类型、AMI、账户ID对世界可见,这要归功于配置错误的K8和ElasticSearch集群。

私有仪表板

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

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

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

加密交易平台

加密代币交换。

银行业

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

实时车队指标

关于每辆车的信息:

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

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

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

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

结论

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

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

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

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

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

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

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

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

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