본문 바로가기
모의해킹

WebGoat 문제풀이 - 2. Ajax Security - LAB: DOM-Based Cross Site Scripting

by 공대냥이 2018. 11. 21.
반응형

개념 : Ajax(Asynchronous JavaScript and XML, 에이잭스)는 비동기적인 웹 애플리케이션의 제작을 위해 아래와 같은 조합을 이용하는 웹 개발 기법이다. 

    • 표현 정보를 위한 HTML(또는 XHTML)CSS
    • 동적인 화면 출력 및 표시 정보와의 상호작용을 위한 DOM, 자바스크립트
    • 웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XSLT, XMLHttpRequest 
    • (Ajax 애플리케이션은 XML/XSLT 대신 미리 정의된 HTML이나 일반 텍스트, JSON, JSON-RPC를 이용 가능).

1) LAB: DOM-Based Cross Site Scripting

DOM(Document Object Model)은 웹페이지의 컨텐츠를 동적으로 수정할 수 있지만 공격자에 의해 악의적인 코드 주입으로 인한 공격을 받을 수도 있다.

XSS 공격은 클라이언트 컨텐츠 페이지 수정시 입력되는 값을 검증하지 않고 바로 사용하는 경우 발생한다. 이 예제에서는 DOM기반의 XSS 취약점을 이용한다.

 

[참고] DOM이란 HTMLXML문서를 위한 API로 문서의 물리적인 구조와 문서간의 접근과 다루어지는 방법을 정의한다.


Stage 1. OWASP IMAGE를 현재 페이지에 출력하라.

문제에서 제공해주는 이미지 주소를 HTML 태그를 이용하여 작성해 입력한다.

Enter your name :

[ <img src=http://127.0.0.1/WebGoat/images/logos/owasp.jpg /> ]


webgoat


Stage 2. img 태그를 사용해 자바 스크립트의 alert를 띄운다.

Enter your name : [ <img src='t' onerror='alert("XSS")' />


webgoat

webgoat


Stage 3. iframe을 사용하여 xss alert창을 띄운다.

Enter your name : [ <iframe src='javascript:alert(“XSS”);' />


webgoat




Stage 4. 패스워드를 입력하는 가짜 페이지를 생성하여 패스워드를 입력을 받아입력받은 패스워드를 alert창으로 표시한다.

화면에 제시된 스크립트를 입력하여 패스워드 입력을 유도하고,

패스워드를 입력하고 submit 버튼을 클릭하면 입력된 패스워드가 alert로 표시된다.


webgoat


stage 5. DOM 기반의 XSS공격을 무력화 하기위해 XSS 가능한 코드를 필터링할 수 있게 매개변수값을 수정한다.

WebContent/javascript/DOMXSS.js 파일을 다음과 같이 수정한다.

document.getElementById("greeting").innerHTML="Hello, " + name+ "!";

 

->

document.getElementById(“greeting”).innerHTML=“Hello,”

+escapeHTML(name)+“!”;

파일 수정 후 결과 제출하면 클리어!


webgoat



반응형