본문 바로가기
Web/개념정리

[개념정리] XSS

by jh117jh 2023. 8. 23.
728x90

XSS란?


SQL injection, XXE, CSRF등 대표적인 웹해킹 기법중 하나로

Cross Site Scripting의 약자로 CSS라는 언어가 먼저 사용되고 있어 XSS라고 지어졌다.

 

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

 

웹 사이트가 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타나며, 대부분 사용자가 글을 쓰고 읽을 수 있는 게시판에 많이 발생하지만, 사용자의 입력 값을 웹 페이지에 보여주는 곳에서도 발생한다.

 

공격에 성공하면 사이트에 접속한 사용자는 악성 스크립트를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등

민감한 정보를 탈취한다.

 

 

 

공격 유형


    1. Stored XSS (저장 XSS)
    Stored XSS은 악성 스크립트가 서버측에 저장되어 사용자들의 요청이 있을때마다 저장된 스크립트가 사용자에게 응답되어 스크립트를 실행시키는 공격이다.
    예를들어 게시판에 글을 악성 스크립트를 포함하여 작성해 서버 DB에 저장시키면 사용자들이 해당 게시글을 열람할 때마다 악성 스크립트가 실행되는 경우가 있다.
    2. Reflected XSS (반사 XSS)
      사용자의 요청에 포함된 스크립트가 서버로부터 그대로 반사되어 응답메시지에 포함돼 브라우저에서 스크립트가 실행되는 공격 기법이다.해당 공격은 스크립트가 웹앱 내에 저장되지 않고 영구적이지 않은 공격으로 한 요청에 대한 하나의 응답으로 공격이 진행된다.보통 취약한 웹앱으로 스크립트가 포함된 요청을 보내도록 변조된 URL로 사용자가 접속하도록 하는 방식으로 공격이 진행되며 URL말고도 어떻게든 사용자가 악성 스크립트가 포함된 요청을 하도록 한다.
    3. DOM-based XSS

DOM(Document Object Model)은 HTML의 요소들을 프로그램에서 제어할 수 있도록 객체화한 API로 페이지에 존재하는 요소(element)들의 논리적 구조와 해당 요소들에 접근할 수 있는 방법들을 정의해둔 것이다. 자바스크립트는 이 DOM을 활용해서 동적으로 요소에 접근하거나 수정, 삭제, 추가 등의 행위를 할 수 있다.DOM-based XSS는 이렇게 DOM을 이용해서 요소들을 수정하거나 추가하는 등의 행위를 할 때 발생하는 XSS 취약점을 말한다. 

앞의 Reflected-XSS나 Stored-XSS는 서버에서 사용자의 요청을 처리하는 과정에서 취약점이 존재해서 응답으로 해당 스크립트가 전송되는반면 DOM-based XSS는 클라이언트측에서 DOM을 이용해서 동적으로 페이지를 조작할 때 발생하는 취약점이다.

즉 공격 페이로드가 응답메시지에 포함되어있지 않을 수 있다.(순수한 DOM XSS의경우) 주로 조작된 URL로 접속했을 때 자바스크립트가 해당 URL을 이용해서 동적으로 페이지를 구성하려하거나 iframe 에 메시지를 전달할 때 해당 메시지를 처리하면서 발생한다. 

728x90

'Web > 개념정리' 카테고리의 다른 글

[개념정리] Click jacking  (0) 2024.01.05
[개념정리] SameSite  (0) 2023.10.27
[개념정리] XXE 란?  (0) 2023.08.11
[개념정리] UNION  (0) 2023.07.10
[개념정리] Base64  (0) 2023.07.03