Burp Extender allows third-party developers to extend the functionality of Burp Suite. Extensions can read and modify Burp's runtime data and configuration, initiate key actions, and extend Burp's user interface.
Burp is extensible via the IBurpExtender and other interfaces, which are defined below:
All extensions must provide a partial or full implementation of the IBurpExtender interface, and dynamically load this into the Burp process on startup.
Within your IBurpExtender implementation, you can handle key runtime events, such as processing and modifying HTTP requests made by Burp, and receiving notification of new scan issues as these are generated by Burp Scanner. If you implement IBurpExtender.registerExtenderCallbacks(), Burp will pass to your extension an implementation of the IBurpExtenderCallbacks interface, which your extension can use to carry out numerous actions asynchronously. Using the callbacks interface, you can:
The other Burp Extender interfaces are used within the functionality described above, and provide methods to access details of HTTP messages, scan issues and items in the active scan queue.
The functionality exposed by these interfaces enables developers to build powerful extensions to Burp Suite. For example, you can:
Below are some simple examples illustrating how to use some of Burp Extender's features:
To make use of Burp Extender, create a class called BurpExtender, in the package burp, which implements one or more methods of the IBurpExtender interface, and place this into the application's classpath at startup. For example, if Burp Suite is loaded from burp.jar, and BurpProxyExtender.jar contains BurpExtender.class, use the following command to launch Burp Suite and load the extension:
java -classpath burp.jar;BurpProxyExtender.jar burp.StartBurp
(On Linux-based platforms, use a colon character instead of the semi-colon as the classpath separator.)