본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

서버 사이드 요청 위조(Server-Side Request Forgery, SSRF)는 웹 애플리케이션이 사용자가 넘긴 주소(URL)를 검증 없이 서버에서 직접 요청하도록 만들어, 공격자가 서버를 대신 시켜 내부망이나 외부에서 닿을 수 없는 자원에 접근하는 공격이다.

이미지 URL 미리보기, 웹훅 등록, 문서·PDF 변환, 외부 API 연동처럼 서버가 주소를 받아 대신 가져오는 기능이 공격 대상이다. 요청을 보내는 주체가 공격자의 브라우저가 아니라 서버 자신이라는 점이 핵심이다. 서버는 보통 방화벽 안쪽에 있어 외부에서 막힌 관리 페이지, 내부 API, 데이터베이스, 클라우드의 인스턴스 메타데이터 서비스에 접근할 수 있으므로, 공격자는 그 신뢰 관계를 빌려 쓴다. OWASP Top 10 2021 에서 A10 으로 처음 따로 묶였다 → OWASP Top 10(2021)

정상 요청 : GET /preview?url=https://images.example.com/a.png
공격 요청 : GET /preview?url=http://127.0.0.1:8080/admin
            GET /preview?url=http://169.254.169.254/latest/meta-data/
            GET /preview?url=file:///etc/passwd
  • 루프백·사설 주소로 내부 관리 기능을 부르거나 내부 포트를 훑는다(내부망 스캔)
  • 클라우드 인스턴스 메타데이터 주소(169.254.169.254)에서 임시 자격 증명을 빼낸다
  • file·gopher 같은 다른 URL 스킴으로 로컬 파일을 읽거나 내부 서비스에 임의의 요청을 만든다
  • 응답을 그대로 돌려주지 않아도 응답 시간·오류 차이로 내부 상태를 짐작하는 블라인드 SSRF 가 있다
  • 서버가 요청할 수 있는 도메인·주소를 허용 목록으로 정한다. 차단 목록만으로는 10진수 IP, IPv6 표기, 리다이렉트, DNS 재바인딩으로 우회된다
  • 주소를 해석한 뒤의 IP 가 루프백·사설·링크 로컬 대역이면 막는다. 리다이렉트를 따라가지 않거나 따라간 뒤 다시 검사한다
  • http·https 외의 스킴을 막는다
  • 받은 응답을 사용자에게 그대로 돌려주지 않는다
  • 서버의 나가는 연결을 네트워크에서 제한하고, 클라우드에서는 토큰을 먼저 받아야 하는 메타데이터 방식(AWS IMDSv2 등)을 쓴다 → 컨테이너 보안

비슷한 웹 공격과 구분

편집 원본 편집
공격 요청을 보내는 쪽 핵심
서버 사이드 요청 위조(SSRF) 서버 서버가 공격자가 준 URL 을 대신 요청한다. 내부망·메타데이터에 접근
크로스사이트 요청위조(CSRF) 피해자의 브라우저 로그인한 사용자의 브라우저가 공격자가 꾸민 요청을 사용자 권한으로 보낸다
크로스사이트 스크립트(XSS) 피해자의 브라우저 공격자 스크립트가 피해자 브라우저에서 실행된다
HTTP 요청 스머글링 공격자 → 프런트엔드·백엔드 서버 Content-Length 와 Transfer-Encoding 을 함께 넣어 두 서버가 요청 경계를 다르게 해석하게 하고, 뒤에 숨긴 요청을 밀반입한다