Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-05-09 11:47:42 +00:00
parent 340f46d72e
commit aea9d2f5cf

View File

@@ -8,7 +8,7 @@
拥有这些权限的攻击者可能能够劫持资源并提升权限。
例如,拥有对名为 "cf-templates-nohnwfax6a6i-us-east-1" 的 **cloudformation bucket** 的这些权限的攻击者将能够劫持部署。可以通过以下策略授予访问权限:
例如,拥有对名为 "cf-templates-nohnwfax6a6i-us-east-1" 的 **cloudformation bucket** 的这些**权限**的攻击者将能够劫持部署。可以通过以下策略授予访问权限:
```json
{
"Version": "2012-10-17",
@@ -34,7 +34,7 @@
]
}
```
劫持是可能的,因为从**模板上传**到存储桶的那一刻到**模板部署**的那一刻之间有一个**的时间窗口**。攻击者可能只需在他的账户中创建一个**lambda function**,当**存储桶通知被发送**触发,并**劫持**该**存储桶**的**内容**。
劫持是可能的,因为从**模板上传**到存储桶的那一刻到**模板部署**的那一刻之间有一个**短暂的时间窗口**。攻击者可能在他的账户中创建一个**lambda function**,当发送存储桶通知时会**触发**,并**劫持**该**存储桶**的**内容**。
![](<../../../images/image (174).png>)
@@ -43,29 +43,29 @@ Pacu模块 [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/
### `s3:PutObject`, `s3:GetObject` <a href="#s3putobject-s3getobject" id="s3putobject-s3getobject"></a>
这些是**获取和上传对象到 S3**的权限。AWS 内部(以及外部)的多个服务使用 S3 存储来存储**配置文件**。\
这些是**获取和上传对象到 S3**的权限。AWS内部以及外部的多个服务使用S3存储来存储**配置文件**。\
具有**读取访问权限**的攻击者可能会在其中找到**敏感信息**。\
具有**写入访问权限**的攻击者可以**修改数据以滥用某些服务并尝试提升权限**。\
以下是一些示例:
- 如果 EC2 实例将**用户数据存储在 S3 存储桶**,攻击者可以修改它以**在 EC2 实例内执行任意代码**。
- 如果EC2实例将**用户数据存储在S3存储桶**,攻击者可以修改它以**在EC2实例内执行任意代码**。
### `s3:PutObject`, `s3:GetObject`(可选)在 terraform 状态文件上
### `s3:PutObject`, `s3:GetObject`可选在terraform状态文件上
很常见的是,[terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) 状态文件被保存到云提供商的 blob 存储中,例如 AWS S3。状态文件的文件后缀为 `.tfstate`,而存储桶名称通常也会透露它们包含 terraform 状态文件。通常,每个 AWS 账户都有一个这样的存储桶来存储显示账户状态的状态文件。\
此外,通常在现实世界的账户中,几乎所有开发人员都有 `s3:*`,有时甚至业务用户也有 `s3:Put*`
很常见的是,[terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html)状态文件被保存到云提供商的blob存储中例如AWS S3。状态文件的文件后缀为`.tfstate`,而存储桶名称通常也会表明它们包含terraform状态文件。通常每个AWS账户都有一个这样的存储桶来存储显示账户状态的状态文件。\
在现实世界的账户中,几乎所有开发人员通常都有`s3:*`,有时甚至业务用户也有`s3:Put*`
因此,如果您对这些文件具有列出的权限,则存在一个攻击向量,允许您以 `terraform` 的权限获得 RCE - 大多数情况下是 `AdministratorAccess`,使您成为云账户的管理员。此外,您可以利用该向量通过使 `terraform` 删除合法资源来进行拒绝服务攻击。
因此,如果您对这些文件具有列出的权限,则存在一个攻击向量,允许您以`terraform`的权限获得RCE——大多数情况下是`AdministratorAccess`,使您成为云账户的管理员。此外,您可以利用该向量通过使`terraform`删除合法资源来进行拒绝服务攻击。
请按照 *Terraform Security* 页面中 *Abusing Terraform State Files* 部分的描述获取可直接使用的利用代码:
请按照*Terraform Security*页面中*Abusing Terraform State Files*部分的描述获取可直接使用的利用代码:
{{#ref}}
pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
../../../pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
{{#endref}}
### `s3:PutBucketPolicy`
攻击者需要**来自同一账户**,否则会触发错误`The specified method is not allowed`,具有此权限将能够授予自己对存储桶的更多权限,使其能够读取、写入、修改、删除和暴露存储桶。
攻击者需要**来自同一账户**,否则会触发错误`The specified method is not allowed`,具有此权限的攻击者将能够授予自己对存储桶的更多权限,使其能够读取、写入、修改、删除和暴露存储桶。
```bash
# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-name>
@@ -151,7 +151,7 @@ aws s3api put-bucket-acl --bucket <bucket-name> --access-control-policy file://a
```
### `s3:GetObjectAcl`, `s3:PutObjectAcl`
攻击者可以利用这些权限来授予他对存储桶内特定对象的更多访问权限。
攻击者可以利用这些权限来获得对存储桶内特定对象的更多访问权限。
```bash
# Update bucket object ACL
aws s3api get-object-acl --bucket <bucekt-name> --key flag