728x90
# start
$ ./cloudgoat.py ecs_efs_attack
$ cd ecs_efs_attack_~
[+] start.txt
- 새로운 값들을 start.txt에서 제시하고 있다.
- 느낌상.. 보통 start.txt의 정보들로 시작을 하니까 ssh 연결을 먼저 해봐야할 듯하다.
[+] goal
Mount the "cg-efs-[CG_ID]" efs and obtain the flag.
- 약간 CTF 느낌으로 플래그를 찾아야하는 것 같다.
# Exploit Scenario - (1)
step1. ssh connect (EC2 instance - ruse_box)
step2. mount the filesystem
# Exploit Scenario - (2)
step1. connect to ssh (ruse_box)
$ ssh -i cloudgoat ubuntu@3.235.134.80
$ aws configure --profile ruse
- access key와 secret key는 공란으로 두고 configure 한다.
step2-1. iam
$ aws iam list-policies --profile ruse
$ aws iam get-policy-version --policy-arn arn:aws:iam::356473621289:policy/cg-ec2-ruse-role-policy-ecs_efs_attack_cgidunpmzsdic9 --version-id v1
- 현재 사용자가 실행할 수 있는 동작들에 대해 확인할 수 있다.
- ecs, iam, ec2 서비스의 특정 명령들에 대한 권한이 주어져있으므로 하나씩 확인해봐야한다.
$ aws iam get-policy-version --policy-arn arn:aws:iam::356473621289:policy/cg-efs-admin-role-policy-ecs_efs_attack_cgidunpmzsdic9 --version-id v1
- "VisualEditor0"라는 사용자 ID를 가진 경우 실행할 수 있는 cg-efs-admin-role 권한으로 Client를 Mount할 수 있도록 권한 설정이 되어있다.
$ aws iam list-roles --profile ruse
$ aws iam list-attached-role-policies --role-name cg-efs-admin-role-ecs_efs_attack_cgidunpmzsdic9
step2-2. ec2
$ aws ec2 describe-instances --profile ruse
step3. ecs cluster
ECS(Elastic Container Services) Cluster
ECS의 task가 배포되는 container instance들을 논리적 그룹으로 묶는 단위
task를 배포하기 위한 instance는 반드시 cluster에 등록되어야 한다.
- https://wooono.tistory.com/133
$ aws ecs list-clusters --profile ruse
$ aws ecs list-services --cluster arn:aws:ecs:us-east-1:356473621289:cluster/cg-cluster-ecs_efs_attack_cgidunpmzsdic9 --profile ruse
- 앞서 확인한 cluster에 등록된 서비스 정보를 확인한다.
$ aws ecs describe-services --cluster arn:aws:ecs:us-east-1:356473621289:cluster/cg-cluster-ecs_efs_attack_cgidunpmzsdic9 --profile ruse --services arn:aws:ecs:us-east-1:356473621289:service/cg-cluster-ecs_efs_attack_cgidunpmzsdic9/cg-webapp-ecs_efs_attack_cgidunpmzsdic9
- webapp 서비스에 대해 좀 더 자세히 확인할 수 있다.
- task definition 정보를 얻을 수 있다.
$ aws ecs describe-task-definition --task-definition arn:aws:ecs:us-east-1:356473621289:task-definition/webapp:1 --profile ruse
$ aws ecs describe-task-definition --task-definition arn:aws:ecs:us-east-1:356473621289:task-definition/webapp:1 --profile ruse > task_def.json
$ aws ecs register-task-definition --generate-cli-skeleton --profile ruse > task_template.json
aws task template
task definitino을 새로 생성하기 위한 기본 template을 제공한다.
파라미터들이 쭉 써있고, 필요에 따라 파라미터의 값들을 채워주면 된다.
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html
- task definition 파일을 다운로드(복사)한다.
- "--generate-cli-skeleton" 옵션을 통해 모든 파라키터를 편집하거나 입력할 수 있는 json 또는 yaml 형식의 파일을 생성할 수 있다.
169.254.169.254/latest/meta-data/iam/security-credentials
# trouble shooting 🚀
create 중 발생한 Error - VPC 수 제한
>> 본인의 aws 계정으로 로그인해 [VPC]에 들어간다.
들어가서 필요없는 VPC를 삭제한다.
(아마 free라 그런지 5개로 제한되어있는 듯 하다)
SMALL
'이것저것 > Cloud' 카테고리의 다른 글
[CloudGoat] codebuild_secrets (1) | 2021.08.19 |
---|---|
[CloudGoat] 6. rce_web_app (0) | 2021.08.18 |
[CloudGoat] 5. ec2_ssrf (0) | 2021.08.17 |
[CloudGoat] 4. iam_privesc_by_attachment (0) | 2021.08.17 |
[CloudGoat] 3. cloud_breach_s3 (0) | 2021.08.16 |