csrf, ssrf

agnusdei·2025년 9월 14일

CTF

목록 보기
117/185

1. CSRF (Cross-Site Request Forgery, 클라이언트 측 요청 위조)

  • 설명:
    CSRF는 공격자가 사용자의 브라우저를 속여 사용자가 의도하지 않은 요청을 서버에 보내도록 유도하는 공격입니다. 사용자가 이미 인증된 상태(예: 로그인 세션 유지)를 악용해, 공격자가 악성 요청을 삽입하여 사용자의 권한으로 서버에서 작업을 수행하게 만듭니다.
    • 예시: 사용자가 은행 웹사이트에 로그인한 상태에서 악성 웹사이트를 방문하면, 숨겨진 <form> 태그나 스크립트가 사용자의 세션을 이용해 돈을 이체하는 요청을 서버에 전송.
    • 영향: 권한 있는 사용자의 계정으로 임의의 작업(예: 비밀번호 변경, 자금 이체) 수행.
    • 방지 방법:
      • CSRF 토큰: 각 요청에 고유한 토큰을 포함해 서버에서 검증.
      • SameSite 쿠키: 쿠키에 SameSite 속성 설정(Strict 또는 Lax)으로 타 사이트 요청 제한.
      • 사용자 상호작용 요구: 중요한 작업에 추가 인증(예: 비밀번호 재입력) 요구.

2. SSRF (Server-Side Request Forgery, 서버 측 요청 위조)

  • 설명:
    SSRF는 공격자가 서버로 하여금 임의의 요청(내부 또는 외부 시스템)을 보내도록 유도하는 취약점입니다. 서버가 사용자 입력을 기반으로 요청을 생성할 때, 입력 검증이 부족하면 공격자가 서버를 통해 내부 네트워크의 리소스나 외부 서비스에 접근할 수 있습니다.
    • 예시: 웹 애플리케이션에서 URL 입력란에 http://localhost/admin 또는 http://internal-service를 입력해 서버가 내부 시스템에 접근하도록 유도.
    • 영향: 내부 네트워크의 민감한 데이터 유출, 내부 서비스 조작, 외부 서비스에 대한 DoS 공격 유발.
    • 방지 방법:
      • 입력 유효성 검사: 허용된 URL 화이트리스트 사용.
      • 네트워크 제한: 서버가 접근할 수 있는 리소스 제한(예: 방화벽, VPC 설정).
      • 외부 요청 비활성화: 불필요한 경우 서버의 외부/내부 요청 기능 비활성화.

CSRF와 SSRF의 주요 차이점

구분CSRFSSRF
공격 대상사용자의 브라우저와 인증된 세션서버 자체(서버가 생성하는 요청)
공격 주체사용자의 브라우저가 서버로 요청을 보냄서버가 공격자의 입력을 기반으로 내부/외부 요청을 보냄
목적사용자의 권한을 이용해 서버에서 의도하지 않은 작업 수행서버를 통해 내부 네트워크 접근 또는 외부 서비스 조작
취약점 위치클라이언트-서버 간 요청 검증 부족서버의 요청 처리 로직(입력 검증 부족)
예시 시나리오악성 웹사이트에서 사용자의 세션을 이용해 은행 이체 요청 전송서버에 악성 URL 입력해 내부 데이터베이스 정보 요청
영향 범위사용자의 계정과 관련된 작업(예: 계정 설정 변경, 데이터 수정)서버가 접근 가능한 내부/외부 리소스(예: 내부 API, 클라우드 메타데이터)
방지 메커니즘CSRF 토큰, SameSite 쿠키, 추가 인증URL 화이트리스트, 네트워크 제한, 요청 비활성화

핵심 요약

  • CSRF클라이언트(사용자)의 인증된 세션을 악용해 서버에 요청을 보내는 공격으로, 사용자 중심의 위협입니다.
  • SSRF서버가 공격자의 입력을 기반으로 임의의 요청을 보내도록 유도하는 공격으로, 서버와 네트워크 중심의 위협입니다.
  • 둘 다 입력 검증과 요청 제한으로 방어 가능하지만, CSRF는 클라이언트-서버 간 인증 문제를, SSRF는 서버의 요청 처리와 네트워크 접근 문제를 다룹니다.
profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글