클라이언트 사이드의 가장 큰 취약점은 이용자를 식별하기 위한 세션 및 쿠키 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있다는 점 입니다.
이번에는 클라이언트 사이드 취약점을 활용한 대표적인 공격인 Cross Site Scripting(XSS)의 종류와 어떤 상황에서 발생하며, 어떻게 활용되는지를 확인해보겠습니다.
Cross Site Scripting의 약어는 CSS라고 불리우는게 맞으나, html css js에서 사용되는 스타일시트 css와 혼동될 수 있어 XSS로 부른다.
Cross Site Scripting (XSS)
XSS는 클라이언트 사이드 취약점 중 하나로, 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있습니다. 또한 이 취약점을 이용해 계정의 세션 정보를 탈취하고, 해당 계정으로 임의의 행동을 수행할 수 있습니다. 해당 취약점은 SOP 보안 정책이 등장하며 이전에 비해 힘들어졌습니다. 다만, 이를 우회하는 다양한 기술이 소개되며 XSS 공격은 지속되고 있습니다.
Same-Origin Policy(SOP)
SOP는 동일 출처 정책이라는 뜻으로 동일한 출처의 리소스만 상호작용을 허용하는 정책이다. 두 URL의 프로토콜, 호스트, 포트가 모두 같아야 동일한 출처로 인정되며 웹 사이트 샌드박스화하여 잠재적인 보안 위협으로부터 보호합니다.


XSS의 종류
XSS는 이용자가 삽입한 내용을 출력하는 기능에서 발생합니다. 에를들면 로그인 시 출력되는 "안녕하세요, 00회원님"과 같은 문장에서 말입니다. XSS의 종류는 발생 형태에 따라 구분되며, 아래의 내용을 확인해주세요.

Stored XSS
서버의 데이터 베이스 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생합니다. 예를들면, 게시물과 댓글에 악성 스크립트를 포함해 업로드 하는 방식이 있습니다. 게시물은 불특정 다수에게 보여지기 때문에, 해당 기능에서 XSS 취약점이 존재할 경우 많은 피해를 볼 수 있습니다.
Reflected XSS
서버가 악성 스크립트가 담긴 요청을 출력할 때 발생합니다. 대표적으로 게시판 서비스에 작성된 게시물을 조회하기 위한 검색창에 스크립트를 포함해 검색하는 방식이 있습니다. 검색시 검색 문자열에 악성 스크립트가 포함되어 있다면 발생할 수 있습니다. 또한, Reflected XSS는 다른 이용자를 악성 스크립트가 포함된 링크에 접속하도록 유도해야 합니다. 이용자에게 링크를 전달하기 위해 Click Jacking, Open Redirect등 다른 취약점과 연계하여 사용합니다.
이용자의 요청에 악성 스크립트가 포함되어있음
ClickJacking
사용자가 자신이 클릭하는 것과 다른 것을 클릭하도록 속여 악의적인 행동을 유도하는 웹 보안 공격입니다.