SSRF란?

브라우저가 변조된 요청을 보내는 CSRF와 다르게, 웹 서비스의 권한으로 서버가 의도하지 않은 경로에 변조된 네트워크 요청을 보내게 만드는 취약점이다.

기본 공격 개념

외부망 DMZ에 노출된 웹 애플리케이션 API 서버와 내부의 마이크로 서비스 간 통신 시 사용자의 입력 값에 개발자가 의도하지 않은 요청이 전송되면 웹 서비스의 권한으로 변조된 요청을 보낼 수 있다.

발생 원인 — 신뢰의 전이

핵심 원리는 ‘신뢰의 전이(Trust Delegation)’ 이다.

  • 외부 방화벽은 외부 사용자의 접근을 엄격히 차단
  • 내부 네트워크에 있는 서버들끼리는 서로를 신뢰 → 보안 검사를 느슨하게 처리
  • 공격자는 이 신뢰 관계를 악용해 외부에서 접근 불가능한 내부 자원을 서버가 대신 호출하게 만든다
공격자 ──── HTTP Request ────► 외부 웹서버 (DMZ)
                                      │
                              내부 신뢰 관계 악용
                                      │
                                      ▼
                              내부 서비스 (Internal API, DB, Cloud Metadata 등)

마이크로서비스 (MSA)와 SSRF

마이크로서비스 아키텍처는 소규모의 독립적인 서비스들이 잘 정의된 API를 통해 통신하는 방식이다. 각 서비스는 내부 네트워크에서 서로를 신뢰하므로, SSRF 취약점이 발생하면 공격자는 내부 서비스 전체에 접근할 수 있다.

주요 공격 시나리오

1. 내부 네트워크 스캐닝

http://internal.service/admin
http://192.168.1.1/
http://localhost:8080/actuator

2. 클라우드 메타데이터 탈취

# AWS EC2
http://169.254.169.254/latest/meta-data/iam/security-credentials/

# GCP
http://metadata.google.internal/computeMetadata/v1/

# Azure
http://169.254.169.254/metadata/instance?api-version=2021-02-01

3. 내부 파일 읽기

file:///etc/passwd
file:///proc/self/environ

필터 우회 기법

우회 방법예시
IP 10진수 변환http://2130706433/ (= 127.0.0.1)
IP 8진수http://0177.0.0.1/
IPv6http://[::1]/
DNS 리바인딩공격자 도메인이 내부 IP로 resolve
URL 인코딩http://127.0.0.%31/
리다이렉트공격자 서버에서 내부 URL로 302 리다이렉트

방어 방법

  1. 사용자 입력 URL 화이트리스트 검증
  2. 내부 IP 대역 블랙리스트 적용 (127.0.0.1, 10.x.x.x, 172.16.x.x, 192.168.x.x)
  3. DNS resolution 후 IP 재검증 (DNS 리바인딩 방어)
  4. 응답 내용 필터링

ssrf web-hacking