이것저것/Cloud

[CloudGoat] ecs_efs_attack

# 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  (0) 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