如何在AWS上发现数千个开放数据库
作者:Avi Lumelsky
阅读时间:10分钟 · 2022年1月23日
我在尽职调查过程中发现并报告了涉及财富500强公司、医院、加密货币平台、初创企业等敏感数据的数据库之旅。
目录
- 概述
- 背景
- 我的假设
- 扫描
- BI与自动化:从数千到数百
- 我发现的数据示例
- 结论
概述
通过扫描托管服务的CIDR块(IP范围),很容易在云服务上找到配置错误的资产,因为这些信息是已知并由服务商发布的。
仅用1天时间,我就发现了数千个ElasticSearch数据库和Kibana仪表板,这些很可能由于错误配置而暴露了敏感信息:
- 客户敏感信息:电子邮件、地址、当前职业、薪资、私人钱包地址、位置、银行账户等。
- 由Kubernetes集群写入的生产日志——从应用程序日志到内核和系统日志。
- 从所有节点、Pod和运行在其上的应用程序收集的日志集中在一处,并向全世界开放。我只是第一个到达那里的人。
一些数据库已经被勒索软件破坏。
背景
必须有很多资产在其范围之外监听,等待被发现。发布的CIDR块使攻击者更容易找到这些资产,传播各种恶意软件,或获取真实公司的敏感数据。
DevOps、开发人员和IT从业者经常错误配置以下内容:
- 在错误的网络接口上绑定套接字。例如,监听来自0.0.0.0/*的连接——因此它对所有网络接口可见,而不是仅内部网络接口IP地址(172.x.x.x)。
- 为集群配置错误的安全组(允许来自广泛CIDR块的所有TCP和所有UDP)。
- 有时,安全组被不了解后果的其他人更改。
- 使用默认网络或子网,派生子网设置,并静默分配公共IPv4地址。
假设
我假设,如果我从云运营商内部(实例/VPS)扫描特定的CIDR块,我可以轻松找到配置错误的资产,这主要是由于人为错误。
关键是智能扫描,利用预先已知的网络基础设施(已知的我们要扫描软件的CIDR块)来找到我可达的实时服务器。
如果你搜索一下,可以找到每个云提供商的相关CIDR块。
假设我是一名IT技术人员或安全工程师,需要允许来自特定云服务(如AWS的弹性容器服务ECS)的传入连接。可以通过将服务的CIDR块添加到安全组规则中,允许来自这些CIDR块的连接来实现。
所有云提供商都发布其服务列表以及每个服务的CIDR块(IP地址范围)。
从AWS获取ElasticSearch服务(ES)的CIDR块
一些CIDR块只能从云提供商内部访问。你所要做的就是在你要扫描的云提供商内部启动一个具有互联网连接的VPS/实例。
需要什么来找到它们?
- 对网络、IP栈和路由以及云基础设施的基本理解。
- 一个轻量级的端口扫描工具(如MasScan或NMap)。
- 要扫描的CIDR块列表(托管服务——如Kubernetes或ElasticSearch)以及这些IP范围内实例最可能开放的端口。
- 一个可视化我们收集的所有数据的工具(如ElasticSearch+Kibana)。
端口扫描——收集资产数据
我使用MasScan扫描我选择的CIDR块上的开放端口。
MasScan是一个TCP端口扫描器,它异步发送SYN数据包。在适当的情况下,它可以在5分钟内扫描整个互联网。
输入是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中。
我让它运行了一会儿,很快就扫描了33.7万多个IP和端口组合。其中许多是开放的。
这是我的仪表板的样子:
在几个小时内,AWS的ElasticSearch服务CIDR块(客户集群)中有33.7万个开放端口。
分析和可视化数据
照片已经过审查。
我已向相关方以及AWS报告了这些事件。我得到了他们的许可继续发表这篇文章。
大多数方在一两天内解决了问题。一些方至今仍忽略报告。
多亏了我创建的管道——我有实时日志,可以在扫描更多时立即开始查看服务。
我使用Kibana的导出按钮将已启动的资产从Kibana导出到CSV文件。然后我使用pandas(python)加载它。
对于每个IP,我发送了一个HTTP HEAD请求,并得到了一个带有资产指纹的HTTP响应。
我消除了需要身份验证的响应。然后我从HTTP响应中打印了它们的网页标题。
我们可以对ElasticSearch端口或任何服务做同样的事情。IP已经被MasScan扫描过,所以我假设它们是启动的。
打印从端点返回的HTML文档的标题。也可以使用nmap的HTTP脚本完成。
获取我找到的相关服务器的标题
所以,现在我有了所有资产的列表,以及它们的网页名称。
我通过在导航栏中输入它们来在浏览器中探索地址。然后,我仔细地探索了资产,一次一个。
我搜索了以下内容:/_aliases/
这个ElasticSearch REST API非常方便。很容易获取字段元数据、文档计数以及关于ES集群的一切你想知道的信息。
通过/_aliases REST调用获取ElasticSearch索引摘要
我发现的数据示例
- 整个生产集群的Kubernetes日志(通过日志收集器收集)
- K8集群日志,通过fluentd流式传输,带有实时URL和内核日志。
- 使用私钥成功登录SSH
- SSH守护进程日志——集群的机器。实时日志。
- 完整的云可见性——实例类型、AMI、账户ID,由于K8和ElasticSearch的错误配置集群而对世界可见。
- 私有仪表板(一些公司已将Jira任务流式传输并发布到其ElasticSearch仪表板中)——包括客户数据、代码示例、账户名称等。这个Kibana仪表板包含了公司研发的一切信息。
该公司正处于尽职调查过程的中期(或高峰),报告称在我报告此事件几周后筹集了大量资金。如果别人发现了,这对他们来说可能是致命的。
我报告了他们的研发副总裁,他们在同一天解决了问题。
- 医院/医疗供应——个人的疫苗接种信息。疫苗接种日期以及电子邮件地址。
- 加密货币交易平台。加密货币代币交换。
- 银行业。银行转账以及全名和银行账户详细信息。
- 实时车队指标(关于每辆车):IMEI(唯一蜂窝标识符)、位置(坐标)、gsm_strength、燃油状态、错误代码、电池状态。
这是真的吗?
有时我难以理解数据库是真实的还是蜜罐。所以,我在谷歌上搜索了在数据库中找到的任何内容。
通常,我找到了真实网站,并知道向谁报告。
ElasticSearch中的文档:
生产网站上的在线文档:
已被勒索软件黑客攻击的服务器
如果你的集群向世界开放,不需要0-day来运行勒索软件。如果你没有身份验证,任何人都可以访问一切。
如你所见,我发现的一些资产已经被“黑客攻击”(不是被黑客攻击,而是被勒索软件破坏)。
像elasticsearch-dump这样的工具可以用来备份(和恢复)数据库。备份后,他们从集群中删除了所有内容,留下这条消息:“你所有的数据都已备份。你必须支付0.16BTC到……”
安全和隐私政策
如你所想,我发现的许多组织都符合GDPR。这意味着他们对数据泄露很敏感,他们有一个数据保护官(DPO)积极搜索和处理此类事件。
我阅读的一个隐私政策示例(以找到DPO)“如果你想了解你的数据如何存储,请联系我们”。
一些DPO没有回复,一些DPO的邮箱因权限错误拒绝了我的电子邮件(他们不允许接收组织外部的电子邮件)。
对于某些公司,DMARC和SPF记录不允许从公司外部接收电子邮件到他们的邮件服务器。真是一团糟,他们根本无法通过电子邮件联系到。
我还向姊妹公司和其他子公司发送了电子邮件。我尝试通过他们网站的联系表格联系他们。没有任何回应。我不得不通过CEO、CTO和VPS开始对话。
至于那些忽略的公司——他们的资产和数据至今仍然暴露,他们不在乎。
结论
在端口扫描方面,按服务发布CIDR块是一个逻辑问题。我们出于许多原因需要它——但同时它对云提供商构成了如此巨大的风险,使他们的客户容易被扫描。
错误配置一直发生,并将持续存在,在不知不觉中给公司安全造成许多漏洞。
我们经常在配置实例时犯错并使用默认VPC子网。因此,许多实例自动分配了公共IP地址。
问题始于缺乏可见性。据我所知,AWS内部目前没有人积极搜索配置错误的数据库或托管服务。这超出了他们的范围。
我报告了我找到的公司,直到某个限制(有太多),我无法独自联系到所有公司。
在与AWS的电子邮件对话中,他们声称配置和保护资产是公司的责任,他们不积极搜索这种错误配置。这有道理,但我发现这出乎意料地容易,他们可以毫不费力地解决它。
我在业余时间独自完成了这件事,做得相当好。
目前我们所能做的就是假设错误配置总是可能的,无论公司规模如何——并且总是有人从网络中看到你。如果你向世界开放服务,至少使用适当的授权和身份验证。
顺便说一句,我是在业余时间做这件事的。我也真的很喜欢咖啡!
Avi在业余时间让互联网更安全
我是一个以业务为导向的工程师,热爱安全和AI,具有深刻的安全洞察力。我喜欢攻击云……
感谢你读到这里。如果你喜欢我的作品,或者你提供漏洞赏金计划,请告诉我。如果你有任何问题,欢迎联系我或评论。查看我之前的发布:
10分钟内的谷歌钓鱼POC:ɢoogletranslate.com
回到2016年,我遇到了一篇关于有人购买ɢoogle.com的帖子。它被用于钓鱼目的(注意第一个字母)……
Facebook知道你吃什么:逐步发现Facebook收集的关于你的所有数据。一个关于我如何以编程方式探索https://facebook.com/dyi的故事。
通过客户端端口扫描识别网站用户——使用WebAssembly和Go
网站倾向于从浏览器扫描用户的开放端口,以更好地识别新/返回用户。可以……
🔈 🔈Infosec Writeups正在组织其首届虚拟会议和网络活动。如果你对Infosec感兴趣,这是最酷的地方,有16位令人难以置信的演讲者和10多个小时的高功率讨论会议。在此处查看更多详细信息和注册。
IWCon2022 - Infosec WriteUps虚拟会议
与世界顶级Infosec专业人士建立联系。了解网络安全专业人士如何取得成功。为你的技能添加新技能……
#AWS #Elasticsearch #端口扫描 #数据库 #错误配置