[11] XSS, webgoat, DOM XSS, AJAX Security

|


- 2015.03.23

 


임시 강사 수업

 

 


1. XSS


1)  간단 Paros 기능


Paros - Tools - Filter
   Replace HTTP response body using defined pattern 클릭
   ... - Pattern : 김정은, Replace with : 돼지새끼

 


* Cross Site Scripting (XSS) : 게시글 등에 악성코드를 심어 클릭 시 클라이언트에게 피해를 주는 것

 

 

 

2) webgoat googlecode


webgoat googlecode 검색하여 webgoat zip 파일 다운로드
압축 풀고 webgoat 실행 후 웹페이지에 localhost/WebGoat/attack 실행
guest/geust 로 로그인 - Start WebGoat   : 여러가지 공격 기법 실습 가능

 


http://testphp.vulnweb.com/
search art - <script>alert("test")</script>  해보면 알람 창이 뜬다.

 

 


3) XSS


[ ...WebGoat-5.4tomcatwebappsROOTxss.jsp ]


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>XXXXXX</title>
</head>
<body>


<%@page import="java.lang.*"%>
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<%
String name=request.getParameter("name");
%>
username : <%=name%>
</body>
</html>

 


이제 웹에서 아래 주소 입력


http://localhost/xss.jsp?name=<script>alert("test")</script>


=> 경고창이 뜬다. 만약 이상한 페이지가 나오면 확장자 확인 필요

 

 


4) DOM XSS


[ xss1.jsp ]


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>XXXXXX</title>
</head>
<body>


DOM XSS Testing....


<SCRIPT>
var position=document.URL.indexOF("age=")+4;
document.write(document.URL.substring(position.ducument.URL.length));
</SCRIPT>


</body>
</html>

 


http://localhost/xss1.jsp?age=21


이것으로 age의 값이 출력 된다면


http://localhost/xss1.jsp?age=<script>alert("teset")</script>


도 될 것이다.

 

 


5) AJAX Security


http://localhost/WebGoat/attack  들어가서 AJAX Security -> LAB: DOM-Based... 이동
( http://localhost/WebGoat/attack?Screen=49&menu=400 )


폼에 글씨를 쓰면 위에 자동으로 입력된다. 이것을 이용


소스보기 : 435 라인 복사
<a href="attack?Screen=7&menu=1900">Web Service SAX Injection</a>


이 소스를 방금의 폼에 입력하면 위쪽에 링크가 뜬다. 해당 링크를 누르면 해당 페이지로 이동.

 


* OWASP 에 보면 유행하는 웹의 취약점을 알 수 있다.

 


다시 아까의 http://localhost/WebGoat/attack  들어가서 AJAX Security -> LAB: DOM-Based...


여기 소스코드 중 581번줄


... Enter your name: <input value='' onKeyUp='displayGreeting(person.value)' name='person' type='TEXT'> ...


입력받은 값을 person으로 해서 displayGreeting 한다는 뜻이다.


DOMXSS.js 에 displayGreeting 이라는 함수의 구조가 있다.
( http://localhost/WebGoat/javascript/DOMXSS.js )

 

 

 

And