[WebGoat 5.4-03] Ajax Security
1. DOM-Based cross-site scripting
LAB: DOM-Based cross-site scripting
DOM(Document Object Model)은 웹페이지의 컨텐츠를 동적으로 수정할 수 있지만 공격자에 의해 악의적인 코드 주입으로 인한 공격을 받을 수도 있다. XSS 공격은 클라이언트 컨텐츠 페이지 수정시 입력되는 값을 검증하지 않고 바로 사용하는 경우 발생한다.
이 예제에서는 DOM기반의 XSS 취약점을 이용한다. 마지막 단계에서는 코드의 보안 취약점을 수정하는 작업을 수행할 것이다.
<참고> DOM이란 HTML과 XML문서를 위한 API로 문서의 물리적인 구조와 문서간의 접근과 다루어지는 방법을 정의한다.
STAGE 1: OWASP IMAGE를 현재 페이지에 출력한다.
먼저 입력되는 값이 비동기적으로 화면에 표시되는 것을 테스트 한다.
Hello, Kim!
Enter your name: [ kim ]
-> 문제에서 제공하는 이미지 주소를 HTML태그를 이용하여 작성해 입력한다.
Enter your name: [ <image src="images/logos/owasp.jpg" /> ]
STAGE 2: image 태스를 사용하여 자바 스크립트의 alert을 띄운다.
Enter your name: [ <img src='t' onerror='alert("XSS")' /> ]
STAGE 3: iframe을 사용하여 xss alert창을 띄운다.
Enter your name: [ <iframe src='javascript:alert("XSS");' /> ]
STAGE 4: 패스워드를 입력하는 가짜 페이지를 생성하여 패스워드를 입력을 받아, 입력받은 패스워드를 alert 창으로 표시한다.
화면에 제시된 스크립트를 입력하여 가짜 패스워드 입력을 유도하고, 패스워드를 입력하고 submit 버튼을 클릭하면 입력된 패스워드가 alert으로 표시된다.
STAGE 5: DOM 기반의 XSS 공격을 무력화 하게 하기위해 XSS 가능한 코드를 필터링할 수 있게 매개변수값을 수정한다.
WebContent/javascript/DOMXSS.js 파일을 다음과 같이 수정한다.
document.getElementById("greeting").innerHTML="Hello, "+name+"!";
==>
document.getElementById("greeting").innerHTML="Hello, "+escapeHTML(name)+"!";
[Submit Solution] 버튼을 클릭하면 LAB이 마무리 된다.
LAB: Client Side Filtering
2. DOM Injection
3. XML Injection
4. JSON Injection
5. Silent Transactions Attacks
6. Dangerous Use of Eval
7. Insecure Client Storage
OWASP WebGoat: AJAX Security 솔루션 비디오 보기
- LAB: Client Side Filtering [View | Download]
- LAB: DOM-Based cross-site scripting [View | Download]
- DOM Injection [View | Download]
- Same Origin Policy Protection [View | Download]
- XML Injection [View | Download]
- JSON Injection [View | Download]
- Silent Transactions Attacks [View | Download]
- Insecure Client Storage [View | Download]
- Dangerous Use of Eval [View | Download]
Size: N/A