<aside> 🧑‍🎓

요약

Cookie & Session 공부 필기본

IMG_0088.jpeg

IMG_0089.jpeg

Cross-Site Scripting (XSS) 학습 기록

Basic Concepts

<aside> 🧑‍🎓

클라이언트 사이드 취약점 (ClientSide)

웹 페이지의 이용자를 공격할 수 있는 취약점

이 취약점을 통해 세션, 쿠키 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있다.

대표적인 클라이언트 사이드 취약점은 XSS (Cross-Site Scripting)이다.

약어는 CSS이나, 스타일시트를 정의하는 언어인 CSS와 중복되어 혼동이 올 수 있기 때문에 XSS가 되었다.

</aside>

Cross-Site Scripting (XSS)

웹 사이트에 악성 스크립트를 삽입하여 그 웹사이트를 이용하는 사람의 브라우저에서 해당 코드가 실행되게 하는 공격이다.

사용자가 그 웹 페이지에 접속하기만 해도 자신도 모르게 악성 코드가 실행되기 때문에 쿠키나 세션이 공격자에게 탈취당할 수 있다.

XSS는 SOP 보안 정책이 등장하면서 힘들어졌지만, 이를 우회하는 다양한 기술이 늘어나면서 지속되고 있다.

XSS의 발생 예시와 종류

XSS는 이용자가 삽입한 내용을 출력하는 기능에서 발생한다.

브라우저는 HTML, CSS, JS 등의 웹 리소스를 시각화하여 이용자에게 보여준다. 이때 HTML, CSS, JS와 같은 코드가 포함된 게시글을 조회할 경우 악성 스크립트가 실행될 수 있다.

종류 설명
Stored XSS 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS
Reflected XSS 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSS
DOM-based XSS 악성 스크립트가 URL Fragment에 삽입되는 XSS
(Fragment는 URL에서 # 기호 뒤에 오는 부분으로, 서버의 요청/응답에 포함되지 않는다.)
Universal XSS 클라이언트의 브라우저나 브라우저의 플러그인에서 발생하는 취약점으로 SOP을 우회하는 XSS

XSS 스크립트의 예시

자바스크립트는 다양한 동작을 정의할 수 있기 때문에 XSS 공격에 주로 사용된다.