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 에 메시지를 전달할 때 해당 메시지를 처리하면서 발생한다.
'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 |