본문 바로가기

CloudGoat

(9)
codebuild_secrets (Hard) Write up 문제에서 제공받은 Access Key와 Secret Key를 통해 Profile을 생성하고, sts get-caller-identity 명령을 사용하여 User에 대한 정보를 확인한다.profile의 이름을 GuardDuty로 설정한 이유는, 해당 시나리오를 풀며 GuardDuty가 위협 탐지를 어디까지 진행할 수 있을지에 대한 테스트를 해보기 위함이였으며 이에 대한 결과는 '공격자가 숨기려는 흔적, GuardDuty는 어디까지 잡을까?' 라는 이름으로 글을 작성해두었다.solo라는 이름의 User임을 확인할 수 있었으며 시나리오의 목표인 RDS 데이터베이스의 Secret 값 탈취를 위해 해당 User의 Group, Policy, Role 등을 조회하여 동작할 수 있는 권한을 확인해 보기로 했다. lis..
vulnerable_lambda(Medium) Write up 문제에서 제공받은 Access Key와 Secret Key를 통해 Profile을 생성하고, sts get-caller-identity 명령을 사용하여 User에 대한 정보를 확인한다.cg-bilbo-cgid8yo1qu7twp라는 이름의 User임을 확인할 수 있었으며 해당 User의 Group, Policy, Role 등을 조회하여 부여된 권한을 확인해 보기로 했다. 우선 list-groups-for-user 명령을 통해 User가 소속된 Group을 확인했고,소속된 Group은 없는 것으로 확인되었다. 다음으로 User에게 연결된 Policy를 확인해 보자.User에게 연결된 관리형 정책을 list-attached-user-policies 명령으로 조회했지만,관리형 정책은 연결되어있지 않았다.이후 인..
iam_privesc_by_attachment(Medium) Write up 문제에서 제공받은 Access Key와 Secret Key를 통해 Profile을 생성하고, sts get-caller-identity 명령을 사용하여 User에 대한 정보를 확인한다.kerrigan라는 이름의 User임을 확인할 수 있었으며 해당 User의 Group, Policy, Role 등을 조회하여 부여된 권한을 확인해 보기로 했다. 우선 list-groups-for-user 명령을 통해 kerrigan이라는 User가 소속된 Group를 확인했고, AccessDenied가 뜨며 권한이 존재하지 않아 조회할 수 없었다. policy에 대한 정보를 조회해보기 위해 list-user-policies 와 list-attached-user-policies 명령을 통해 User에게 연결된 관리형 정책과 ..
RDS_snapshot(Medium) Write up 시나리오를 생성하면 EC2 IP주소와 EC2에 SSH로 붙을 수 있는 ssh_command 명령어를 준다.1. EC2 IP 분석웹을 접속 해보면 Time out이 발생한다.즉, 보안그룹에 로컬 호스트 IP주소의 인바운드가 허용되어 있지 않다는 것을 알 수 있다.2. ssh_command 분석ssh_command 명령어를 사용해 직접 EC2에 붙어보자.※주의!!Cloudgoat를 pipx를 이용해 다운 받았다면 pem키가 ~/.local/lib/{python버전}/site-packages/cloudgoat/{rds_snapshot_랜덤값}/cloudgoat 경로에 존재한다.로컬 호스트에서 ssh는 접속이 가능하다.권한을 확인해보면 root 권한으로 접근이 가능하다.EC2 권한 확인을 위해 aws cli를 ..
iam_privesc_by_rollback(Easy) Write Up 실습문제에서 제공하는 credential 정보를 활용하여 profile을 생성한 후, sts-get-caller-identity 명령을 사용하여 profile에 부여된 기본적인 user 정보를 확인한다.1. User 분석제공받은 Access Key에 대한 정보를 알았으니 iam user, policy, role등을 확인하여 활용할 수 있는 권한이 무엇인지 확인한다. raynor을 제외한 또 다른 user가 있는지, 그리고 각 user에 할당된 policy에는 어떤 것이 있는지 확인해보자. 먼저 list-users 명령을 통해 user list를 확인해보면, 다른 user는 확인되지 않는다.이번에는 raynor에게 할당된 Inline policy와, managed policy를 확인한다. cg-raynor..
SQS_FLAG_Shop(Easy) Write-up 시나리오를 생성하면 Access Key, Secret Key, 웹 IP주소를 준다.먼저 웹부터 살펴보자.1. 웹 분석1. 웹 페이지 접속 시 자산과 구매할 수 있는 물건들이 있다. 2. 각 물건들은 현재 자산에 맞게 구매할 수 있고, 구매 시 물품 가격만큼 자산이 차감되며 /recipet 경로에 구매한 물품 리스트가 추가된다.3. 자산은 /charge 경로에서 충전이 가능하며 한 번 충전 후 자산에 반영되기까지 10에서 20초가 소요된다고 적혀있다.4. 메인 페이지 소스코드를 보면 백에 검증 로직이 있어 Client Side 공격으로는 우회가 불가능해보인다.5. 하지만 소스코드의 조건문을 보면 SQS 서비스를 이용하며, 충전할 금액을 JSON 형태로 담아 쿼리를 보내 자산을 충전하는 방식으로 로직이 동작..
iam_privesc_by_key_rotation(Easy) Write Up 실습문제에서 제공하는 Access Key와 Secret Key를 통해 프로필을 생성한다. 1. 현재 할당된 IAM User 분석먼저 aws sts get-caller-identity 명령어를 사용하여, 내 계정 정보를 확인한다. { "UserId": "AIDAW5WU5AJN6EBJ6UVK7", "Account": "476114125403", "Arn": "arn:aws:iam::476114125403:user/manager_cgidyxmu2hif5n"}출력 결과를 보면, 현재 사용자는 manager_cgidyxmu2hif5n 인 것을 알 수 있다. manager인 내가 어떤 권한을 가지고 있는지에 따라서, 다음에 확인할 수 있는 명령어가 달라지기 때문에 먼저 aws iam list-use..
lambda_privesc(Easy) Write up 실습문제에서 제공하는 Access key와 Secret Key를 이용하여 lambda라는 이름을 가진 profile을 생성한다.※편의를 위해 각 변수들은 환경변수로 등록 후 변수명으로 사용※1. 유저 및 정책 확인그후 aws sts get-caller-identity --profile lambda 명령어를 사용해 어떠한 유저인지 확인한다.유저명이 chris-cgidtoadagya4b 인 것을 확인 할 수 있다.※환경 변수 등록(이하 생략) export userName=chris-cgidtoadagya4b User 명을 알았으니 아래 사항들을 확인해 보았다.1. 유저 그룹 2. Inline Policy3. Managed Policy명령어 실행 결과 관리형 정책만 존재하는 것으로 확인되었다. ※ expor..