[WebHacking] XSS (Cross-Site-Scripting)
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 |