모의해킹 스터디 복습

모의해킹 스터디 13주차(1): CSRF vs XSS

whydontyoushovel 2025. 1. 17. 23:58

 

목차

  1. 정의
  2. 취약점 포인트
  3. 발생 포인트 예시
  4. 공통점과 차이점

 

 

정의

 XSS          ▩

Cross-Site Scripting 공격

  • 임의의 스크립트를 삽입하여 피해자의 브라우저에서 그 스크립트가 실행되도록 하는 공격
  • [+] 자바스크립트 등의 클라이언트 측 스크립트 이용

 

 CSRF        

Cross-Site Request Forgery

  • 피해자가 원치 않는 임의의 요청을 하게 만드는 공격
  • [+] 스크립트가 꼭 필요하지 않음

 

 

취약점 포인트

 XSS          ▩

  • 공격자가 입력한 스크립트가 문자열 처리되지 않은 채 피해자 브라우저에서 실행되는 곳
  • 종류: Stored XSS, Reflected XSS, DOM Based XSS 등
  • <,',",> 등의 특수문자를 HTML Entity로 치환하여 대응할 수 있음

 

 CSRF        

  • 인증 정보가 포함되지 않은 모든 요청
  • 요청이 GET 방식일 때, POST 방식일 때 공격 방법 다름
  • 발견된 위치의 위험도에 따라 대응
  • 요청에 공격자가 알 수 없는 인증 정보를 포함하거나 referrer 요청 헤더를 화이트리스트 기반으로 필터링하여 대응
  • 위험도가 그렇게 크지 않다 싶으면 CSRF Token 포함
  • SOP / CORS 보안 정책 준수 여부에 따라 도메인 내부에 XSS 없어도 공격 가능

 

 

발생 포인트 예시

 XSS          ▩

공격자가 입력한 스크립트가 문자열 처리되지 않은 채 피해자 브라우저에서 실행되는 곳

**모든 예시에 입력값을 HTML Entity로 치환시키는 로직이 없을 경우를 가정

  • 마이페이지: GET 요청으로 받은 쿠키 데이터가 화면에 표시됨
  • 댓글: 사용자 입력값이 그대로 서버에 저장되어 브라우저에 표시됨
  • 검색창 오류문: GET요청으로 받은 입력값에 대한 검색 결과가 없을 시, 사용자 입력값을 포함한 경고문이 출력됨

 

 CSRF        

인증 정보가 포함되지 않은 모든 요청

**모든 예시에 요청 파라미터에 비밀번호 등 사용자만 아는 인증 정보를 필요로 하지 않을 경우를 가정

**모든 예시에 요청 보낸 출처를 제대로 필터링하지 않을 경우를 가정

  • 개인정보 변경: GET일 때-> 링크 이용 / POST일 때-> form태그 이용
  • 게시글 작성
  • 댓글 수정 등등..

SOP, CORS 정책이 준수되고 있는 경우 같은 도메인에서 XSS 포인트를 찾아야할 수 있음

 

 

공통점과 차이점

  XSS CSRF
공통점 클라이언트 측 공격 (피해자 == 사용자)

차이점


발생 이유 사용자가 자바스크립트 등을 삽입할 수 있게 함 요청 파라미터에 인증 정보가 없어 요청을 위조할 수 있음
클라이언트 측
스크립트 필요 여부
자바스크립트 등 필요 스크립트 없어도 링크 등을 통해 공격 가능
공격자의 의도를
수행하는 주체
사용자 브라우저가 스크립트를 처리 서버가 요청 처리
대응 방법 스크립트 못 넣게 함
HTML Entity 치환
요청 위조되면 위험한 곳:
     -> 비번 포함, referrer 체크
요청 위조돼도 덜 위험한 곳: 
     -> CSRF Token 등

 

 

 

CSRF에 XSS를 활용하여 헷갈리는 경우가 있지만

이 둘은 다른 공격임