[네트워크] XSS

Lee Seung Jae·2021년 6월 8일
0

XSS : Cross Site Scripting

사이트를 교차해서 스크립트를 발생시킴.
게시판을 포함한 웹에서 자바스크립트같은 스크립트 언어를 삽입해 개발자가 의도하지 않은 기능을 작동시키는 것
클라이언트 측을 대상으로 한 공격이다.

게시판에서 글을 쓰는곳에 작성자가 HTML 코드를 삽입하여 글을 읽는사람의 브라우저에서 실행되게 하는 원리이다.

이게 단순하게 alert()만 띄운다고 되는것이 아니라 그 스크립트 안에 엄청 긴 코드를 주입해서 무한정 창을 띄우게 하거나 악성코드를 직접적으로 받게 할수는 없지만, URL을 클릭하도록 유도하여 악성 프로그램을 다운받는 사이트로 Redirect시킨다.

위험성

  1. 쿠키 정보 및 세션 획득
    공격자는 XSS에 취약한 페이지 및 게시판에 XSS공격을 수행함으로써 해당 페이지를 이용하는 사용자의 쿠키 정보나 세션 ID를 획득할 수 있다.
    이렇게 되면 XSS공격을 통해 페이지를 사용하는 사용자의 세션ID를 얻어서 공격자가 불법적으로 사용자인 척 하면서 활보할 수 있다.
  2. 시스템 관리자 권한 획득
    XSS취약점이 있는 웹서버에 다양한 악성 데이터를 포함시킨 후, 사용자의 브라우저가 악성 데이터를 실행하게 할 수 있다.
    만약 이렇게 해킹이 될 경우, 내부로 악성코드가 이동해 중요 정보가 탈취될 수 있다.
  3. 거짓페이지 노출
    <script> 뿐만이 아니라 <img>와 같은 그림을 표시하는 태그를 사용해 원래 페이지와 전혀 관련 없는 페이지를 표시할 수가 있다.

XSS 방지법

XSS 공격은 IPS, IDS, 방화벽 등으로도 방지할 수가 없다.
그래서 문자를 필터링 해주는 방법이 있다.

Script 문자 필터링

XSS 공격은 입력값에 대한 검증이 제대로 이루어지지 않아 발생하는 취약점이다. 그래서 입력값에 대해 서버는 필터링을 해야 한다. < > " ' 와 같은 문자열들을 정규표현식으로 필터링하여 태그를 제거해준다.

예시

게시판에서 글 제목을 클릭하면 다른 페이지로 넘어가서 글 상세보기를 해준다고 가정을 했을 때, 제목을 <a href="hi">test</a> 로 한다면 원래 보여주려던 '상세보기'는 구현할 수 없고 href에 있는 hi 주소로 http 통신을 보내기 때문에 생뚱맞는 페이지를 호출하여 redirect 해준다.

이 점을 항상 생각하고 유의하여 코드를 작성하여야 한다.

profile
💻 많이 짜보고 많이 경험해보자 https://lsj8367.tistory.com/ 블로그 주소 옮김

0개의 댓글