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

This commit is contained in:
Translator
2025-05-09 11:47:43 +00:00
parent 646a7fa87b
commit 708e689b78
@@ -8,7 +8,7 @@
흥미로운 버킷에 대한 이러한 권한을 가진 공격자는 리소스를 탈취하고 권한을 상승시킬 수 있습니다.
예를 들어, "cf-templates-nohnwfax6a6i-us-east-1"라는 **cloudformation 버킷에 대한 이러한 권한을 가진 공격자**는 배포를 탈취할 수 있습니다. 액세스는 다음 정책으로 부여될 수 있습니다:
예를 들어, "cf-templates-nohnwfax6a6i-us-east-1"라는 클라우드포메이션 버킷에 대한 **권한을 가진 공격자**는 배포를 탈취할 수 있습니다. 접근은 다음 정책으로 부여될 수 있습니다:
```json
{
"Version": "2012-10-17",
@@ -34,7 +34,7 @@
]
}
```
그리고 하이재킹이 가능한 이유는 **템플릿이 버킷에 업로드되는 순간부터** **템플릿이 배포되는 순간까지의 작은 시간 창**이 있기 때문입니다. 공격자는 자신의 계정에 **lambda function**을 생성하여 **버킷 알림이 전송될 때 트리거**되도록 하고, **버킷**의 **내용**을 **하이재킹**할 수 있습니다.
그리고 하이재킹이 가능한 이유는 **템플릿이 버킷에 업로드되는 순간부터** **템플릿이 배포되는 순간까지**의 **짧은 시간 창**이 있기 때문입니다. 공격자는 자신의 계정에 **lambda function**을 생성하여 **버킷 알림이 전송될 때 트리거**되도록 하고, **하이재킹**하여 **버킷**의 **내용**을 가져갈 수 있습니다.
![](<../../../images/image (174).png>)
@@ -48,18 +48,18 @@ Pacu 모듈 [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu
이들에 대한 **쓰기 접근** 권한이 있는 공격자는 **데이터를 수정하여 일부 서비스를 악용하고 권한을 상승시키려고 시도할 수 있습니다**.\
다음은 몇 가지 예입니다:
- EC2 인스턴스가 **S3 버킷에 사용자 데이터를 저장하고 있는 경우**, 공격자는 이를 수정하여 **EC2 인스턴스 내에서 임의의 코드를 실행**할 수 있습니다.
- EC2 인스턴스가 **사용자 데이터를 S3 버킷에 저장하고 있는 경우**, 공격자는 이를 수정하여 **EC2 인스턴스 내에서 임의의 코드를 실행**할 수 있습니다.
### `s3:PutObject`, `s3:GetObject` (선택 사항) terraform 상태 파일에 대한
[terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) 상태 파일이 클라우드 제공자의 블롭 스토리지에 저장되는 것은 매우 일반적입니다. 예를 들어 AWS S3. 상태 파일의 파일 접미사는 `.tfstate`이며, 버킷 이름은 종종 terraform 상태 파일을 포함하고 있음을 나타냅니다. 일반적으로 모든 AWS 계정에는 상태 파일을 저장하는 하나의 버킷이 있습니다. 이 상태 파일은 계정의 상태를 보여줍니다. 또한 실제 계정에서는 거의 모든 개발자가 `s3:*` 권한을 가지고 있으며, 때로는 비즈니스 사용자도 `s3:Put*` 권한을 가집니다.
[terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) 상태 파일이 클라우드 제공자의 블롭 스토리지에 저장되는 것은 매우 일반적입니다. 예를 들어 AWS S3. 상태 파일의 파일 접미사는 `.tfstate`이며, 버킷 이름은 종종 terraform 상태 파일을 포함하고 있음을 나타냅니다. 일반적으로 모든 AWS 계정에는 상태 파일을 저장하는 하나의 버킷이 있습니다. 이 버킷은 계정의 상태를 보여줍니다. 또한 실제 계정에서는 거의 모든 개발자가 `s3:*` 권한을 가지고 있으며, 때로는 비즈니스 사용자도 `s3:Put*` 권한을 가집니다.
따라서 이러한 파일에 대해 나열된 권한이 있는 경우, `terraform`의 권한으로 파이프라인에서 RCE를 얻을 수 있는 공격 벡터가 있습니다. 대부분의 경우 `AdministratorAccess` 클라우드 계정의 관리자가 됩니다. 또한 이 벡터를 사용하여 `terraform`이 합법적인 리소스를 삭제하도록 하여 서비스 거부 공격을 수행할 수 있습니다.
따라서 이러한 파일에 대 권한이 있는 경우, `terraform`의 권한으로 파이프라인에서 RCE를 얻을 수 있는 공격 벡터가 있습니다. 대부분의 경우 `AdministratorAccess`가 되어 클라우드 계정의 관리자가 됩니다. 또한 이 벡터를 사용하여 `terraform`이 합법적인 리소스를 삭제하도록 하여 서비스 거부 공격을 수행할 수 있습니다.
직접 사용할 수 있는 익스플로잇 코드는 *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`
@@ -150,7 +150,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
@@ -177,7 +177,7 @@ aws s3api put-object-acl --bucket <bucket-name> --key flag --access-control-poli
```
### `s3:GetObjectAcl`, `s3:PutObjectVersionAcl`
이 권한을 가진 공격자는 특정 객체 버전에 Acl을 설정할 수 있어야 합니다.
이 권한을 가진 공격자는 특정 객체 버전에 Acl을 설정할 수 있을 것으로 예상됩니다.
```bash
aws s3api get-object-acl --bucket <bucekt-name> --key flag
aws s3api put-object-acl --bucket <bucket-name> --key flag --version-id <value> --access-control-policy file://objacl.json