19.08.2015 Views

4.0

1IZ1TDd

1IZ1TDd

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

181Web Application Penetration TestingExample 2Suppose an online video game pays out tokens for points scoredfor finding pirates treasure and pirates and for each level completed.These tokens can later be that can later be exchangedfor prizes. Additionally each level’s points have a multiplier valueequal to the level. If an attacker was able to see through a proxythat the application has a hidden field used during developmentand testing to quickly get to the highest levels of the game theycould quickly get to the highest levels and accumulate unearnedpoints quickly.Also, if an attacker was able to see through a proxy that the applicationhas a hidden field used during development and testingto enabled a log that indicated where other online players, or hiddentreasure were in relation to the attacker, they would then beable to quickly go to these locations and score points.How to TestGeneric Testing Method• Review the project documentation and use exploratory testinglooking for guessable, predictable or hidden functionality offields.• Once found try to insert logically valid data into the application/system allowing the user go through the application/systemagainst the normal busineess logic workflow.Specific Testing Method 1• Using an intercepting proxy observe the HTTP POST/GETlooking for some indication that values are incrementing at aregular interval or are easily guessable.• If it is found that some value is guessable this value may bechanged and one may gain unexpected visibility.Specific Testing Method 2• Using an intercepting proxy observe the HTTP POST/GETlooking for some indication of hidden features such as debugthat can be switched on or activated.• If any are found try to guess and change these values to get adifferent application response or behavior.Related Test CasesTesting for Exposed Session Variables (OTG-SESS-004)Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)Testing for Account Enumeration and Guessable User Account(OTG-IDENT-004)ToolsOWASP Zed Attack Proxy (ZAP) - https://www.owasp.orgindex.php/OWASP_Zed_Attack_Proxy_ProjectZAP is an easy to use integrated penetration testing tool forfinding vulnerabilities in web applications. It is designed to beused by people with a wide range of security experience and assuch is ideal for developers and functional testers who are newto penetration testing. ZAP provides automated scanners aswell as a set of tools that allow you to find security vulnerabilitiesmanually.ReferencesCross Site Request Forgery - Legitimizing Forged Requestshttp://fragilesecurity.blogspot.com/2012/11/cross-siterequest-forgery-legitimazing.htmlDebugging features which remain present in the final gamehttp://glitchcity.info/wiki/index.php/List_of_video_games_with_debugging_features#Debugging_features_which_remain_present_in_the_final_gameEaster egg - http://en.wikipedia.org/wiki/Easter_egg_(media)Top 10 Software Easter Eggs - http://lifehacker.com/371083/top-10-software-easter-eggsRemediationThe application must be smart enough and designed with businesslogic that will prevent attackers from predicting and manipulatingparameters to subvert programmatic or business logicflow, or exploiting hidden/undocumented functionality such asdebugging.Test integrity checks (OTG-BUSLOGIC-003)SummaryMany applications are designed to display different fields dependingon the user of situation by leaving some inputs hidden.However, in many cases it is possible to submit values hiddenfield values to the server using a proxy. In these cases the serverside controls must be smart enough to perform relational orserver side edits to ensure that the proper data is allowed to theserver based on user and application specific business logic.Additionally, the application must not depend on non-editablecontrols, drop-down menus or hidden fields for business logicprocessing because these fields remain non-editable only in thecontext of the browsers. Users may be able to edit their valuesusing proxy editor tools and try to manipulate business logic.If the application exposes values related to business rules likequantity, etc. as non-editable fields it must maintain a copy onthe server side and use the same for business logic processing.Finally, aside application/system data, log systems must be securedto prevent read, writing and updating.Business logic integrity check vulnerabilities is unique in thatthese misuse cases are application specific and if users are ableto make changes one should only be able to write or update/editspecific artifacts at specific times per the business process logic.The application must be smart enough to check for relationaledits and not allow users to submit information directly to theserver that is not valid, trusted because it came from a non-editablecontrols or the user is not authorized to submit throughthe front end. Additionally, system artifacts such as logs must be“protected” from unauthorized read, writing and removal.Example

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!