1

게시판 DOM Based XSS 공격과 취약점 고치기

게시판 DOM Based XSS 공격과 취약점 고치기

노아의 블로그

    목차
반응형

게시판 검색 창 하단 script 란에 이러한 코드를 넣습니다.

	window.onload = function(){
	 	var urlParams = new URLSearchParams(window.location.search);
      		var paramValue = urlParams.get('search');
		var div = document.getElementById("hack");
		paramValue = (paramValue != "" ? paramValue : "없음!");
		div.innerHTML = "사용자님의 검색어 : " + paramValue;
	};

html에는 이러한 코드를 삽입합니다.

<div id=hack></div>

이제 이 게시판은 DOM 취약점이 존재합니다.
 
url을 보고 get 파라미터중 search 파라미터를 가져옵니다.
 
search 파라미터를 div태그 , id는 hack인 요소에 파라미터 값을 넣습니다.
 

정상적으로 출력이 되었습니다. 
 
이제 스크립트를 넣어보겠습니다.
 

저번 시간에 필터링 처리를 해서 되지 않습니다.
 
하지만 취약점이 존재했었죠.
 
이 필터링의 원리는 버튼을 눌렀을때 검증하는것. 그러니 url로 요청하면 되쥬.
 
 

 
실행이 되지 않습니다.
 
그 이유는 InnerHtml이 보안상 script를 실행할 수 없도록 막아놓았다고 합니다.
보안이 허술하지는 않았습니다. ㅠ
 
하....그러면 어떡하죠?
 
저번 시간에 배워본 이벤트 핸들러가 떠올라야죠.
 
스크립트 태그가 막혀도...스크립트 태그 안에 사용자 입력이 들어가지 않아도
실행을 할 수 있던 이벤트 핸들러...
 

 
원래는 예외를 처리할때 써야하지만 
해커니까~~
 
원리는 다들 아시죠. afw라는 img는 존재하지 않습니다. 당연히 오류가 발생하죠.
onerror 이벤트에 이벤트 핸들러 함수로 alert('hack!!!');을 실행했습니다.
 
화면에 뜨면 정상입니다.
 
이제 똑같죠. 쿠키를 탈취합시다.
저번 시간에 request bin으로 탈취를 해 본적이 있으니까
사이트는 없이 해 보겠습니다.
 
http://localhost/board/list.php?search=<img src="afw" onerror="location.href= 's' + document.cookie">
이렇게 공격 링크를 생성하고 실행한다면?
 
또 실행이 안됩니다. 그 이유는 url 에서는 +가 공백으로 측정이 되기 때문인데요.
 
+를 %2B로 대체해야합니다.
 
localhost/board/list.php?search=<img src="afw" onerror="location.href= 's' %2B document.cookie">
 

저번 시간에 http only 속성을 통해서 자바스크립트로 쿠키에 접근하지 못하게 막았습니다.
 
자동 로그인 id 쿠키만 탈취되었네요!
 
 

반응형

'해킹 > XSS' 카테고리의 다른 글

XSS 2번문제 취약점 정리  (0) 2023.05.25
Dom based XSS 학습  (0) 2023.05.21
XSS 다양한 공격 기법  (0) 2023.05.20