본문 바로가기

정보보안

XSS vs CSRF

SSRF에 관한 게시물에서 XSS와 CSRF에 차이점에 대해서 언급한 적이 있었다. 설명이 다소 불충분했던 것 같아 XSS와 CSRF에 대해 따로 설명하고자 한다.

1. XSS(Cross-Site Scripting)

  • XSS(Cross-Site Scripting) : 사이트 간 스크립팅. 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다.

XSS는 쉽게 말해 악성 스크립트를 사이트에 주입시켜 사용자(클라이언트)가 사이트에 접근했을 때 해당 스크립트가 사용자 측에서 실행되도록 하는 공격이다. 주로 쿠키 및 세션 탈취, 웹사이트 변조 등을 목적으로 행해진다.

공격 진행 과정은 다음과 같다

  1. 공격자는 악성스크립트를 주입하기 위해 사이트의 취약점을 찾는다.
  2. 취약점을 찾아서 사용자 정보(ex.세션쿠키)를 탈취하는 스크립트를 사이트에 삽입한다.
  3. 사용자가 그 웹사이트에 접근하면 스크립트가 작동합니다
  4. 스크립트를 통해 침입자에게 사용자 정보(ex.세션쿠키)가 전달된다.

XSS는 세부공격방법에 따라 그 종류가 나뉘는데 Stored XSS, Reflected XSS 두 가지에 대해서 알아보자.

- Stored XSS(저장형 XSS)

가장 일반적인 XSS 공격 유형이다. 앞서 설명한 공격 진행 과정대로 악성 스크립트를 웹 사이트의 방명록이나 게시판에 삽입하고, 다른 사용자들이 그 글을 확인할 때 스크립트 코드가 사용자에게 전달되고 세션 쿠키가 침입자에게 전달되는 방식이다.

스크립트를 웹 서버에 저장하기 때문에 Stored라는 이름이 붙었다.

- Reflected XSS(반사형 XSS)

스크립트를 웹 서버에 저장하는 Stored XSS와 달리 URL 등을 이용해서 변수부분에 스크립트 코드를 입력함과 동시에 바로 결과가 전해지는 공격이다.

클릭 요청이 발생하면 바로 스크립트가 반사되어 돌아온다고 해서 Reflected라는 이름이 붙었디.

2. CSRF(Cross-Site Request Forgery)

사이트간 요청 변조(Cross-Site Request Forgery) 또는 클라이언트 측 요청변조(Client-Side Request Forgery)라고도 한다
Cf> 서버 측 요청 변조(SSRF : Server-Side Request Forgery)와 비교할 때 클라이언트 측 요청변조(Client-Side Request Forgery)라는 표현이 어울린다.

  • CSRF(Cross-Site Request Forgery) : 사용자 본인 의지와는 무관하게 공격자가 의도한 행위를 서버에 요청하게 만드는 공격

공격 진행 예시는 다음과 같다

  1. 공격자는 서버로 넘어가는 자금 전송에 대한 요청을 조작하려고 한다.
  2. 침입자는 하이퍼링크에 자금 전송 요청에 대한 스크립트를 삽입하고 사이트에 로그인할 사람들에게 전송한다.
  3. 사용자는 링크를 누르고, 의도치않게 서버로 요청을 보내게 됩니다.
  4. 서버는 로그인 되어있는 사용자의 요청이기 떄문에 정상으로 인식하고 침입자에게 돈을 전송한다.

사용자(클라이언트) 요청을 변조하는 공격이라서 성공하려면 다음 두 가지 조건이 충족해야 한다,

  1. 사용자는 로그인 상태여야함. (서버로 부터 인증을 받은 상태)
  2. 희생자는 공격자가 보낸 링크를 클릭해야 함.

3. XSS vs CSRF

마지막으로 XSS와 CSRF의 차이점에 대해 살펴보자. 얼핏보면 Reflected XSS와 CSRF가 비슷하다고 생각할 수 있으나 다음과 같은 차이점이 있다.

XSS(Cross-Site Scripting)CSRF(Cross-Site Request Forgery)

○ 개요 : 악성 스크립트가 클라이언트에서 실행됨. ○ 개요 : 클라이언트의 요청이 공격자에 의해 변조되어 서버에 전송
○ 공격대상 : 클라이언트(Client) ○ 공격대상 : 서버(Server)
○ 클라이언트(Client)가 웹사이트를 신뢰하는 점을 이용 ○ 서버(Server)가 사용자의 웹브라우저를 신뢰하는 점을 이용

'정보보안' 카테고리의 다른 글

운영체제 & 컴퓨터 아키텍쳐  (0) 2024.11.24
IPv4, 서브넷팅 ,서브넷마스크  (0) 2024.10.30
쿠키(Cookie) vs 세션(Session) vs 토큰(Token)  (0) 2024.10.30
스턱스넷(Stuxnet)  (1) 2024.10.30
암호화(Encryption)  (0) 2024.10.30