XSS는 웹 상에서 가장 기초적인 공격 방법이다.
왜냐하면 서버가 아닌 사용자들을 공격하는 기법이기 때문이다.
사이트에 접속한 사용자는 삽입된 악성 스크립트가 실행되고 쿠키나 세션같은 개인정보가 탈취당할 수 있다.
여러 사용자가 접근 가능한 게시판이나 메일과 같은 매체를 통해 전파되기도 한다고 한다.
또, {{{#!html HTML}}} 을 이용해서 HTML 태그를 사용할 수 있다고 한다.
- 원치 않는 페이지로 리다이렉트
- 악성코드 감염
- 개인정보 탈취
javascript 기능이 먹히는 순간 javascript로 구현가능한 모든 것이 가능해진다.
여기선 크게 3가지 XSS를 정리해볼 것이다.
- Stored XSS
- Reflected XSS
- DOM XSS
1. Stored XSS
사용자가 게시판에 글을 작성하면 그 값들이 서버로 전송되어
DB에 저장된다. 그 후, 다른 사용자들이 게시판에 들어오면 그 저장된 정보를 사용자들에게 쏴줘서
게시글로 보여주게 된다.
그럼 그 사용자들이 게시글을 누르게 되면 XSS가 발생하는 것이다.
한 게시판을 보자. 이 게시판은 글 작성 페이지에서 제목란에 XSS 취약점이 발견되었다.
간단한 script 태그를 작성한 후 저장해보자.
그럼 게시판에 잘 등록이 된 것을 볼 수 있다. 클릭해보면,
내가 입력한 제목이 javascript로 인식되어 alert를 실제로 띄우고 있는 것을 볼 수 있고 확인 버튼을 누르면
태그로 입력한 나머지 부분이 출력되는 것을 볼 수 있다.
여기서 간단한 alert가 아니라 document.cookie라던지 requestbin을 이용한 간이 해킹서버를 이용해
개인정보를 탈취당한 다면 꽤나 위협적인 공격으로 응용이 가능하다.
2. Reflected XSS
Stored XSS는 입력값이 서버로 가서 DB에 전송되고 그 데이터를 받은 다른 사용자들이 게시글을 클릭하면 XSS가 벌어지는 구조였다.
Reflected XSS는 http GET 요청에서 파라미터가 URL 에 붙어서 날라갈 때, URL 파라미터에 스크립트 태그를 넣고
그 URL을 클릭했을 때 스크립트가 실행되면 그걸 Reflected XSS 라고 한다.
3. DOM XSS
DOM이란 HTML 및 XML 문서에 접근하는 방법을 표준으로 정의하는 문서 객체 모델이다.
구조화된 문서를 표현하는 방식이라고 생각하면 된다.
웹 페이지를 다룰 때 자주 사용되는 window.document 라는 건 사실 javascript 언어가 아니라
브라우저 환경에서 제공되는 객체인 것이다.
HTML이란 설계도를 브라우저라는 공장으로 보내면 DOM이라는 기계가 탄생하게 된다고 비유할 수 있다.
DOM Based XSS는 피해자의 브라우저에서 DOM 환경을 수정하여 클라이언트 측 코드가 예상치 못한 방식으로 공격 구문이 실행되는 공격이다.
Stored XSS, Reflected XSS는 서버 측의 결함으로 스크립트가 실행되는 것이지만,
DOM Based XSS 취약점은 서버와 관계없이 브라우저에서 발생한다.
클라이언트 측에서 DOM을 이용해서 동적으로 페이지를 조작할 때 발생하는 취약점인데,
공격 페이로드가 응답메시지에 포함되어있지 않을 수 있다.
<script>
var div = document.getElementById("test");
div.innerHTML="URL: " + decodeURI(window.location.href);
</script>
해당 코드는 URL을 가져와서 화면에 그대로 출력해주는 코드인데, 해당 페이지에 <img src="" onerror ~ 같은 코드나 iframe같은 스크립트를 같이 섞으면 악의적인 스크립트가 그대로 실행된다.
소스참조
https://lgana1021.tistory.com/22
https://jeongzero.oopy.io/8c6440ae-922d-42d3-a1d0-758273ff4c6f
https://ddungkill.tistory.com/135
'해킹 > 해킹 기법' 카테고리의 다른 글
XSS CTF 정리 7번 문제 (0) | 2023.05.11 |
---|---|
해킹 라이브 정리 - 다크웹, 딥웹, 프록시 서버 (1) | 2023.05.09 |
XSS 대응 방안 - htmlspecialchars 함수 (1) | 2023.05.07 |
해킹 기법 - 유튜브 해킹 전략 (0) | 2023.05.02 |
로그인 우회 CTF 풀이 # 3 (0) | 2023.04.26 |