CSRF에서 XSS가 필요한 이유

황인환·2024년 7월 13일

간단요약

CSRF 취약점

  • GET방식 -> URL로 파라미터 전달 -> XSS필요없음
  • POST방식
    -> <body>를 통해 파라미터 전달
    -> <form>나 Javascript를 이용해야함
    -> XSS 필요

왜 XSS를 써야하는가?(내 서버에 스크립트 삽입하면 안되는 이유)

sop/cros

1. sop (Same Origin Policy)

  • 같은 출처가 아니라면 스크립트를 이용하여 정보를 가져오는게 안됨
    ex) <iframe src="">와 <script>로 정보 요청은 가능 응답옴(사진 등)
    But 응답받은 데이터를 Javascript를 사용하여 정보를 가져(조작) 올 수는 없음 getElemetById()...

  • 같은 출처란?
    1.스키마(프로토콜) -> ex) https
    2.도메인 -> ex)www.a.com
    3.포트 -> http~~.com:80
    위 3가지가 모두 같아야함
    경로는 달라도 ok

2. CORS(Cross Origin Resource Sharing)

- 탄생배경

SOP는 무조건 지켜야 하기 때문에 제약이 너무 많아 범용성과 편의성이 떨어져 보완하기위해 나타남

- 정의

기존 SOP + 몇가지 (예외 상황을 지정한)규칙 추가
-> 다른 출처에서도 데이터 접근 가능

-ACAO

제일 대표적인 CORS이다.
ACAO는 응답에서 나타난다.
ACAO 도메인은 허락된 도메인에서 응답했을때 해당 도메인을 볼수있음 But 전체리스트 보기 불가능

-ACAO 우회

SOP 제약으로 인해 ACAO에 ACAO*를 삽입한다.
-> 모든것을 허용한다는 의미
-> SOP의미 퇴색

이를 막기 위해 조건부허락함
-> 타도메인에서 쿠키를 포함해서 요청한 것에는 ACAO*를 삽입하지 못하게함
--> 중요한 정보는 쿠키(SESSION ID 등 때문) 포함하여 요청을함 EX) 마이페이지

ACAO우회를 위해 request페이지에 origin헤더에 다른 데이터를 넣어서 보냄
-> 만약 응답에 ACAO 헤더의 정보가 내가 바꾼 origin데이터가 나타나면 내 서버로 연결해서 침투 가능

-ACAC

이 헤더가 TURE이면 쿠키를 포함한 정보 요청이다.

Referer vs Origin

- 공통점

둘다 HTTP Header
클라이언트가 서버에 요청을 보낼때 요청의 출처를 나타냄

- 차이점

RefererOrigin
포함 정보전체 URL프로토콜 호스트 포트만
examplehttps://www.a.com/a.phphttps://www.a.com
용도페이지간 이동 추적/ 리소스 로드 출처 확인CORS와 같은 보안쪽에서 주로 사용
위험도더 많은 정보를 포함하여 보다 더 위험 -> 비활성화 가능정보가 보다 제한적이라 덜 위험

0개의 댓글