XSS & CSRF

뾰족머리삼돌이·2023년 12월 21일
0

WEB

목록 보기
5/10

프로젝트를 진행하면서 사용자 인증/인가 관리 관련로직을 구현하면서 마주하기 쉬운 웹 취약점 두 가지를 정리해보자.

XSS ( Cross-Site Scripting )

사이트 간 스크립팅

사용자 입력 값에 대한 검증이 미흡하거나, 출력 시 필터링 되지 않을 경우 발생한다.

주로 input 창, 사용자의 입력값을 받을 수 있는 곳에 스크립트를 삽입하여 실행되게 하는 방법이 사용된다.

자바스크립트를 통하여 브라우저에 저장된 세션이나 쿠키값을 그대로 사용할 수 있을 위험이 있다.

보통 3가지의 공격유형으로 분류한다.

  1. Stored XSS
  2. Reflected XSS
  3. DOM Based XSS

Stored XSS

스크립트를 서버의 DB에 저장하고, 출력될 시에 동작하는 방식을 취한다.

게시글이라고 가정한다면, 해당 게시글을 조회하는 모든 사용자가 공격대상이 된다.

Reflected XSS

스크립트가 포함된 URL을 사용자에게 노출시킨 후, 사용자가 해당 URL을 클릭하면 동작하는 방식이다.

주로 검색창과 같이 사용자로부터 입력값을 받는경우 ?param=”??” 의 형태로 받게되는데 ??의 위치에 스크립트를 심어놓고, URL을 변경한 다음 ( ex: url 줄이기 ) 사용자의 클릭을 유도한다.

DOM Based XSS

DOM, 흔히 HTML이나 XML와 같이 태그가 사용되는 형태의 모델을 의미한다.

Reflected XSS와 유사하게 URL에 스크립트를 심어놓고, 변조한 다음 사용자의 클릭을 유도한다.

차이점은 서버와의 통신이 없이, 이미 DOM파일을 받고 난 다음 URL Hash를 이용해서 서버와의 통신을 하지않고 스크립트가 실행되게 만드는 방식이다.

방어방법

서버와 클라이언트 모두 스크립트에 사용되는 특정태그 ( 문자 ) 를 필터링해내는 작업이 필요하다.

< , > , “, ‘, (, ), % 등등

만일 해당 취약점이 발생하더라도 주요정보가 탈취당하지 않도록 조치해놓는게 좋다.

( 쿠키의 httponly 설정 등등 )

CSRF ( Cross Site Request Forgency )

사이트 간 요청 위조

공격자가 다른 사용자의 권한을 이용하여 특정 동작을 요청하도록 유도하는 공격방법이다.
서버에 적절한 사용자 검증절차가 없을 경우, 정상요청과 조작된 요청을 구분하지 못하면 발생한다.

  1. 공격자는 사전에 사이트의 파악해서 파라미터의 전송형태와 기능을 알아야한다.
  2. 해당 포맷에 맞는 공격 스크립트가 포함된 URL을 사용자가 실행하게 만든다.
  3. 서버에서 따로 보안적인 조치를 해놓지 않을 경우 공격에 성공한다.

XSS와의 비교

XSS의 경우, 스크립트의 실행위치가 클라이언트이다.

CSRF의 경우, 스크립트에 의해 서버의 데이터가 변조된다.

즉, XSS의 경우 사용자의 정보탈취에 목적을 가지고있고 CSRF는 사용자의 권한을 이요한 서버의 동작유도에 목적을 가지고있다.

SOP & CORS와의 연관관계

SOP ( 동일 출처 정책 ) 의 경우, 취약점에 대한 보안대책으로 사용되며 서버와 동일한 출처가 아닌경우 사용자의 요청을 거부하는 정책이다.

이를 통하여 동일한 웹사이트에서만 요청이 실행되기 때문에 <iframe/> 을 이용한 공격을 방어할 수 있다.

💡 < Iframe >은 페이지내에 페이지를 삽입하는데 사용되는 태그다

하지만, 웹사이트간의 정보공유는 불가피하기 때문에 관련하여 서버측에서 인정한 출처와의 통신이 가능하도록 하는게 CORS다.

XSS의 경우 사용자의 정보를 탈취하는게 목적이다.
때문에 스크립트 자체가 실행되지 않도록 방어하고, 관련된 주요정보를 스크립트로 조회하지 못하게 하는게 중요하다.

CSRF의 경우, 이미 획득한 사용자의 권한을 이용하여 관련된 정보를 얻어내는게 목적이다.
사용자의 권한을 이용하여 특정 요청을 수행하도록 할 수 있다.

따라서 1차적으로 CORS설정을 통해 허용된 출처에서 온 요청만 동작하게 해야하고, 추가적인 인증절차를 통하여 방어하는 방법이 있다.

출처

[출처] 웹 취약점과 해킹 매커니즘#7 XSS(Cross-Site Scripting) - ① 개념|작성자 SK쉴더스

0개의 댓글