Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

XSS(Cross-Site Scripting) 종류 및 특징 본문

Study/WEB

XSS(Cross-Site Scripting) 종류 및 특징

awakerrday 2019. 3. 14. 20:43

크로스사이트 스크립팅(XSS, Cross-Site Scripting) 공격 종류 및 특징

 

1. Stored XSS (Persistent XSS, 저장 XSS)

 Stored XSS은 웹 어플리케이션 취약점이 있는 웹 서버에 악성 스크립트를 영속적으로 저장해 놓는 방법이다. 이로 인해 악성 스크립트가 웹 서버 데이터베이스로부터 비롯된다. (1) 공격자는 웹 사이트의 게시판, 사용자 프로필 및 코멘트 필드 등의 입력 form을 통해 POST로 악성 스크립트를 전달하면 서버는 해당 내용을 DB에 저장한다. (2) 희생자가 해당 페이지를 요청하면 (3) 서버는 저장된 악성 스크립트를 포함시킨 페이지를 사용자에게 전달하게 되고 (4) 희생자 브라우저에서 스크립트가 실행되어 XSS 공격이 수행된다.


2. Reflected XSS (반사 XSS)

  Reflected XSS은 웹 어플리케이션의 지정된 파라미터를 사용할 때 발생하는 취약점을 이용하는 공격이다. 검색 결과, 에러 메시지 등 서버가 외부에서 입력 값을 받아 브라우저에게 응답할 때 파라미터에 삽입된 악성 스크립트를 사용자에게 그대로 전달하면서 발생한다. (1) 공격자는 파라미터에 악성 스크립트를 포함시킨 URL을 작성하여 희생자에게 전달한다.(링크, 악성 메일 등) (2) 희생자는 전달 받은 URL을 서버에 요청한다. (3) 웹 서버의 응답 페이지에 악성 스크립트가 포함되어 희생자에게 전달되고 (4) 희생자의 브라우저는 응답 페이지 내의 악성 스크립트를 실행하여 XSS 공격이 수행된다.


3. DOM-based XSS (문서 객체 모델-기반 XSS)

  DOM(Document Object Model)이란 W3C 표준으로, 정적 문서의 요소들을 객체로 구성하여 브라우저에서 실행되는 스크립트가 HTML, XML 등의 정적 문서의 요소에 동적으로 접근하고 업데이트할 수 있도록 하는 언어 중립적인 API이다. DOM에는 HTML 태그와 스크립트가 포함되어 있으며, 브라우저에서 렌더링할 때 스크립트가 실행되어 DOM 문서 내 계층적으로 구성된 객체에 접근하고 읽고 쓰게 되면서 웹 페이지의 컨텐츠가 동적으로 변경된다.

(1) 공격자는 파라미터에 악성 스크립트를 포함시킨 URL을 작성하여 희생자에게 전달한다.(링크, 악성 메일 등) (2, 3, 4) 희생자의 브라우저는 렌더링 중 HTML을 페이지에 추가하기 위해 innerHTML로 다뤄지는 사용자 입력을 구문 분석하고 페이지를 동적으로 생성한다. (4, 5) DOM-based XSS은 이러한 과정에서 악성 스크립트가 포함된 사용자 입력이 페이지의 HTML 태그에 추가되어 실행되는 공격이다. 서버의 응답 내에는 악성 스크립트가 포함되지 않지만, 브라우저에서 응답 페이지 내 정상적인 스크립트가 실행되며 악성 스크립트가 추가되어 실행되는 것이다.

DOM-based XSS의 예방으로 웹 방화벽에 의존하거나 서버 측 코드에서 필터링에 의존하는 경우, URL 끝에 ‘#’을 두고 악성 스크립트를 위치시키면(ex. http://www.test.com/param=elcsc#<script>...</script>) 브라우저에서 ‘#’ 문자 뒤의 내용을 서버에 전달하지 않기 때문에 보이지 않게 우회하여 스크립트가 실행될 수 있다.

앞에서 다룬 Stored XSS Reflected XSS은 서버 측 코드 취약점으로, 서버가 전달하는 응답 페이지에 악성 스크립트가 포함되어 브라우저에서 실행되는 공격인 반면, DOM-based XSS은 클라이언트 측 코드 취약점으로, 브라우저에서 정상적인 응답 페이지가 HTML을 동적으로 업데이트하면서 악성 스크립트가 추가되고 실행되는 것이 차이점이다.


4. Universal XSS (보편 XSS)

Universal XSS은 클라이언트 측 취약점으로 브라우저 안에 악성 스크립트를 실행하는 또 다른 방법이다. 경우에 따라서는 SOP(Same-Origin Policy, 동일-출처 정책)의 제약도 피해간다. Universal XSS 공격은 기능성 구조의 한 수준 위로 올라가서, 브라우저 자체의 취약점이나 확장 기능 또는 플러그인의 취약점을 악용한다.

 

 

'Study > WEB' 카테고리의 다른 글

불충분한 인증/인가  (0) 2020.03.18
SQLi 기록  (0) 2019.07.11
Chrome DevTools (크롬 개발자 도구)  (0) 2019.02.15
SSL/TLS와 HTTPS  (0) 2017.11.23
GET과 POST의 차이점  (0) 2017.08.01
Comments