[WebHacking] XSS (Cross-Site-Scripting)

2022. 2. 2. 23:42

XSS(Cross-Site-Scripting)

XSS는 클라이언트 사이드 취약점 중 하나이다.

이때, 클라이언트 사이드는 클라이언트-서버 구조에서 클라이언트쪽에서 일어나는 처리를 뜻한다. 즉, XSS는 클라이언트족에서 행할 수 있는 취약점이다. 

 

 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있다. 악성스크립트가 적절한 검정 없이 실행되면, 사용자의 세션을 탈취하거나 웹 사이트를 변조하거나 악의적인 사이트로 사용자를 이동시킬 수 있다. 

 

 

예를 들어 게시글을 작성할 수 있는 사이트가 있다고 하자.

사용자가 게시글에 일반적인 내용을 입력하면 그 내용이 서버로 올라간다.

게시글
안녕하세요 저는 모북입니다. 저는 코딩을 하고 있습니다. 이건 일반적인 게시글입니다. 

=> 서버에는 "안녕하세요 저는 모북입니다. 저는 코딩을 하고 있습니다. 이건 일반적인 게시글입니다." 라는 내용이 전송된다.

 

하지만, 여기에 명령어를 입력하면 과연 어떻게 될까?

게시글2
<script>alert(1)</script> 

=> 서버에는 "<script>alert(1)</script>" 가 전송된다. 

만약 이 정보가 여과없이 저장이 된다면 우리의 바보같은 웹사이트는 이 것을 사용자가 입력한 내용이 아닌 스크립트 태그로 인식한다. 그래서 서버에서는 원하지도 않는 alert문이 실행이 되는 것이다. 

 

위처럼 서버에 저장되는 형태의 XSS를 Stored XSS라고 한다. 

Stored XSS는 서버에 저장이 되는 형태이기 때문에 그 코드를 열람하는 불특정한 사람들에게 공격을 할 수 있다. 예를 들면 위와 같은 게시글을 등록했다면, 그 게시글을 보는 모두에게 alert문이 실행이 된다. 

 

 

이와 다른 형태로 Reflected XSS도 있다. Reflected XSS는 이름 그대로 '반사하는 XSS'이다. 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생한다. stored와는 다르게 이용자의 요청에 의해 발생한다. 그래서 공격을 하기 위해서는 스크립트가 포함된 링크에 접속하도록 유도하여야 하는데 이때 이용자들이 눈치차릴 가능성이 있다. 그래서 주로 Click Jacking 또는 Open Redirect 등 다른 취약점과 연계하여 사용한다. 

 

 

※ Click Jacking - HTML의 iframe 태그를 사용한 눈속임 공격 방법(Click + Hijacking)으로 공격자가 사용자로 하여금 알아차리지 못하게 공격자가 원하는 어떤 것을 클릭하도록 속이는 것이다. 

※ Open Redirect - redirect 될 대상 url을 사용자측에서 조작하여 서버에서 설계한 url이 아닌 사용자 측에서 요청한 url 페이지로 이동시킨다. 이때 악의적인 사이트로도 요청할 수 있기 때문에 Unvailid Redirect and Forward라고 불리기도 한다. 

 

 

'Hacking & Security > WebHacking' 카테고리의 다른 글

[WebHacking] NoSQL injection  (0) 2022.03.01
[WebHacking] SQL Injection  (0) 2022.02.04
[WebHacking] CSRF (Cross Site Request Forgery)  (0) 2022.02.03
[WebHacking] Dreamhack 커리큘럼  (0) 2022.02.02

BELATED ARTICLES

more