DongDD's IT

Cross Site Scripting (XSS) - XSS, XSS 종류 본문

IT 보안/Web

Cross Site Scripting (XSS) - XSS, XSS 종류

DongDD 2017. 9. 17. 16:18

Cross Site Scripting (XSS)


Cross Site Scripting

- SQL Injection과 마찬가지로 기초적인 웹 어플리케이션의 취약점 중 하나

- 악의적인 의도를 가진 해커가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점

- 사용자의 정보를 얻어내거나, 비정상적인 기능을 수행하게 만들 수 있음



Cross Site Scripting 종류

1) Stored XSS

- Data 입력 폼을 통해 script를 삽입하는 방법

- 이 입력 폼을 통해 script를 삽입하면 다른 사용자가 이 script가 삽입된 페이지를 읽을 경우 script가 수행되게 된다.


Example) PHP로 구현된 간단한 게시판에서 TEST



PHP로 구현한 게시판에서 다음과 같이 script를 삽입해보았다.

아무런 필터링이나 XSS 보호 기법을 사용하지 않았기 때문에 script가 실행될 것이다.

<script> alert('XSS'); </script>

다음과 같은 스크립트를 글 내용에 넣어서 게시글을 클릭했을 때 팝업창이 뜨게 할 수 있다.


게시글을 클릭했을 때 XSS라고 alert가 뜨는 것을 볼 수 있다.



2) Reflected XSS

- 외부에서 입력받은 값을 받은 후 브라우저에서 전송하는 과정에 script를 넣어 제대로 된 값을 가져오지 않고 script를 수행하게 하는 방법

- 보통 URL의 get 파라미터에 script를 넣어주는 방법이 있다.


Example) GET으로 넘긴 parameter를 보여주는 페이지


다음과 같이 ID를 입력하게 되면 이 파라미터를 get으로 넘겨주는 방식으로 구현되어 있다.


아이디가 URL에 get방식으로 전송되며 출력된다. 


URL에 있는 get 파라미터에 script를 넣어주면 script가 실행되게 된다.



3) DOM XSS

Ref) DOM : HTML 및 XML 문서에 접근하는 방법을 표준으로 정의하는 문서 객체 모델

- DOM 기반 클라이언트 사이트의 스크립트를 사용해 브라우저에서 실행되게 하는 방법

- 클라이언트 측 페이지에서만 변형된 사이트가 보여짐

- 서버와 별개로 조작된 URL을 클릭 시 script가 브라우저에서 실행되게 된다.


Comments