본문 바로가기
CS 및 IT 일반

XSS(Cross-Site Scripting)

by invelog 2023. 8. 7.
반응형

Cross-Site Scripting 말 그대로 사이트 간 스크립팅이라는 웹 취약점 중 하나이다. 

사이트의 관리자가 아닌 악의적인 목적은 가진 제3자가 악성 스크립트를 삽입하여 사이트 내 정상적으로 의도되지 않은 명령을 실행시키거나 Session 등을 탈취하는 것을 말한다. 

이름을 보면 알 수 있듯이 대부분 자바스크립트를 이용한 공격이 이루어지며 가장 기초적인 취약점이지만 공격 패턴이 다양하고 변화가 계속하여 이루어지고 있어 완벽하게 방어하는 것이 힘든 취약점이다. 

 

공격 형태

  1. Cookie 및 Session 정보 탈취 : XSS에 취약한 웹사이트나 페이지에 Cookie나 Session 정보를 탈취할 수 있는 스크립트를 삽입하여 해당 사이트나 페이지를 사용하는 사용자의 정보를 탈취하며 탈취한 정보를 이용하여 인증을 회피하거나 특정 정보를 열람할 수 있는 권한을 갖게 된다. 
  2. 악성 프로그램 다운로드 유도 : XSS 자체로는 악성프로그램을 다운로드하게 할 수 없지만 스크립트를 사용하여 악성 프로그램을 다운받게 되는 사이트로 Redirect 시켜 악성 프로그램을 다운로드 받도록 한다. 
  3. 관련없는 페이지 노출 : 여러 태그를 사용하여 기존의 원본 페이지와는 관련없는 부분을 노출시키거나 페이지 자체를 수정하여 원본 페이지에서 노출된 정보를 악의적으로 편집하기도 한다. 

 

공격의 종류

  • Reflected XSS : 악성 스크립트를 클라이언트에 직접 전달하여 공격하는 방식. URL에 스크립트를 포함시켜 공격하는 경우가 대표적이고 이 때 포함된 스크립트로 인해 URL이 비정상적으로 길게 되면 의심을 가질 수 있기 때문에 Shorten URL을 사용하여 URL을 짧게 만들어 공격한다. Reflected XSS는 스크립트를 서버에 저장하지 않기 때문에 서버의 필터링을 피할 수 있는 공격 방식이다. 
  • Stored XSS : 악성 스크립트를 서버에 저장시킨 후 클라이언트와의 요청 및 응답 과정을 통해 공격하도록 하는 방식. 이 때 스크립트를 서버에 저장시킨다는 것은 페이지에서 글을 쓰거나 수정하는 등의 것을 말한다. 일반적으로 서버에서 필터링을 수행하기 때문에 회피하기 어렵지만 성공적으로 이루어질 경우 관리자는 이를 알기 힘들고 피해 범위 또한 광범위하다. 
  • DOM Based XSS : 브라우저가 HTML을 바탕으로 DOM을 생성할 때 악성 스크립트가 DOM의 일부로 구성되어 생성되도록 하는 공격 방식. 서버에서는 악성 스크립트가 포함되지 않지만 브라우저에서는 정상적인 스크립트가 실행되면서 악성 스크립트가 포함되어 실행된다. 

 

대응 방법

  • 입력이 이루어진 란에 입력 값의 길이를 제한(Email, ID, Password 등)
  • Replace등의 함수를 사용하여 치환
  • 소괄호와 같이 태그에서 사용되는 기호들을 Entity Code로 변환
  • 입력되는 값들에 대하여 유효성 검사
  • HTML 태그를 사용하도록 해야 할 경우 특정 태그 입력만 허용
반응형

'CS 및 IT 일반' 카테고리의 다른 글

쿠버네티스(kubernetes)란?  (0) 2023.08.23
로드 밸런싱(Load Balancing)이란?  (0) 2023.08.23
Cookie와 Session  (0) 2023.08.07