← 목록으로

SSRF (Server-Side Request Forgery): 서버가 대신 요청하게 만들기

[Web] Web · 작성: 2026-07-19 19:15:17 · 조회 4

SSRF는 서버가 사용자 입력으로 받은 URL로 자체적으로 요청을 보내는 기능을 악용해서, 원래는 외부에서 접근 못 하는 내부망 리소스에 접근하는 공격이다. URL 미리보기, 웹훅 등록, 이미지/PDF 렌더링, "URL로 가져오기" 같은 기능에서 자주 나온다.

원리

POST /api/fetch-preview
{ "url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/" }

서버가 이 URL로 그대로 요청을 보내면, 클라우드 인스턴스의 메타데이터 엔드포인트(AWS/GCP/Azure 공통 패턴)에서 임시 자격증명을 통째로 가져올 수 있다. 이게 SSRF가 다른 취약점보다 위험도가 높게 평가되는 이유 — 성공하면 바로 클라우드 계정 권한 탈취로 이어지는 경우가 많다.

그 외에도:

탐지 방법

  1. URL을 입력받는 기능을 모두 찾는다 (미리보기, 웹훅, 아바타 URL 업로드, PDF 변환 등)
  2. 우선 자신이 통제하는 서버(예: requestbin, 직접 띄운 HTTP 리스너)로 요청을 유도해서 SSRF 자체가 성립하는지 확인
  3. 성립하면 http://169.254.169.254/..., http://localhost:<내부포트>, http://127.0.0.1, 10.x/172.16.x/192.168.x 내부 대역으로 확장
  4. IP 필터링이 있다면 우회 시도: http://0177.0.0.1(8진수), http://2130706433(정수 표현), DNS 리바인딩, 리다이렉트 체인(http://attacker.com → 302 → 내부 주소)

방어

Web 카테고리의 글 (5/11)

  1. SQL Injection: 원리, 탐지, 방어
  2. XSS (Cross-Site Scripting): Stored / Reflected / DOM 차이와 방어
  3. CSRF (Cross-Site Request Forgery): 원리와 방어
  4. IDOR / BOLA: 권한 검증이 빠졌을 때
  5. SSRF (Server-Side Request Forgery): 서버가 대신 요청하게 만들기
  6. 파일 업로드 취약점: 웹쉘로 이어지는 경로
  7. 안전하지 않은 역직렬화 (Insecure Deserialization)
  8. SSTI (Server-Side Template Injection): 원리와 탐지
  9. OS Command Injection: 원리와 필터 우회
  10. JWT 취약점: alg=none부터 알고리즘 컨퓨전까지
  11. Race Condition (TOCTOU) 취약점
← IDOR / BOLA: 권한 검증이 빠졌을 때 파일 업로드 취약점: 웹쉘로 이어지는 경로 →