Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
iam-vulnerable — Terraform을 사용하여 설계상 취약한 AWS IAM 권한 상승 실습 환경을 직접 만들어 보세요. | Kitploit
도구/GitHubGitHub/bishopfox/iam-vulnerable
Privilege EscalationVulnerability AnalysisPenetration TestingCloud SecurityIdentity & Access Management (IAM)Learning & EducationLabs & Practice
GitHubbishopfox/iam-vulnerable

iam-vulnerable

Terraform을 사용하여 설계상 취약한 AWS IAM 권한 상승 실습 환경을 직접 만들어 보세요.

저장소 보기
58510711개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

IAM Vulnerable

Terraform을 사용하여 자신만의 의도적으로 취약하게 설계된 AWS IAM 권한 상승 놀이터를 만드세요.

IAM Vulnerable은 Terraform 바이너리와 AWS 자격 증명을 사용하여 선택한 AWS 계정에 250개 이상의 IAM 리소스를 배포합니다. 몇 분 안에 권한 상승을 허용하는 취약한 IAM 구성 식별 및 악용 방법을 학습하기 시작할 수 있습니다.

IAM Vulnerable의 큰 형제 - CloudFoxable

안녕하세요. IAM Vulnerable은 여전히 AWS IAM 권한 상승의 기본 구성 요소를 이해하는 데 매우 유용합니다. 하지만 IAM Vulnerable을 만든 지 몇 년 후, 저는 CloudFoxable을 만들었습니다. 이는 CTF 스타일 버전으로, 클라우드 침투 테스트의 기초를 보다 전체적으로 가르쳐줍니다. - @sethsec

의도적으로 취약한 놀이터

  • CloudFoxable - 게임화된 클라우드 해킹 샌드박스

IAM-Vulnerable, CloudFox 및 CloudFoxable에 대해 이야기하고 싶으신가요?

저희 RedSec 디스코드 서버에 참여하세요.

🦊 현재 지원되는 권한 상승 경로: 31

목차

  • IAM Vulnerable
  • 권장 접근 방식
  • 상세 사용법
  • 빠른 시작
    • 방금 생성된 리소스는 무엇인가요?
    • 비용은 얼마나 들까요?
  • 모듈 방식
    • 무료 리소스 모듈
    • 유료 리소스 모듈
  • 지원되는 권한 상승 경로
  • 기타 사용 사례
  • FAQ

권장 접근 방식

  1. AWS 계정 선택 또는 생성 - 프로덕션 리소스나 민감한 데이터가 있는 계정은 사용하지 마십시오.
  2. 취약한 놀이터 생성 - 이 저장소를 사용하여 31개의 고유한 AWS IAM 권한 상승 경로를 지원하는 IAM 주체와 정책을 생성합니다.
  3. 숙제를 하세요 - Spencer Gietzen이 개척한 21개의 원래 권한 상승 경로에 대해 알아보세요.
  4. 해킹, 해킹 - Gerben Kleijn의 가이드를 사용하여 새 놀이터에서 악용 연습을 하세요.
  5. 레벨 업 - 새 IAM 권한 상승 놀이터 계정에 대해 도구를 실행하세요 (예: Cloudsplaining, AWSPX, Principal Mapper, Pacu).

상세 사용법

블로그 포스트: IAM Vulnerable - AWS IAM 권한 상승 놀이터

빠른 시작

이 빠른 시작은 IAM Vulnerable을 AWS 계정에서 가능한 한 빨리 실행하기 위한 의견이 반영된 접근 방식을 설명합니다. 이미 많은 단계를 완료했을 수도 있고, 현재 구성에 맞게 조정하고 싶을 수도 있습니다. 추가 구성 옵션은 이 저장소의 기타 사용 사례 섹션을 확인하세요.

  1. AWS 계정을 선택하거나 생성하세요. (프로덕션 리소스나 민감한 데이터가 있는 계정은 사용하지 마십시오!)
  2. Terraform 실행 시 사용할 관리자 액세스 권한이 있는 루트가 아닌 사용자를 생성하세요.
  3. 해당 사용자의 액세스 키를 생성하세요.
  4. AWS CLI를 설치하세요.
  5. 새로 생성한 관리자 사용자를 기본 프로필로 AWS CLI를 구성하세요.
  6. aws sts get-caller-identity 명령을 실행하여 CLI가 예상대로 작동하는지 확인하세요.
  7. Terraform 바이너리를 설치하고 바이너리 위치를 PATH에 추가하세요.
  8. git clone https://github.com/BishopFox/iam-vulnerable
  9. cd iam-vulnerable/
  10. terraform init
  11. (선택 사항) export TF_VAR_aws_local_profile=PROFILE_IN_AWS_CREDENTIALS_FILE_IF_OTHER_THAN_DEFAULT
  12. (선택 사항) export TF_VAR_aws_local_creds_file=FILE_LOCATION_IF_NON_DEFAULT
  13. (선택 사항) terraform plan
  14. terraform apply

정리

IAM Vulnerable이 생성한 모든 리소스를 제거하려면 다음 명령을 실행하면 됩니다:

  1. cd iam-vulnerable/
  2. terraform destroy

대체 정리 방법 (Terraform 상태가 손실된 경우)

Terraform을 사용하여 iam-vulnerable을 배포했지만 더 이상 상태 파일에 액세스할 수 없고 (terraform destroy가 작동하지 않는 경우) 다음 정리 스크립트를 사용할 수 있습니다:```bash

Python version (requires boto3)

./cleanup-scripts/cleanup_iam_vulnerable.py --dry-run

Bash version (requires AWS CLI and jq)

./cleanup-scripts/cleanup_iam_vulnerable.sh --dry-run

root@kitploit:~
이 스크립트는 다음을 수행합니다:
- AWS 계정에서 모든 IAM 취약 리소스를 자동으로 식별합니다.
- 진행 전에 삭제될 내용을 정확히 보여줍니다.
- 종속성 충돌을 피하기 위해 적절한 순서로 리소스를 삭제합니다.
- AWS 프로필을 지원하고 상세 로깅을 제공합니다.

**중요**: 먼저 `--dry-run`으로 실행하여 삭제될 내용을 확인하세요. 자세한 사용법은 `cleanup-scripts/CLEANUP_README.md`를 참조하십시오.

## 방금 생성된 리소스는 무엇인가요?

Terraform 바이너리는 기본 AWS 계정 프로필 자격 증명을 사용하여 다음을 생성했습니다:
* **31명의 사용자, 역할 및 정책** 각각은 플레이그라운드 계정의 관리 권한에 이르는 고유한 익스플로잇 경로를 가지고 있습니다.
* 특정 익스플로잇 경로를 완전히 실현하는 데 필요한 추가 사용자, 그룹, 역할 및 정책
* 다른 도구의 탐지 기능을 테스트하는 추가 사용자, 역할 및 정책

기본적으로 이 Terraform 모듈에 의해 생성된 모든 역할은 Terraform을 실행하는 데 사용한 사용자 또는 역할이 맡을 수 있습니다.
* Terraform이 기본 프로필이 아닌 다른 프로필을 사용하도록 하거나 `assume_role_policy` ARN을 하드코딩하려면 [다른 사용 사례](#other-use-cases)를 참조하세요.

## 비용은 얼마나 드나요?

IAM vulnerable을 **기본 구성으로 배포하는 데는 비용이 들지 않습니다**. 다음 섹션에서 비용이 발생하는 비기본 모듈을 활성화하는 방법과 각 모듈을 배포할 경우 월별 비용을 확인하세요.

# 모듈식 접근 방식

IAM Vulnerable은 특정 리소스를 모듈로 그룹화합니다. 일부 모듈은 기본적으로 활성화되어 있고(비용 영향이 없는 모듈), 다른 모듈은 기본적으로 비활성화되어 있습니다(배포 시 비용이 발생하는 모듈). 이렇게 하면 필요에 따라 특정 모듈을 활성화할 수 있습니다.

예를 들어, IAM 외부의 리소스를 포함하는 `ssm:StartSession`과 같은 익스플로잇 경로를 사용할 준비가 되면 `iam-vulnerable/main.tf` 파일에서 모듈을 주석 해제하고 `terraform apply`를 다시 실행하여 필요에 따라 이러한 리소스를 배포 및 삭제할 수 있습니다:```
# Uncomment the next four lines to create an ec2 instance and related resources
#module "ec2" {
#  source = "./modules/non-free-resources/ec2"
#  aws_assume_role_arn = (var.aws_assume_role_arn != "" ? var.aws_assume_role_arn : data.aws_caller_identity.current.arn)
#}

ec2 모듈의 주석을 해제한 후, 실행하세요:``` terraform init terraform apply

root@kitploit:~
이제 SSM 권한 상승 경로를 시도하는 데 필요한 구성 요소를 배포했습니다.


## 무료 리소스 모듈

`free-resources` 내에 배포된 모든 항목은 비용이 없습니다:

| 이름 | 기본 상태 | 예상 비용 | 설명 |
| --- | --- | --- | --- |
| privesc-paths  | 활성화 | 없음 | 모든 IAM 권한 상승 경로를 포함합니다 |
| tool-testing  | 활성화 | 없음 | 다양한 IAM 권한 상승 도구의 기능을 평가하는 테스트 케이스를 포함합니다 |

## 유료 리소스 모듈

이러한 추가 모듈을 배포하면 비용이 발생할 수 있습니다:

| 이름 | 기본 상태 | 예상 비용 | 설명 | 필요한 항목 |
| --- | --- | --- | --- | --- |
| EC2  | 비활성화 | :heavy_dollar_sign: <br> 월 $4.50 | EC2 인스턴스와 어디서나 SSH를 허용하는 보안 그룹을 생성합니다 | `ssm-SendCommand` <br> `ssm-StartSession` <br> `ec2InstanceConnect-SendSSHPublicKey` |
| Lambda | 비활성화 | :slightly_smiling_face: <br> 월별 비용은 사용량에 따라 다름 (비용은 0이어야 함) | Lambda 함수를 생성합니다  | `Lambda-EditExistingLambdaFunctionWithRole` |
| Glue | 비활성화 | :heavy_dollar_sign::heavy_dollar_sign::heavy_dollar_sign::heavy_dollar_sign: <br> 시간당 $4 | Glue 개발 엔드포인트를 생성합니다 | `Glue-UpdateExistingGlueDevEndpoint` |
| SageMaker | 비활성화 | 아직 확실하지 않음 | SageMaker 노트북을 생성합니다 | `sageMakerCreatePresignedNotebookURL` |
| CloudFormation | 비활성화 |  :slightly_smiling_face: <br> CloudFormation을 통해 생성된 비밀의 경우 월 $0.40. 스택 자체에 대한 비용은 없거나 거의 없음 | 비밀 관리자에 비밀을 생성하는 CloudFormation 스택을 생성합니다 | `privesc-cloudFormationUpdateStack` |



# 지원되는 권한 상승 경로

| 경로 이름 | IAM 취약 프로필 이름 | 필요한 비기본 모듈 | 익스플로잇 참고자료 |
| --- | --- | --- | --- |
| **카테고리: 다른 사용자에 대한 IAM 권한** |   |   |   |
| IAM-CreateAccessKey | privesc4  | 없음  | :fox_face: [Well, That Escalated Quickly - Privesc 04](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws) <br> :lock: [s3cur3.it IAMVulnerable - Part 3](https://s3cur3.it/home/practicing-aws-security-with-iamvulnerable-part-3) |
| IAM-CreateLoginProfile | privesc5  | 없음  | :fox_face: [Well, That Escalated Quickly - Privesc 05](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws) <br> :lock: [s3cur3.it IAMVulnerable - Part 3](https://s3cur3.it/home/practicing-aws-security-with-iamvulnerable-part-3)  |
| IAM-UpdateLoginProfile | privesc6  | 없음  | :fox_face: [Well, That Escalated Quickly - Privesc 06](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws) <br> :lock: [s3cur3.it IAMVulnerable - Part 3](https://s3cur3.it/home/practicing-aws-security-with-iamvulnerable-part-3)  |
| **카테고리: 서비스에 PassRole** |   |  |   |
| CloudFormation-PassExistingRoleToCloudFormation | privesc20  | 없음  |:fox_face: [Well, That Escalated Quickly - Privesc 20](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)   |
| CodeBuild-CreateProjectPassRole| privesc-codeBuildProject  | 없음  |   |
| DataPipeline-PassExistingRoleToNewDataPipeline| privesc21  | 없음  | :fox_face: [Well, That Escalated Quickly - Privesc 21](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)  |
| EC2-CreateInstanceWithExistingProfile| privesc3  | 없음  | :fox_face: [Well, That Escalated Quickly - Privesc 03](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws) <br> :lock: [s3cur3.it IAMVulnerable - Part 2](https://s3cur3.it/home/practicing-aws-security-with-iamvulnerable-part-2) |
| Glue-PassExistingRoleToNewGlueDevEndpoint | privesc18  | 없음  | :fox_face: [Well, That Escalated Quickly - Privesc 18](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)  |
| Lambda-PassExistingRoleToNewLambdaThenInvoke | privesc15  |  없음 | :fox_face: [Well, That Escalated Quickly - Privesc 15](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)   |
| Lambda-PassRoleToNewLambdaThenTrigger | privesc16  |  없음 | :fox_face: [Well, That Escalated Quickly - Privesc 16](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)  |
| SageMaker-CreateNotebookPassRole |  privesc-sageNotebook | 없음  | :rhinoceros: [AWS IAM Privilege Escalation - Method 2](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation-part-2/)  |
| SageMaker-CreateTrainingJobPassRole | privesc-sageTraining  |  없음  |   |
| SageMaker-CreateProcessingJobPassRole |  privesc-sageProcessing | 없음   | |
| **카테고리: 정책에 대한 권한** |    |   |
| IAM-AddUserToGroup | privesc13  |  없음  |:fox_face: [Well, That Escalated Quickly - Privesc 13](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)   |
| IAM-AttachGroupPolicy| privesc8  | 없음   | :fox_face: [Well, That Escalated Quickly - Privesc 08](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)  |
| IAM-AttachRolePolicy| privesc9  | 없음   | :fox_face: [Well, That Escalated Quickly - Privesc 09](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)  |
| IAM-AttachUserPolicy| privesc7  | 없음   | :fox_face:  [Well, That Escalated Quickly - Privesc 07](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)  |
| IAM-CreateNewPolicyVersion| privesc1  |  없음 | :fox_face: [Well, That Escalated Quickly - Privesc 01](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws) <br> :lock: [s3cur3.it IAMVulnerable - Part 1](https://s3cur3.it/home/practicing-aws-security-with-iamvulnerable) |
| IAM-PutGroupPolicy | privesc11  | 없음  | :fox_face: [Well, That Escalated Quickly - Privesc 11](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)  |
| IAM-PutRolePolicy | privesc12  | 없음 | :fox_face:  [Well, That Escalated Quickly - Privesc 12](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws) |
| IAM-PutUserPolicy | privesc10  | 없음   | :fox_face: [Well, That Escalated Quickly - Privesc 10](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)  |
| IAM-SetExistingDefaultPolicyVersion | privesc2  | 없음  |  :fox_face: [Well, That Escalated Quickly - Privesc 02](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws) <br> :lock: [s3cur3.it IAMVulnerable - Part 2](https://s3cur3.it/home/practicing-aws-security-with-iamvulnerable-part-2)|
| **카테고리: AWS 서비스를 사용한 권한 상승**|    |   |   |
| EC2InstanceConnect-SendSSHPublicKey | privesc-instanceConnect  |  EC2  | 🔑 [AWS IAM privilege escalation paths](https://pswalia2u.medium.com/aws-iam-privilege-escalation-paths-cba36be1aa9e) |
| CloudFormation-UpdateStack | privesc-cfUpdateStack | CloudFormation | 🔑 [AWS IAM privilege escalation paths](https://pswalia2u.medium.com/aws-iam-privilege-escalation-paths-cba36be1aa9e) |
| Glue-UpdateExistingGlueDevEndpoint| privesc19  |  Glue | :fox_face: [Well, That Escalated Quickly - Privesc 19](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)  |
| Lambda-EditExistingLambdaFunctionWithRole| privesc17  |  Lambda  | :fox_face: [Well, That Escalated Quickly - Privesc 17](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws) <br> :lock: [s3cur3.it IAMVulnerable - Part 4](https://s3cur3.it/home/practicing-aws-security-with-iamvulnerable-part-4)  |
| SageMakerCreatePresignedNotebookURL | privesc-sageUpdateURL | Sagemaker | :rhinoceros: [AWS IAM Privilege Escalation - Method 3](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation-part-2/) |
| SSM-SendCommand| privesc-ssm-command  |  EC2  | 🔑 [AWS IAM privilege escalation paths](https://pswalia2u.medium.com/aws-iam-privilege-escalation-paths-cba36be1aa9e) |
| SSM-StartSession | privesc-ssm-session  |  EC2  | 🔑 [AWS IAM privilege escalation paths](https://pswalia2u.medium.com/aws-iam-privilege-escalation-paths-cba36be1aa9e) |
| STS-AssumeRole | privesc-assumerole  | 없음   | 🔑 [AWS IAM privilege escalation paths](https://pswalia2u.medium.com/aws-iam-privilege-escalation-paths-cba36be1aa9e) |
| **카테고리: AssumeRole 정책 업데이트** |   |   |   |
| IAM-UpdatingAssumeRolePolicy |  privesc14 | 없음  | :fox_face: [Well, That Escalated Quickly - Privesc 14](https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws)   |



# 기타 사용 사례

#### 기본 - `terraform.tfvars`가 구성되지 않음
* 기본 AWS 프로필(Default)을 사용하여 배포
* 생성된 모든 역할은 Terraform을 실행하는 데 사용된 주체(기본 프로필에 지정됨)가 수임할 수 있습니다.

#### 기본 프로필이 아닌 다른 프로필을 사용하여 Terraform 실행
* `terraform.tfvars.example`을 `terraform.tvvars`로 복사
* `#aws_local_profile = "profile_name"` 줄의 주석을 해제하고 사용하려는 프로필 이름을 입력하세요
* 기본 프로필이 아닌 프로필을 사용하면서 `aws_credentails_file_example` 파일을 계속 사용하려면 다음 명령을 사용하여 기본 프로필이 아닌 프로필 이름에서 작동하는 AWS 자격 증명 파일을 생성할 수 있습니다. (@scriptingislife에게 감사드립니다)
   * `nondefaultuser`를 사용 중인 프로필 이름으로 바꾸는 것을 잊지 마세요):
   * `tail -n +7 aws_credentials_file_example | sed -e "s/111111111111/$(aws sts get-caller-identity | grep Account | awk -F\" '{print $4}')/g;s/default/nondefaultuser/g" >> ~/.aws/credentials`

#### 호출자 외의 ARN을 새로 생성된 역할을 수임할 수 있는 주체로 사용
* `terraform.tfvars.example`을 `terraform.tvvars`로 복사
* `#aws_assume_role_arn = "arn:aws:iam::112233445566:user/you"` 줄의 주석을 해제하고 사용하려는 ARN을 입력하세요

생성되면 각 권한 상승 역할은 사용자가 지정한 주체(ARN)가 수임할 수 있습니다.

#### 계정 X에서 리소스를 생성하되, 계정 Y의 ARN을 새로 생성된 역할을 수임할 수 있는 주체로 사용

다른 계정으로 역할을 수임하는 AWS CLI 프로필을 구성한 경우, 프로필 이름을 지정하고 다른 역할로 수임하는 데 사용할 ARN을 수동으로 지정해야 합니다.

아래 예시에서는 `"prod-cross-org-access-role"`에 연결된 계정에 리소스가 생성되지만, Terraform이 생성하는 각 역할은 다른 계정에 속한 `"arn:aws:iam::112233445566:user/you"`가 액세스할 수 있습니다.```
aws_local_profile = "prod-cross-org-access-role"
aws_assume_role_arn = "arn:aws:iam::112233445566:user/you"

FAQ

IAM Vulnerable은 CloudGoat, Terragoat, SadCloud와 어떻게 비교되나요?

이 모든 도구는 Terraform을 사용하여 의도적으로 취약한 인프라를 AWS에 배포합니다. 그러나 IAM Vulnerable의 초점은 IAM 권한 상승(privilege escalation) 이며, 다른 도구들은 IAM privesc를 다루지 않거나 일부 시나리오만 다룹니다.

  • CloudGoat은 8개의 고유 시나리오를 배포하며, 그 중 일부는 IAM privesc 경로를 다루고, 다른 시나리오는 EC2 메타데이터의 비밀 등 다른 영역에 초점을 맞춥니다.
  • Terragoat와 SadCloud는 모두 클라우드 계정을 잘못 구성할 수 있는 다양한 방법에 초점을 맞추지만, IAM privesc 경로는 다루지 않습니다. 사실, IAM Vulnerable을 Terragoat나 SadCloud와 함께 적용하면 누락된 퍼즐 조각이라고 생각할 수 있습니다. 의도적으로 취약하게 구성된 설정들은 서로 보완합니다.

IAM Vulnerable은 Cloudsplaining, AWSPX, Principal Mapper, Pacu, Cloudmapper, ScoutSuite와 어떻게 비교되나요?

이 모든 도구는 AWS 환경의 기존 잘못된 구성을 식별하는 데 도움을 줍니다. Pacu와 같은 일부 도구는 잘못된 구성을 악용하는 데도 도움을 줍니다. 반면, IAM Vulnerable은 의도적으로 취약한 인프라를 생성합니다. Principal Mapper(PMapper), AWSPX, Pacu, Cloudsplaining과 같은 도구를 실제로 사용하는 방법을 배우고 싶다면, IAM Vulnerable이 적합합니다.

Terraform을 사용해 본 적이 없고 두렵습니다. 도와주세요!?

저도 Terraform과 계정에 리소스를 생성하는 프로젝트를 두려워했지만, Terraform이 어떻게 작동하는지 알게 되었습니다. 다음은 불안을 완화시킬 수 있는 몇 가지 사항입니다.

  • 이 단일 목적으로 AWS 계정을 사용함으로써, 이 저장소가 다른 중요 자산에 부정적인 영향을 미치지 않을 것이라고 안심할 수 있습니다. AWS 조직 내 별도 계정에 IAM Vulnerable을 배포하더라도, 조직의 다른 계정들은 이 플레이그라운드 계정의 폭발 반경 밖에 있으므로 안심할 수 있습니다.
  • terraform plan 명령어는 드라이 런입니다. 실제로 terraform apply를 실행하기 전에 무엇이 배포될지 정확히 보여줍니다.
  • terraform apply한 모든 것을 terraform destroy하여 깨끗한 상태로 되돌릴 수 있다는 사실을 안심하세요.
  • 비용이 걱정된다면 Infracost를 확인하세요. 이 바이너리를 다운로드하고, 무료 API 키를 등록한 후 iam-vulnerable과 같은 Terraform 디렉토리 내에서 실행합니다. 이 도구는 terraform plan을 실행하고 현재 구성된 대로 계획에 대한 월별 비용을 계산합니다. 이 도구는 위의 모듈 비용 추정 테이블을 채우는 데 사용한 도구입니다.

이 도구와 CloudGoat, Terragoat, SadCloud 같은 다른 도구를 동일한 AWS 계정에서 실행할 수 있나요?

네. 각 도구는 자체 Terraform 상태를 별도로 유지하지만, 모든 리소스는 동일한 계정에서 생성, 업데이트 및 삭제되며 공존할 수 있습니다.

이전 작업 및 좋은 참고 자료

  • https://github.com/RhinoSecurityLabs/AWS-IAM-Privilege-Escalation
  • https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/
  • https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation-part-2/
  • https://labs.bishopfox.com/tech-blog/privilege-escalation-in-aws
  • https://ermetic.com/whats-new/blog/aws/auditing-passrole-a-problematic-privilege-escalation-permission/
도구 다운로드
  • (선택 사항) IAM 취약 프로필을 AWS 자격 증명 파일에 추가하고 계정 번호를 변경하세요.
    • 다음 명령은 현재 AWS 자격 증명 파일의 백업을 만들고, 저장소의 예제 자격 증명 파일을 가져와서 자리 표시자 계정을 대상 계정 번호로 바꾼 후, 마지막으로 모든 IAM Vulnerable 권한 상승 프로필을 자격 증명 파일에 추가하여 사용할 수 있도록 합니다:
    • cp ~/.aws/credentials ~/.aws/credentials.backup
    • tail -n +7 aws_credentials_file_example | sed s/111111111111/$(aws sts get-caller-identity | grep Account | awk -F\" '{print $4}')/g >> ~/.aws/credentials