SSRF

1 개요[ | ]

server-side request forgery (SSRF)
서버-사이드 요청 위조, 서버 측 요청 위조
  • 서버가 공격자가 조작한 URL로 요청을 보내도록 유도되어, 외부에서는 접근할 수 없는 내부 또는 특수 엔드포인트에 접근하게 만드는 취약점
  • 서버 기능이 의도하지 않은 리소스에 접근하거나 이를 수정할 수 있을 때 발생하며, API 보안 위험 중 하나로 분류된다.
  • 애플리케이션이 사용자 입력을 기반으로 서버 측 HTTP 요청을 생성할 때, 적절한 검증과 제어가 없으면 내부 네트워크 스캔, 메타데이터 탈취, 권한 상승 등 심각한 보안 사고로 이어질 수 있다.
  • SSRF는 HTTP에 국한되지 않으며, 애플리케이션 구현에 따라 FTP, SMTP, SMB 등의 프로토콜이나 data://, dict://, file://, gopher://, phar:// 등의 스킴이 악용될 수 있다.

2 특징[ | ]

  • 서버 측에서 발생하는 요청이므로 방화벽·네트워크 ACL을 우회할 수 있다.
  • 내부 전용 서비스(예: 127.0.0.1, 169.254.169.254)에 접근 가능해질 수 있다.
  • 클라우드 환경에서 메타데이터 서비스 탈취로 직결되기 쉽다.

Server Side Request Forgery Prevention Cheat Sheet - SSRF Common Flow.png

3 발생 원인[ | ]

  • URL, 호스트, IP 등을 사용자 입력으로 직접 받아 처리하는 설계
  • 리다이렉트 추적을 제한 없이 허용하는 구현
  • DNS 재바인딩(DNS Rebinding)에 대한 방어 부재
  • 내부·외부 네트워크 구분 없이 동일한 HTTP 클라이언트를 사용하는 구조

4 공격 시나리오[ | ]

유형 요청 예시 설명 영향
내부 서비스 접근 GET /fetch?url=http://127.0.0.1:8080/admin 서버가 내부 관리 포트로 요청을 수행 관리자 API 노출
클라우드 메타데이터 탈취 GET /fetch?url=http://169.254.169.254/latest/meta-data/ 클라우드 메타데이터 서비스 접근 IAM 자격 증명 탈취
포트 스캐닝 GET /fetch?url=http://10.0.0.5:22 응답 시간·에러 차이를 이용한 내부 포트 탐색 내부 네트워크 구조 노출
프로토콜/스킴 악용 GET /fetch?url=file:///etc/passwd HTTP 외 스킴을 통한 로컬 리소스 접근 민감 정보 노출

5 유형[ | ]

유형 설명 특징
Basic SSRF 서버의 응답이 공격자에게 직접 전달되는 형태 데이터 직접 탈취 가능
Blind SSRF 응답이 직접 노출되지 않는 형태 시간 지연, 에러, 로그 등을 통해 간접적으로 추론

6 영향[ | ]

  • 내부 관리 API 및 서비스 노출
  • 클라우드 자격 증명 탈취
  • 데이터 유출
  • 추가 공격을 위한 발판 제공

7 탐지 방법[ | ]

  • 사용자 입력으로 URL을 받는 엔드포인트 식별
  • 보안 도구(Burp Suite, ZAP 등)를 이용한 내부 IP 접근 테스트
  • 응답 시간 차이를 이용한 Blind SSRF 여부 확인

8 방어 방법[ | ]

  • 서버에서 임의 URL 요청 기능을 최소화하고, 필요 시 명시적 allowlist 기반으로 제한
  • 요청 스킴을 http/https로 제한하고, IP 직접 입력 및 내부 대역 접근 차단
  • DNS 재바인딩 및 리다이렉트 처리에 대한 추가 검증 적용
  • 서버 egress 트래픽 제어 및 클라우드 메타데이터 서비스 보호(IMDSv2 등)

9 구현 예시 (개념)[ | ]

다음은 SSRF 방어를 위한 일반적인 검증 흐름의 개념 예시이다.

if (!isAllowedHost(url.host)) {
  deny();
}

ip = resolve(url.host);
if (isPrivateIP(ip)) {
  deny();
}

request(url,
  timeout = 2s,
  followRedirect = false
);

10 주요 사례[ | ]

Capital One (2019)
SSRF를 통해 AWS 메타데이터 서비스가 노출되어 대규모 금융·개인정보 유출 사고가 발생하였다.
Microsoft Exchange Server (2021)
SSRF 취약점을 이용한 인증 우회 공격 체인이 대규모로 악용되었다.

11 같이 보기[ | ]

12 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}