공격자가 상대방의 브라우저에 스크립트가 실행되도록 하여 세션을 가로채거나, 웹사이트 변조, 악의적 콘텐츠 삽입 또는 피싱 공격을 하는 공격 방법중 하나 입니다
XSS 취약점은 스크립트 언어와 취약한 코드를 대상으로 진행합니다
공격자는 자바스크립트 언어를 이용하여 페이지에 삽입이 가능합니다
취약점을 이용하여 다음과 같은 것들을 수행할 수 있습니다
자바스크립트는 클라이언트 사이드 언어이기 때문에 코드가 실행될 때 클라이언트에서 실행됩니다
리버스쉘을 획득하기 위해서 코드를 실행할 때 결과로 사용자의 쉘을 획득하게 됩니다
3가지 유형의 XSS가 존재합니다
웹 어플리케이션 취약점이 있는 웹 서버에 악성 스크립트를 저장하는 방법입니다. 이로 인해 악성 스크립트가 웹 서버 데이터베이스로 부터 실행됩니다
반사 XSS는 웹 어플리케이션의 지정된 파라미터를 사용할 때 발생하는 취약점을 이용한 공격입니다
검색 결과, 에러 메시지 등 서버가 외부에서 입력 값을 받아 브라우저에게 응답할 때 파라미터에 삽입된 악성 스크립트를 사용자에게 그대로 전달하면서 발생합니다
DOM(Document Object Model)이란 W3C 표준으로, 정적 문서의 요소들을 객체로 구성하여 브라우저에서 실행되는 스크립트가 HTML, XML 등의 정적 문서의 요소에 동적으로 접근하고 업데이트할 수 있도록 하는 언어 중립적인 API 입니다
DOM에는 HTML 태그와 스크립트가 포함되어 있으며, 브라우저에서 렌더링할 때 스크립트가 실행되어 DOM 문서 내 계층적으로 구성된 객체에 접근하고 읽고 쓰게 되며 웹 페이지의 컨텐츠가 동적으로 변하게 됩니다
서버의 응답 내에는 악성 스크립트가 포함되지 않지만, 브라우저의 응답 페이지 내 정상적인 스크립트가 실행되며 악성 스크립트가 추가되어 실행됩니다