第一资本SSRF

背景

以下是对第一资本数据泄露事件的重现。

此次事件几乎泄露了1.06亿名客户记录
据报道,佩吉·汤普森被指控侵入了第一资本的服务器,并获取了14万条社会安全号码、100万条加拿大社会保险号码以及8万条银行账号号码。

具体事件请看:美国第一资本银行数据泄露 超1亿用户受影响 (huanqiu.com)
在接下来的模拟案例中,我们将称受影响的组织为CapitalTen,威胁行为者为Bob。

漏洞

根据KrebsOnSecurity的报告,攻击者利用了服务器端请求伪造(SSRF)漏洞来访问AWS云端节点。

SSRF漏洞最常见于与以下功能相关的情况:

  • PDF生成,例如生成PDF报告、信用卡对账单;
  • 文件上传,例如上传扫描文件、图像文件等。

Bob攻击过程

1进入网站

Bob首先在浏览器中加载了CapitalTen的网站。

在这里插入图片描述

2.Bob使用注册的银行账户信息,登录到其网站

在这里插入图片描述

在这里插入图片描述

3在成功登录后,Bob开始他的分析,通过浏览CapitalTen的网站,绘制应用程序的关键功能和服务。此时他发现了更多账户服务功能点

攻击面映射是分析应用程序的核心功能、业务逻辑和控制流程的过程,以识别潜在的输入或向量,通过这些向量,攻击者可以尝试进入应用程序环境。

在这里插入图片描述

在“账户服务”页面上,Bob注意到了“更改卡片图像”服务,该服务允许用户通过上传个人照片或自定义图像来个性化他们的银行卡。

在这里插入图片描述

为了定制个性化的信用卡,此处功能允许用户上传用户自己的图像,Bob准备了一张图片mountain.png,他决定试试这个功能

在这里插入图片描述

文件mountain.png被上传并在图像预览小部件中呈现出来,Bob进一步分析了下面的预览小部件URL,重点在参数和参数值 https://www.capitalten.com/myaccount/personalize/cardimage/preview?url=https://s3.eu-central-1.amazonaws.com/file-upload/6b7c1a1e-1a56-4db8-980a-5a4b849e1581_n.jpg ,他注意到一个s3存储桶的url被作为输入值传递给了预览小程序【不了解S3存储桶对于此案例后续学习无影响】

在这里插入图片描述

进入SSRF测试:在分析了预览URL和卡片构建器功能后,Bob尝试修改原始URL,将AWS S3存储桶链接替换为以下URL。https://www.catmemes.com/latest/cat-17429664.png

被替换后的整体url为:https://www.capitalten.com/myaccount/personalize/cardimage/preview?url=https://www.catmemes.com/latest/cat-17429664.png

仅仅通过将AWS S3存储桶链接更改为不同的URL资源,Bob成功地欺骗了预览小程序,使其获取并加载了外部图像资源。

需要注意的是,CapitalTen应用服务器发起了HTTP请求来获取图像URL并呈现了该图像。

将Web应用程序操纵成向第三方站点或资源发送未经授权的请求的能力被称为服务器端请求伪造(SSRF)。

在这里插入图片描述

后端代码
在Bob继续利用SSRF漏洞之前,让我们快速查看一下卡片设计工作室的后端小程序代码。

此处的documentPreview方法用于呈现上传的图像文件

在这里插入图片描述

此方法通过提取url=参数传递的预签名S3存储桶url,将其分配给queryString变量

在这里插入图片描述

然后queryString作为参数传递给storageService.load方法,该方法负责从S3存储桶下载预览图像

在这里插入图片描述

最后load方法调用Java的HttpGet()函数来检索图像文件,不幸的是,没有对请求参数url进行输入验证检查,允许Bob通过HttpGet()方法控制任意URL的加载

在这里插入图片描述

AWS元数据端点 : 尽管SSRF问题可能看似风险有限,但攻击者可以在这些漏洞上发挥创造力,以便发出针对可能暴露敏感数据的非公开URL的请求。

在第三方云环境中,攻击者通常利用的一种服务是基于REST的名为云元数据端点的Web服务。如果配置正确,元数据端点可以编程方式访问云服务器的系统配置、网络详细信息、身份验证访问密钥等。

Bob尝试通过提交以下AWS元数据URL来访问CapitalTen的元数据端点。

替换前:
在这里插入图片描述

替换后:

在这里插入图片描述

成功!通过将AWS元数据URL作为参数传递给URL参数url,Bob成功地检索到了与CapitalTen Web服务器相关的所有实例元数据类别!

在这里插入图片描述

Bob继续通过向security-credentials端点发出以下请求,枚举可能为CapitalTen Web服务器配置的IAM角色。

在这里插入图片描述

这次,Bob发出的元数据请求返回了一个与Web服务器实例关联的单个角色ISRM-WAF-ROLE。

ISRM-WAF-ROLE 是 CapitalTen 网站中的一个 IAM 角色。IAM(Identity and Access Management)是 Amazon Web Services(AWS)中用于管理用户、权限和资源访问的服务。ISRM-WAF-ROLE 与网站的 Web Application Firewall(WAF)相关,用于授予特定权限以保护网站免受恶意攻击。

在识别出实例角色名称ISRM-WAF-ROLE后,Bob构造了以下查询,以下载与ISRM-WAF-ROLE角色关联的访问令牌。

替换前:

在这里插入图片描述

替换后:

在这里插入图片描述

在这里插入图片描述

正如预期的那样,Bob修改后的查询security-credentials/ISRM-WAF-ROLE端点返回了CapitalTen的EC2实例的AccessKeyId和SecretAccessKey令牌!

使用上述访问密钥,Bob现在可以开始使用ISRM-WAF-ROLE的权限进行编程调用AWS API。

Bob在本地终端中打开,并在他的笔记本电脑上配置了窃取的AWS ISRM-WAF-ROLE令牌。

然后,他使用AWS命令行界面(CLI)实用工具发出命令aws s3 ls,以列出CapitalTen服务器上的所有S3存储桶。

AWS命令行界面(AWS CLI)是一款开源工具,它使得授权用户能够使用命令行Shell与AWS服务进行交互。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chosennnny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值