1. Bypass HTML Field Restrictions


6개의 입력 폼 데이터를 [submit] 버튼이 클릭되면 서버에 전달되는 페이지 이다.

이 문제는 6개의 허용되지 않은 값을 서버에 전달하도록 수정하는 문제이다.


해답: Disabled input field는 값이 입력되지 않도록 설정되어 있다. 

         Firebug를 이용하여 HTML 코드를 Inspect한다.

         <input type="text" name="disabledinput" value="disabled" disabled=""/> 에서 disabled="" 를 

         삭제한뒤, [submit]버튼을 클릭한다.

          

          전달되는 데이터를 가로채기하여 허용되지 않은 값으로 몽땅 수정하여 전송하여 문제를 해결한다.


이 경우에도 입력이 제한되도록 클라이언트 사이드의 코드를 작성하였다고 하더라도 악의적인 사용자에 의해 코드가 충분히 변조 될 수 있으며, 제한 적인 값의 입력을 위해 사용되는 select,checkbox, radio button 의 값들도 충분히 변조 될 수 있다는 것을 숙지하여 코드를 안전하게 작성할 수 있어야 한다.




2. Exploit Hidden Fields


클라이언트 사이드에서 히든 필드의 값으로 넘어가는 데이터는 안전하다고 판단하여 서버 사이드에서 입력값에 대한 검증 작업을 수행하지 않고 받아서 처리하는 경우 문제가 발생할 수 있다.


이 문제에서는 Shopping Cart에 들어 있는 제품을 [Purchase]버튼을 클릭하여 주문하게 되면 제품에 대한 가격이 hidden field값으로 서버에 전달되게 되고, 서버는 이 값을 체크하지않고 받아서 처리하는 취약점을 가지고 있다.


해답: [Purchase]로 전달되는 요청을 Tamper Data하여 Price 가격을 작은 값으로 조정하여 전달한다.




3. Exploit Unchecked Email



보이는 화면은 고객을 지원하는 페이지이다. 

1. 웹사이트 관리자에게 악의적인 스크립트를 전송하고,

2. OWASP의 friend에게 악의적인 스크립트를 전송하는 문제이다.


해답: [send]버튼을 클릭하고 요청을 가로채서 수정한다.

         전달되는 값중 mag 값을 <script>alert("test");</script>로 수정하여 전달하여 1번 문제를 해결한다.

          

         다시한번 [send]버튼을 클릭하고 요청을 가로채서 수정한다.

         전달되는 값중 to 값을 webgoat.admin%40...  -> friend%40.. 으로 수정하여 전달한다.


고객 지원을 위해 webgoat의 admin에게 전달되도록 작성된 페이지 이지만 공격자는 요청데이터를 가로채서 원하는 사용자에게 악의적인 실행코드를 담은 메일을 전달할 수 있다.

이것은 서버사이드에서 사용자가 전달한 입력값에 대한 유효성 검사없이 그대로 사용해서 발생된 취약점이다.




4. Bypass Client Side JavaScript Validation


 

이 웹사이트는 클라이언트 사이드와 서버사이드에서 입력값의 유효성을 체크한다.

하지만 클라이언트 사이드의 입력값 유효성 체크는 언제 든지 위조될 수 있다.


이 페이지의 클라이언트 사이드의 입력값 유효성 체크는 [Submit]버튼이 클릭되었을 때  자바 스크립트  validate() 함수에 의해 처리된다. 


해답: Firebug를 이용하여 HTML 코드를 Inspect한다.

        [Submit]버튼의 코드를 찾아 type="button"을 type="submit"으로 수정한다.

        onclick=validate(); 를 삭제한다.

        입력필드값을 전부 유효하지 않은 값으로 변경한뒤 [Submit]버튼을 클릭한다.

        클라이언트 사이드에서 입력 데이터에 대한 폼 유효성 검사가 실행되지 않고 서버에 전달되고,

        서버에서는 유효한 값들이 들어왔다고 성공 메시지를 전달하는 것을 확인할 수 있다.

  



 

OWASP WebGoat: Unvalidated Parameters 솔루션 비디오 보기  [View | Download]   [as of 5.3, changed to Parameter Tampering]

 
Description: It includes Exploiting Hidden FieldsExploiting Unchecked Emails and Bypassing Client Side JavaScript Validation and Bypassing HTML Field Restrictionsv5.3 [View | Download] . 


Exploiting Hidden Fields: Developers will use hidden fields for tracking, login, pricing, etc.. information on a loaded page. While this is a convenient and easy mechanism for the developer, they often don't validate the information that is received from the hidden field. This lesson will teach the attacker to find and modify hidden fields to obtain a product for a price other than the price specified. It is always a good practice to validate all inputs. 


Exploiting Unchecked Emails: Most sites allow non-authenticated users to send e-mail to a 'friend'. This is a great mechanism for spammers to send out email using your corporate mail server. 


Bypassing Client Side JavaScript Validation:Client-side validation should not be considered a secure means of validating parameters. This validation only helps reducing the amount of server processing time for normal users who do not know the format of required input. Attackers can bypass these mechanisms easily in various ways. Any client-side validation should be duplicated on the server side. This will greatly reduce the likelihood of insecure parameter values being used in the application. 

Size: 3.71 MB 


 

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

티스토리 툴바