首页
社区
课程
招聘
[翻译]将SSRF升级为RCE(AWS环境)
发表于: 2019-5-13 00:34 7861

[翻译]将SSRF升级为RCE(AWS环境)

2019-5-13 00:34
7861

原文:2c3K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4k6h3&6W2M7X3q4D9k6h3M7H3P5o6l9I4i4K6u0W2j5$3!0E0i4K6u0r3x3U0l9I4z5g2)9J5c8U0l9K6i4K6u0r3x3e0m8Q4x3V1k6W2M7$3y4S2L8r3q4@1K9h3&6Y4i4K6u0V1M7%4y4J5k6W2)9J5k6s2c8G2i4K6u0V1M7X3y4W2i4K6u0r3

大家好,渗透测试者们

我是Youssef A. Mohamed又名GeneralEG

安全研究员@ CESPPA网络安全工程师@ Squnity 和SRT会员@Sixack

今天,我将像往常一样与你分享一个新的刺激漏洞。

探索测试范围:

在枚举客户端的子域名时。我找到了子域名[docs]

找到带外资源负载:

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

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

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

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

45dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8$3y4K6i4K6u0W2M7X3g2V1j5h3y4@1i4K6u0W2j5$3!0E0i4K6u0r3M7X3g2H3L8%4u0@1i4K6u0r3j5i4m8A6i4K6u0r3N6U0u0Q4x3V1k6Z5k6h3I4H3i4K6u0r3j5i4y4K6k6i4c8Q4x3@1k6#2M7X3I4Q4x3@1c8Z5N6s2c8H3M7#2)9K6b7g2)9J5c8W2)9J5c8X3N6W2L8X3g2J5j5h3I4W2k6K6m8^5x3o6q4Q4x3X3g2U0L8$3#2Q4x3U0k6S2L8i4m8Q4x3@1u0E0K9h3#2W2g2s2W2H3k6g2)9K6c8s2c8W2P5s2c8Q4x3V1k6Z5N6r3#2D9i4K6t1$3j5h3#2H3i4K6y4n7N6q4)9K6c8q4u0q4c8p5q4o6g2p5g2p5i4K6u0W2d9W2N6f1i4K6u0W2g2p5!0w2c8f1&6Q4x3U0k6S2L8i4m8Q4x3@1u0S2k6s2k6W2M7Y4c8A6M7$3g2J5d9h3c8Q4x3@1b7I4x3b7`.`.

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

Verifying SSRF:

验证SSRF:

检查我的BurpSuite中的requests/responses时注意到Response头[X-Amz-Cf-Id]

所以,我可以确定他们在AWS 环境上。

我们需要确保SSRF在这里运作良好。我们已经知道[169.254.169.254]是EC2实例的本地IP地址。

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

SSRF确认。

在EC2环境中冲浪

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

这是aws-elasticbeanstalk-ec2-role

什么是AWS Elastic Beanstalk?

窃取所需数据:

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

可以得到[AccessKeyId,SecretAccessKey,Token]

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

可以得到[instanceId,accountId,region]

配置AWS命令行界面:

~# aws sts get-caller-identity

SSRF利用得很好,现在让我们探索更多的可能性,将其升级为更大的“RCE”。

将SSRF升级为RCE:

我去尝试了一些潜在的exploit场景。

经过几项研究尝试使用AWS 系统管理员 [ssm]命令。

该角色无权执行此命令。我希望用aws ssm send-command提权。

回显内容:

SSH端口已关闭。本来我希望能以这样喜闻乐见的一幕提权场景提权:

“创建RSA身份验证密钥对(公钥和私钥),能够从帐户登录远程站点,而无需输入密码。”

试图阅读[S3 Bucket]内容:

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

回显内容:

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

为了访问S3 buckets,我们将使用以前采用的数据,格式如下:

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

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

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

~# aws s3 cp cmd.php s3://elasticbeanstalk-us-east-1-76xxxxxxxx00/

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

在这里我们成功获得了RCE!

简而言之:

您可以通过多种方式将服务器端请求伪造升级到远程执行代码,但这取决于您的目标环境。

快乐黑客!

翻译:看雪翻译小组 lipss
校对:看雪翻译小组 Daemond

 
 
 
 
 

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回