When we manually test web applications we tend to treat all input data the same way. We set up an HTTP proxy, we intercept requests and manipulate them.
But interesting data, from the perspective of the penetration tester, can come from very different places in the client side: HTML forms in the user interface, client-side JavaScript code, hard-coded query strings in the HTML, cookies or other HTTP headers, etc.
Think about how painful it can be to perform manual test on an AJAX application using only an HTTP proxy. Most of the requests are asynchronous and it is hard to understand the data they contain. However it is much easier to work directly at the JavaScript layer using a debugger like Firebug because reading the code associated to the AJAX requests provide the context we are missing to understand the data.
Client side HTTP proxies are “catch all” tools, they work for all types of input data because everything goes to the server via HTTP. Maybe there are opportunities to improve the testing if we consider more the nature of the input data. We could think about new tools that would be better integrated into the client-side process instead of sitting in front of it, waiting to intercept the raw HTTP traffic as it leaves the browser.
