XSS, CSRF

Doum Kim·2020년 8월 15일
0

보안

목록 보기
1/6
post-thumbnail

Cross-site Scripting

XSS는 웹 상에서 가장 기초적인 취약점 공격 방법의 일종이다.

악의적인 사용자가 공격 대상에게 스크립트를 넣는 기법을 말한다.

주로 다른 웹 사이트와 정보를 교환하는 식으로 작동한다.

웹 어플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타나고 사용자는 의도치 않은 행동을 수행하거나 쿠기, 세션등의 정보를 탈취 당한다.

따라서 XSS의 희생자는 웹 어플리케이션이 아닌 사용자가 된다.

XSS의 방지 대책

  1. 쿠키에 중요한 정보를 담지 않고 서버에 중요 정보를 저장

  2. 정보를 암호화

  3. document.cookie를 이용해 쿠키에 접속하는 것을 방지

  4. url encoding이나 문자열 치환

Cross-Site Request Fogery

CSRF는 사이트 간 요청을 취조하는 공격 방법으로 사용자가 자신의 의지와는 무관하게 공격자가 의도한 요청을 하게 만드는 공격 방법이다.

XSS가 사용자가 서버를 신뢰하는 취약점을 공격한다면 CSRF는 서버가 인증된 사용자를 신뢰한다는 취약점을 공격하는 방법이다.

따라서 사용자가 웹사이트에 로그인한 상태에서 CSRF 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 인증된 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다.

즉, CSRF는 공격자가 유저의 컴퓨터를 감염시키거나 해킹을 해서 이뤄지는게 아니라 2가지 조건을 만족해야한다.

  1. 위조 요청을 전송하는 서비스에 로그인 상태여야한다.

  2. 희생자는 공격자가 만든 피싱 사이트에 접속해야한다.

CSRF의 방지 대책

  1. Referrer 검증 (서버 단에서 요청의 referrer를 확인하여 도메인이 일치하는지 검증)

  2. Security Token을 사용 (사용자 세션에 암호화된 값을 저장하고, 사용자의 요청마다 해당 암호화된 값을 포함 시켜 전송한다. 이후 서버에서 요청을 받을 때마다 세션에 저장된 토큰 값과 요청에 전달되는 토큰 값이 일치하는지 확인한다.)

단, 두 방법 모두 같은 도메인 내에 XSS 취약점이 있다면 CSRF 공격에 취약해진다.

XSS 와 CSRF 비교

두가지 방법 모두 사용자의 브라우저를 목표로 하는 비슷한 공격이지만

XSS는 사이트 변조나 백도어를 통해 클라이언트에 대한 공격을 하고, 세션이 없어도 공격을 할 수 있으며, 스크립트를 실행 시키는 공격이다.

CSRF요청을 위조하여 사용자의 권한을 이용해 서버에 대한 악성 공격을 하고, 인증을 악용하여 , 희생자에게 특정 요청을 시키는 공격이다.

XSSCSRF
개요악성 스크립트가 클라이언트에서 실행된다.권한을 도용당한 클라이언트가 가짜 요청을 서버에 전송
공격대상클라이언트서버
목적쿠키, 세션 갈취, 웹사이트 변조권한 도용

참고

0개의 댓글