
실습문제에서 제공하는 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-policy라는 이름의 inline policy가 attached 되어있는 것을 확인해볼 수 있다.
2. Policy 분석
이제 policy의 내용을 통해, user에게 할당된 권한을 확인하고자 한다. policy와 관련한 cli 명령어로는 get-policy 명령어와, get-policy-version 명령어를 사용할 수 있다. 두개의 결과값을 통해 비슷해보이는 두 명령어 간의 차이를 알아보자.

먼저, get-policy 명령어에 대한 결과이다. Policy에 대한 version, attached 된 횟수, 권한 경계(permission boundary), Description, 생성/업데이트 날짜, 태그 등의 기본적인 메타데이터 정보만을 확인할 수 있다.
policy에 대한 JSON으로 작성된 구체적인 내용을 확인하기 위해서는, get-policy-version 명령을 사용해야한다. 우리가 앞선 get-policy 명령을 통해 현재 버전이 v1인 것을 알았으니, --version-id 값으로 v1을 넘겨 policy의 내용을 확인해준다.

여러 권한 중, SetDefaultPolicyVersion 권한이 눈에 띈다. 이 권한은 IAM Managed Policy가 여러 버전이 존재할때, 특정 버전을 Default로 설정할 수 있도록 하는 권한이다. IAM Managed Policy는 최대 5개의 버전을 가질 수 있지만, 한번에 하나의 버전만 Default로 활성화할 수 있다.
그럼 혹시, v1말고 다른 권한이 있는지 궁금해지지 않는가? 한번 찾아보자. 방법은 앞서 사용한 get-policy-version 명령의, version-id값을 변경해가면서 확인해보자.

v2 버전의 정책은, 특정 192.0.2.0/24, 203.0.113.0/24가 아닌 IP address에 대해서는 차단하는 정책이다.

v3 버전의 정책은, 모든 리소스에 대한 모든 액션을 허용하는 admin과 같은 권한이 부여되는 정책이다.

v4 버전의 정책은, 2017년 7월 1일부터 2017년 12월 31일까지의 기간 동안, IAM 관련 Get 계열 API를 모든 리소스에 대해 사용할 수 있게 허용하는 정책이다.

v5 버전의 정책은, 콘솔에서 계정 내 s3 bucket에 대해 버킷 목록을 가져올 수 있도록 하고, bucket 내의 object에 대한 목록과 다운로드가 가능하도록 하는 정책이다.
정리해보면 v3 버전의 정책이 모든 리소스에 대해, 모든 액션을 허용하는 즉, admin과 동일한 권한의 정책으로, 해당 버전으로 정책 버전을 변경하면 권한 상승이 가능하다.
3. policy version 변경
다시 돌아와서, raynor에게 할당된 inline policy(cg-raynor-policy-cgidjf5ofg1ey5) 에서 iam:SetDefaultPolicyVersion 권한이 부여되어, Default Version을 변경할 수 있는 권한이 있었다. policy의 default version을 v1에서 v3으로 변경해보자.

이후 cg-raynor-policy-cgidjf5ofg1ey5의 메타데이터 정보를 통해, 현재 할당된 정책의 버전을 확인해보면, v3로 잘 변경되어있는 것을 확인해볼 수 있다.

또한 콘솔에서도, v3 버전의 정책과 동일하게 내용이 변경되어있음을 확인할 수 있다.

'CloudGoat' 카테고리의 다른 글
| iam_privesc_by_attachment(Medium) Write up (0) | 2025.10.30 |
|---|---|
| RDS_snapshot(Medium) Write up (0) | 2025.05.01 |
| SQS_FLAG_Shop(Easy) Write-up (0) | 2025.04.23 |
| iam_privesc_by_key_rotation(Easy) Write Up (0) | 2025.04.20 |
| lambda_privesc(Easy) Write up (0) | 2025.04.20 |