[WARGAME] DVWA write-up/ DOM XSS/ low

jckim22·2022년 10월 21일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
26/114

이번 문제는 CroosSiteScripting(XSS) 중 의 기법 중 하나인 DOM XSS문제이다.
이 문제를 풀기 앞서 DOM이 대체 무엇이고 DOM XSS는 storedXSS와 ReflectingXSS와 다른 점이 무엇인지 알아보았다.

DOM이란

문서 객체 모델(The Document Object Model, 이하 DOM) 은 HTML, XML 문서의 프로그래밍 interface 이다. DOM은 문서의 구조화된 표현(structured representation)을 제공하며 프로그래밍 언어가 DOM 구조에 접근할 수 있는 방법을 제공하여 그들이 문서 구조, 스타일, 내용 등을 변경할 수 있게 돕는다. DOM 은 nodes와 objects로 문서를 표현한다. 이들은 웹 페이지를 스크립트 또는 프로그래밍 언어들에서 사용될 수 있게 연결시켜주는 역할을 담당한다.

쉽게 말하면 HTML의 구조 모델이다..

아래는 DOM의 구조이다.

그렇다면 DOM XSS는 뭔지 더 알아보자

DOM XSS

DOM XSS란 DOM 기반 XSS 공격은 보안에 취약한 JavaScript 코드로 DOM 객체를 제어하는 과정에서 발생하는 취약점이다.

url에 #을 사용했을 때 그 뒤에 있는 내용이 서버에 전달되지 않는 다는 점에서 서버와 주고 받는 요청과 응답은 똑같다고 할 수 있다.
그 말은 즉슨 StoredXSS와 ReflectXSS가 서버의 응답으로부터 받는 스크립트 코드로 인해 일어나는 취약점인 것에 반면 DOM XSS는 오로지 브라우저 단에서 이루어지는 취약점이라고 할 수 있다.

문제 웹페이지를 보자.
목표는 사용자의 쿠키를 탈튀하는 것에 있다.

문제를 보면 언어를 바꿀 수 있고 그언어를 바꾸게 되면 위에 default라는 param에 그 언어가 담긴다.

아래는 서버의 코드이다.
아무것도 없다..
이게 바로 힌트가 될 수 있다.
이번 문제에서는 아까 말했듯이 서버에는 주는 param이 없다.
그냥 브라우저에서 처리할 수 있다.

<?php

# No protections, anything goes

?>

그럼 url의 param의 value에 #을 붙여서 그 value를 일반적인 값이 아닌 쿠키를 알아보는 악성 스크립트 코드를 담아보자.
나는 url을 사용자에게 메일로 보내 그 메일을 클릭하게 하여 쿠키를 탈취할 것이다.

하지만 여기서는 간단하게 코드를 쿠키의 값을 alert에 띄우는 정도만 해놓았다.

그럼 아래 url을 메일로 보내보자.

http://192.168.11.1/dvwa/vulnerabilities/xss_d/?default=#%3Cscript%3Ealert(document.cookie)%3C/script%3E

naver에 이 url을 숨겼고 이 url을 클릭하게 되면

아래처럼 그 사용자의 쿠키에 접근할 수 있게 되고 마음만 먹으면 나에게 전달할 수 있는 상황이 된다.

그리고 아래 요청과 응답 처럼 # 뒤에 값들은 서버에게 요청도 응답도 없었다.

profile
개발/보안

0개의 댓글