Using Burp Proxy
The Proxy tool lies at the heart of Burp's user-driven workflow, and gives you a direct view into how your target application works "under the hood". It operates as a web proxy server, and sits as a man-in-the-middle between your browser and destination web servers. This lets you intercept, inspect and modify the raw traffic passing in both directions.
If the application employs HTTPS, Burp breaks the SSL connection between your browser and the server, so that even encrypted data can be viewed and modified within the Proxy.
Also in the Burp Suite Support Center:
Getting set up
Setting up Burp and your browser to work with each other involves the following elements. If you need more help on these items, please see the help on Getting started with Burp Suite.
- Proxy listener - Burp uses Proxy listeners to accept requests from your browser. The default Burp listener, on port 8080 of your IPv4 loopback interface, is normally sufficient for general-purpose testing. Burp will show an alert in the dashboard event log on startup if it is not able to open this port (usually because another application is using it). You can modify the default listener and add new ones via the Proxy listener options.
- Browser proxy config - You need to configure your browser to use the Burp Proxy listener as its proxy server, for both HTTP and HTTPS protocols.
- Burp CA certificate - Since Burp breaks SSL connections between your browser and servers, your browser will by default show a warning message if you visit an HTTPS site via Burp Proxy. This is because the browser does not recognize Burp's SSL certificate, and infers that your traffic may be being intercepted by a third-party attacker. To use Burp effectively with SSL connections, you really need to install Burp's Certificate Authority master certificate in your browser, so that it trusts the certificates generated by Burp.
When you have things set up, visit any URL in your browser, and go to the Intercept tab in Burp Proxy. If everything is working, you should see an HTTP request displayed for you to view and modify. You should also see entries appearing in the Proxy history tab. You will need to forward HTTP messages as they appear in the Intercept tab, in order to continue browsing.
Intercepting requests and responses
The Intercept tab displays individual HTTP requests and responses that have been intercepted by Burp Proxy for review and modification. This feature is a key part of Burp's user-driven workflow:
- Manually reviewing intercepted messages is often key to understanding the application's attack surface in detail.
- Modifying request parameters often allows you to quickly identify common security vulnerabilities.
Intercepted requests and responses are displayed in an HTTP message editor, which contains numerous features designed to help you quickly analyze and manipulate the messages.
By default, Burp Proxy intercepts only request messages, and does not intercept requests for URLs with common file extensions that are often not directly interesting when testing (images, CSS, and static JavaScript). You can change this default behavior in the interception options. For example, you can configure Burp to only intercept in-scope requests containing parameters, or to intercept all responses containing HTML. Furthermore, you may often want to turn off Burp's interception altogether, so that all HTTP messages are automatically forwarded without requiring user intervention. You can do this using the master interception toggle, in the Intercept tab.
Using the Proxy history
Burp maintains a full history of all requests and responses that have passed through the Proxy. This enables you to review the browser-server conversation to understand how the application functions, or carry out key testing tasks. Sometimes you may want to completely disable interception in the Intercept tab, and freely browse a part of the application's functionality, before carefully reviewing the resulting requests and responses in the Proxy history.
Burp provides the following functions to help you analyze the Proxy history:
- The history table can be sorted by clicking on any column header (clicking a header cycles through ascending sort, descending sort, and unsorted). This lets you quickly group similar items and identify any anomalous items.
- You can use the display filter to hide items with various characteristics.
- You can annotate items with highlights and comments, to describe their purpose or identify interesting items to come back to later.
- You can open additional views of the history using the context menu, to apply different filters or help test access controls.
Burp Proxy testing workflow
A key part of Burp's user-driven workflow is the ability to send interesting items between Burp tools to carry out different tasks. For example, having observed an interesting request in the Proxy, you might:
- Quickly perform a vulnerability scan of just that request, using Burp Scanner.
- Send the request to Repeater to manually modify the request and reissue it over and over.
- Send the request to Intruder to perform various types of automated customized attacks.
- Send the request to Sequencer to analyze the quality of randomness in a token returned in the response.
You can perform all these actions and various other using the context menus that appear in both the Intercept tab and the Proxy history.
Key configuration options
For more specialized testing tasks, or when working with unusual applications, you may need to modify some of Burp Proxy's numerous options:
- You might need to modify the Proxy listener, to bind to different interfaces, redirect requests to different hosts, handle server SSL certificates differently, or support invisible proxying for non-proxy-aware clients.
- You can configure the Proxy to automatically modify HTTP responses in various systematic ways; for example, to unhide hidden form fields, remove JavaScript form validation, etc.
- You can configure match / replace rules to automatically change the content of requests and responses.