19.09.2017 Views

the-web-application-hackers-handbook

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

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

842 Chapter 21 n A Web Application Hacker’s Methodology<br />

9 Test for Logic Flaws<br />

9.1. Identify key attack surface<br />

9.2.<br />

Multistage<br />

processes<br />

9.3.<br />

Incomplete<br />

input<br />

9.4.<br />

Trust<br />

boundaries<br />

9.5.<br />

Transaction<br />

logic<br />

Figure 21-10: Testing for logic flaws<br />

9.1 Identify <strong>the</strong> Key Attack Surface<br />

9.1.1 Logic flaws can take a huge variety of forms and exist within any aspect<br />

of <strong>the</strong> <strong>application</strong>’s functionality. To ensure that probing for logic flaws<br />

is feasible, you should first narrow down <strong>the</strong> attack surface to a reasonable<br />

area for manual testing.<br />

9.1.2 Review <strong>the</strong> results of your <strong>application</strong> mapping exercises, and identify<br />

any instances of <strong>the</strong> following features:<br />

n Multistage processes<br />

n Critical security functions, such as login<br />

n Transitions across trust boundaries (for example, moving from being<br />

anonymous to being self-registered to being logged in)<br />

n Context-based functionality presented to a user<br />

n Checks and adjustments made to transaction prices or quantities<br />

9.2 Test Multistage Processes<br />

9.2.1 When a multistage process involves a defined sequence of requests,<br />

attempt to submit <strong>the</strong>se requests out of <strong>the</strong> expected sequence. Try<br />

skipping certain stages, accessing a single stage more than once, and<br />

accessing earlier stages after later ones.<br />

9.2.2 The sequence of stages may be accessed via a series of GET or POST<br />

requests for distinct URLs, or <strong>the</strong>y may involve submitting different<br />

sets of parameters to <strong>the</strong> same URL. You may specify <strong>the</strong> stage being

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

Saved successfully!

Ooh no, something went wrong!