본문 바로가기
WEB HACKING/웹 해킹[이론]

XSS : Cross-Site Scripting

by madevth 2021. 11. 15.
반응형

① XSS란?

XSS는 이용자가 입력한 값이 서버에서 그대로 응답되는 것을 이용한 공격이다. (Dom Based XSS 제외)

웹 페이지에 스크립트를 삽입할 수 있기 때문에 생기는 취약점이다.

스크립트는 Server Side Script : Php, Jsp, Asp & Client Side Script : HTML, JavaScript로 나눌 수 있는데, XSS는 Client 측 스크립트를 삽입하는 공격이다. 클라이언트 언어인 JavaScript를 실행하여 공격하는 방식이기 때문에 서버에 직접적인 영향을 미치지는 못해서 파급력이 낮다고 알려져 있지만, XSS를 응용한 공격이 많기 때문에 간과해서는 안된다.

 

② XSS 종류

XSS는 스크립트 삽입 위치와 방식에 따라 크게 Stored, Reflected, DOM Based 3가지로 분류된다.

 

1. Stored XSS

Stored XSS는 스크립트를 서버에 저장한다. 게시판이나 댓글 같이 글을 작성하면 서버에 저장이 되는 곳에서 삽입 가능하다.

위의 그림은 Stored XSS를 잘 보여주는데, 공격자가 악성 스크립트를 삽입하면 이용자가 해당 페이지를 요청했을 때 악성 스크립트가 삽입된 페이지를 그대로 응답받으면서 개인 정보 탈취 등이 발생한다.

모든 파라미터가 공격 포인트가 될 수 있기 때문에 웬만하면 존재하는(찾을 수 있는) 취약점이다.

Stored XSS의 특징 중 하나는 스크립트를 삽입하는 곳과 응답하는 곳이 다르다는 것이다. 글을 작성하는 곳과 글을 읽는 곳이 다른 것을 생각하면 알기 쉽다.

 

2. Reflected XSS

Reflected XSS는 스크립트가 서버에서 반사되는 곳에서 발생한다. 검색 기능같이 키워드 abc를 검색했을 때 "검색어 abc가 존재하지 않습니다."와 같이 내가 입력한 값이 그대로 반사되는 것을 의미한다.

Reflected XSS는 Stored XSS와 다르게 스크립트를 삽입하는 곳과 응답하는 곳이 같다는 특징을 가진다. 이 말은, 공격자가 스크립트를 삽입하면 공격자의 컴퓨터로 응답이 와서 실행된다는 뜻이다. 공격자는 피해자 측에서 스크립트가 실행되도록 만들어야 하므로 이 공격은 사회공학 기법과 함께 쓰여야 효과를 발휘한다. 일반적으로 피싱 문자로 악성 스크립트를 실행하는 링크를 보내서 사용자가 그 링크를 클릭하게 만드는 방식으로 많이 사용된다.

 

3. DOM Based XSS

DOM Based XSS 스크립트가 서버에 저장되지도, 서버에서 반사되지도 않고 클라이언트 측에서 만들어진다.

서버와 관계없이 DOM에서 수정이 일어나는 곳에 삽입을 하여 공격하는 방식이다. 서버에서는 아무 일도 일어나지 않기 때문에 Repeater를 봐도 알 수 없고 스크립트를 분석해야한다. 그렇다. 찾기 어렵다.

반응형

댓글