
Terraform을 사용하여 설계상 취약한 AWS IAM 권한 상승 실습 환경을 직접 만들어 보세요.
Terraform을 사용하여 자신만의 의도적으로 취약하게 설계된 AWS IAM 권한 상승 놀이터를 만드세요.

IAM Vulnerable은 Terraform 바이너리와 AWS 자격 증명을 사용하여 선택한 AWS 계정에 250개 이상의 IAM 리소스를 배포합니다. 몇 분 안에 권한 상승을 허용하는 취약한 IAM 구성 식별 및 악용 방법을 학습하기 시작할 수 있습니다.
안녕하세요. IAM Vulnerable은 여전히 AWS IAM 권한 상승의 기본 구성 요소를 이해하는 데 매우 유용합니다. 하지만 IAM Vulnerable을 만든 지 몇 년 후, 저는 CloudFoxable을 만들었습니다. 이는 CTF 스타일 버전으로, 클라우드 침투 테스트의 기초를 보다 전체적으로 가르쳐줍니다. - @sethsec
저희 RedSec 디스코드 서버에 참여하세요.
🦊 현재 지원되는 권한 상승 경로: 31
블로그 포스트: IAM Vulnerable - AWS IAM 권한 상승 놀이터
이 빠른 시작은 IAM Vulnerable을 AWS 계정에서 가능한 한 빨리 실행하기 위한 의견이 반영된 접근 방식을 설명합니다. 이미 많은 단계를 완료했을 수도 있고, 현재 구성에 맞게 조정하고 싶을 수도 있습니다. 추가 구성 옵션은 이 저장소의 기타 사용 사례 섹션을 확인하세요.
aws sts get-caller-identity 명령을 실행하여 CLI가 예상대로 작동하는지 확인하세요.git clone https://github.com/BishopFox/iam-vulnerablecd iam-vulnerable/terraform initexport TF_VAR_aws_local_profile=PROFILE_IN_AWS_CREDENTIALS_FILE_IF_OTHER_THAN_DEFAULTexport TF_VAR_aws_local_creds_file=FILE_LOCATION_IF_NON_DEFAULTterraform planterraform applycp ~/.aws/credentials ~/.aws/credentials.backuptail -n +7 aws_credentials_file_example | sed s/111111111111/$(aws sts get-caller-identity | grep Account | awk -F\" '{print $4}')/g >> ~/.aws/credentials정리
IAM Vulnerable이 생성한 모든 리소스를 제거하려면 다음 명령을 실행하면 됩니다:
cd iam-vulnerable/terraform destroy대체 정리 방법 (Terraform 상태가 손실된 경우)
Terraform을 사용하여 iam-vulnerable을 배포했지만 더 이상 상태 파일에 액세스할 수 없고 (terraform destroy가 작동하지 않는 경우) 다음 정리 스크립트를 사용할 수 있습니다:```bash
./cleanup-scripts/cleanup_iam_vulnerable.py --dry-run
./cleanup-scripts/cleanup_iam_vulnerable.sh --dry-run
이 스크립트는 다음을 수행합니다:
- 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
이제 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` |
# 지원되는 권한 상승 경로