buby 1.3.3-java → 1.5.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. data/README.rdoc +28 -14
  2. data/Rakefile +96 -6
  3. data/VERSION.yml +5 -0
  4. data/bin/buby +2 -0
  5. data/buby.gemspec +102 -17
  6. data/{java/src → ext/buby/burp}/BurpExtender.java +189 -29
  7. data/ext/burp_interfaces/burp/IBurpExtender.java +31 -0
  8. data/ext/burp_interfaces/burp/IBurpExtenderCallbacks.java +785 -0
  9. data/ext/burp_interfaces/burp/IContextMenuFactory.java +38 -0
  10. data/ext/burp_interfaces/burp/IContextMenuInvocation.java +156 -0
  11. data/ext/burp_interfaces/burp/ICookie.java +53 -0
  12. data/ext/burp_interfaces/burp/IExtensionHelpers.java +352 -0
  13. data/ext/burp_interfaces/burp/IExtensionStateListener.java +27 -0
  14. data/ext/burp_interfaces/burp/IHttpListener.java +37 -0
  15. data/ext/burp_interfaces/burp/IHttpRequestResponse.java +102 -0
  16. data/ext/burp_interfaces/burp/IHttpRequestResponsePersisted.java +26 -0
  17. data/ext/burp_interfaces/burp/IHttpRequestResponseWithMarkers.java +44 -0
  18. data/ext/burp_interfaces/burp/IHttpService.java +39 -0
  19. data/ext/burp_interfaces/burp/IInterceptedProxyMessage.java +116 -0
  20. data/ext/burp_interfaces/burp/IIntruderAttack.java +31 -0
  21. data/ext/burp_interfaces/burp/IIntruderPayloadGenerator.java +50 -0
  22. data/ext/burp_interfaces/burp/IIntruderPayloadGeneratorFactory.java +40 -0
  23. data/ext/burp_interfaces/burp/IIntruderPayloadProcessor.java +45 -0
  24. data/{java/src → ext/burp_interfaces}/burp/IMenuItemHandler.java +36 -40
  25. data/ext/burp_interfaces/burp/IMessageEditor.java +64 -0
  26. data/ext/burp_interfaces/burp/IMessageEditorController.java +49 -0
  27. data/ext/burp_interfaces/burp/IMessageEditorTab.java +102 -0
  28. data/ext/burp_interfaces/burp/IMessageEditorTabFactory.java +38 -0
  29. data/ext/burp_interfaces/burp/IParameter.java +104 -0
  30. data/ext/burp_interfaces/burp/IProxyListener.java +37 -0
  31. data/ext/burp_interfaces/burp/IRequestInfo.java +95 -0
  32. data/ext/burp_interfaces/burp/IResponseInfo.java +54 -0
  33. data/ext/burp_interfaces/burp/IScanIssue.java +120 -0
  34. data/ext/burp_interfaces/burp/IScanQueueItem.java +80 -0
  35. data/ext/burp_interfaces/burp/IScannerCheck.java +89 -0
  36. data/ext/burp_interfaces/burp/IScannerInsertionPoint.java +156 -0
  37. data/ext/burp_interfaces/burp/IScannerInsertionPointProvider.java +38 -0
  38. data/ext/burp_interfaces/burp/IScannerListener.java +30 -0
  39. data/ext/burp_interfaces/burp/IScopeChangeListener.java +25 -0
  40. data/ext/burp_interfaces/burp/ISessionHandlingAction.java +51 -0
  41. data/ext/burp_interfaces/burp/ITab.java +38 -0
  42. data/ext/burp_interfaces/burp/ITempFile.java +33 -0
  43. data/ext/burp_interfaces/burp/ITextEditor.java +90 -0
  44. data/lib/buby/burp_extender/console_frame.rb +33 -0
  45. data/lib/buby/burp_extender/console_pane.rb +26 -0
  46. data/lib/buby/burp_extender/console_tab.rb +15 -0
  47. data/lib/buby/burp_extender/context_menu.rb +29 -0
  48. data/lib/buby/burp_extender/context_menu_factory.rb +17 -0
  49. data/lib/buby/burp_extender/context_menu_item.rb +13 -0
  50. data/lib/buby/burp_extender/jcheck_box_menu_item.rb +12 -0
  51. data/lib/buby/burp_extender/jmenu.rb +11 -0
  52. data/lib/buby/burp_extender/jmenu_item.rb +12 -0
  53. data/lib/buby/burp_extender/menu.rb +11 -0
  54. data/lib/buby/burp_extender/menu_item.rb +12 -0
  55. data/lib/buby/burp_extender.rb +339 -0
  56. data/lib/buby/context_menu_factory.rb +35 -0
  57. data/lib/buby/cookie.rb +37 -0
  58. data/lib/buby/extender.rb +156 -0
  59. data/lib/buby/http_listener.rb +29 -0
  60. data/lib/buby/{extends → implants}/buby_array_wrapper.rb +0 -0
  61. data/lib/buby/implants/context_menu_invocation.rb +113 -0
  62. data/lib/buby/implants/cookie.rb +47 -0
  63. data/lib/buby/implants/extension_helpers.rb +286 -0
  64. data/lib/buby/{extends → implants}/http_request_response.rb +8 -1
  65. data/lib/buby/implants/intercepted_proxy_message.rb +53 -0
  66. data/lib/buby/implants/intruder_attack.rb +42 -0
  67. data/lib/buby/implants/jruby.rb +64 -0
  68. data/lib/buby/implants/message_editor.rb +70 -0
  69. data/lib/buby/implants/message_editor_controller.rb +60 -0
  70. data/lib/buby/implants/parameter.rb +84 -0
  71. data/lib/buby/implants/request_info.rb +47 -0
  72. data/lib/buby/implants/response_info.rb +44 -0
  73. data/lib/buby/{extends → implants}/scan_issue.rb +1 -2
  74. data/lib/buby/implants/scan_queue_item.rb +53 -0
  75. data/lib/buby/implants/scanner_insertion_point.rb +92 -0
  76. data/lib/buby/implants/temp_file.rb +43 -0
  77. data/lib/buby/implants/text_editor.rb +63 -0
  78. data/lib/buby/implants.rb +28 -0
  79. data/lib/buby/intruder_payload_generator.rb +60 -0
  80. data/lib/buby/intruder_payload_generator_factory.rb +32 -0
  81. data/lib/buby/intruder_payload_processor.rb +38 -0
  82. data/lib/buby/message_editor_controller.rb +41 -0
  83. data/lib/buby/message_editor_tab.rb +98 -0
  84. data/lib/buby/message_editor_tab_factory.rb +28 -0
  85. data/lib/buby/parameter/base.rb +40 -0
  86. data/lib/buby/parameter/body.rb +7 -0
  87. data/lib/buby/parameter/cookie.rb +7 -0
  88. data/lib/buby/parameter/url.rb +7 -0
  89. data/lib/buby/parameter.rb +15 -0
  90. data/lib/buby/proxy_listener.rb +26 -0
  91. data/lib/buby/scan_issue.rb +112 -0
  92. data/lib/buby/scanner_check.rb +84 -0
  93. data/lib/buby/scanner_insertion_point.rb +118 -0
  94. data/lib/buby/scanner_insertion_point_provider.rb +27 -0
  95. data/lib/buby/scanner_listener.rb +22 -0
  96. data/lib/buby/scope_change_listener.rb +19 -0
  97. data/lib/buby/session_handling_action.rb +43 -0
  98. data/lib/buby/tab.rb +37 -0
  99. data/lib/buby/version.rb +9 -0
  100. data/lib/buby.rb +892 -101
  101. metadata +118 -22
  102. data/VERSION +0 -1
  103. data/java/buby.jar +0 -0
  104. data/java/src/burp/IBurpExtender.java +0 -180
  105. data/java/src/burp/IBurpExtenderCallbacks.java +0 -373
  106. data/java/src/burp/IHttpRequestResponse.java +0 -156
  107. data/java/src/burp/IScanIssue.java +0 -106
  108. data/java/src/burp/IScanQueueItem.java +0 -76
  109. data/lib/buby/extends.rb +0 -4
@@ -0,0 +1,31 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IBurpExtender.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * All extensions must implement this interface.
14
+ *
15
+ * Implementations must be called BurpExtender, in the package burp, must be
16
+ * declared public, and must provide a default (public, no-argument)
17
+ * constructor.
18
+ */
19
+ public interface IBurpExtender
20
+ {
21
+ /**
22
+ * This method is invoked when the extension is loaded. It registers an
23
+ * instance of the
24
+ * <code>IBurpExtenderCallbacks</code> interface, providing methods that may
25
+ * be invoked by the extension to perform various actions.
26
+ *
27
+ * @param callbacks An
28
+ * <code>IBurpExtenderCallbacks</code> object.
29
+ */
30
+ void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks);
31
+ }
@@ -0,0 +1,785 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IBurpExtenderCallbacks.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ import java.awt.Component;
13
+ import java.io.OutputStream;
14
+ import java.util.List;
15
+ import java.util.Map;
16
+
17
+ /**
18
+ * This interface is used by Burp Suite to pass to extensions a set of callback
19
+ * methods that can be used by extensions to perform various actions within
20
+ * Burp.
21
+ *
22
+ * When an extension is loaded, Burp invokes its
23
+ * <code>registerExtenderCallbacks()</code> method and passes an instance of the
24
+ * <code>IBurpExtenderCallbacks</code> interface. The extension may then invoke
25
+ * the methods of this interface as required in order to extend Burp's
26
+ * functionality.
27
+ */
28
+ public interface IBurpExtenderCallbacks
29
+ {
30
+ /**
31
+ * Flag used to identify Burp Suite as a whole.
32
+ */
33
+ static final int TOOL_SUITE = 0x00000001;
34
+ /**
35
+ * Flag used to identify the Burp Target tool.
36
+ */
37
+ static final int TOOL_TARGET = 0x00000002;
38
+ /**
39
+ * Flag used to identify the Burp Proxy tool.
40
+ */
41
+ static final int TOOL_PROXY = 0x00000004;
42
+ /**
43
+ * Flag used to identify the Burp Spider tool.
44
+ */
45
+ static final int TOOL_SPIDER = 0x00000008;
46
+ /**
47
+ * Flag used to identify the Burp Scanner tool.
48
+ */
49
+ static final int TOOL_SCANNER = 0x00000010;
50
+ /**
51
+ * Flag used to identify the Burp Intruder tool.
52
+ */
53
+ static final int TOOL_INTRUDER = 0x00000020;
54
+ /**
55
+ * Flag used to identify the Burp Repeater tool.
56
+ */
57
+ static final int TOOL_REPEATER = 0x00000040;
58
+ /**
59
+ * Flag used to identify the Burp Sequencer tool.
60
+ */
61
+ static final int TOOL_SEQUENCER = 0x00000080;
62
+ /**
63
+ * Flag used to identify the Burp Decoder tool.
64
+ */
65
+ static final int TOOL_DECODER = 0x00000100;
66
+ /**
67
+ * Flag used to identify the Burp Comparer tool.
68
+ */
69
+ static final int TOOL_COMPARER = 0x00000200;
70
+ /**
71
+ * Flag used to identify the Burp Extender tool.
72
+ */
73
+ static final int TOOL_EXTENDER = 0x00000400;
74
+
75
+ /**
76
+ * This method is used to set the display name for the current extension,
77
+ * which will be displayed within the user interface for the Extender tool.
78
+ *
79
+ * @param name The extension name.
80
+ */
81
+ void setExtensionName(String name);
82
+
83
+ /**
84
+ * This method is used to obtain an
85
+ * <code>IExtensionHelpers</code> object, which can be used by the extension
86
+ * to perform numerous useful tasks.
87
+ *
88
+ * @return An object containing numerous helper methods, for tasks such as
89
+ * building and analyzing HTTP requests.
90
+ */
91
+ IExtensionHelpers getHelpers();
92
+
93
+ /**
94
+ * This method is used to obtain the current extension's standard output
95
+ * stream. Extensions should write all output to this stream, allowing the
96
+ * Burp user to configure how that output is handled from within the UI.
97
+ *
98
+ * @return The extension's standard output stream.
99
+ */
100
+ OutputStream getStdout();
101
+
102
+ /**
103
+ * This method is used to obtain the current extension's standard error
104
+ * stream. Extensions should write all error messages to this stream,
105
+ * allowing the Burp user to configure how that output is handled from
106
+ * within the UI.
107
+ *
108
+ * @return The extension's standard error stream.
109
+ */
110
+ OutputStream getStderr();
111
+
112
+ /**
113
+ * This method is used to register a listener which will be notified of
114
+ * changes to the extension's state. <b>Note:</b> Any extensions that start
115
+ * background threads or open system resources (such as files or database
116
+ * connections) should register a listener and terminate threads / close
117
+ * resources when the extension is unloaded.
118
+ *
119
+ * @param listener An object created by the extension that implements the
120
+ * <code>IExtensionStateListener</code> interface.
121
+ */
122
+ void registerExtensionStateListener(IExtensionStateListener listener);
123
+
124
+ /**
125
+ * This method is used to register a listener which will be notified of
126
+ * requests and responses made by any Burp tool. Extensions can perform
127
+ * custom analysis or modification of these messages by registering an HTTP
128
+ * listener.
129
+ *
130
+ * @param listener An object created by the extension that implements the
131
+ * <code>IHttpListener</code> interface.
132
+ */
133
+ void registerHttpListener(IHttpListener listener);
134
+
135
+ /**
136
+ * This method is used to register a listener which will be notified of
137
+ * requests and responses being processed by the Proxy tool. Extensions can
138
+ * perform custom analysis or modification of these messages, and control
139
+ * in-UI message interception, by registering a proxy listener.
140
+ *
141
+ * @param listener An object created by the extension that implements the
142
+ * <code>IProxyListener</code> interface.
143
+ */
144
+ void registerProxyListener(IProxyListener listener);
145
+
146
+ /**
147
+ * This method is used to register a listener which will be notified of new
148
+ * issues that are reported by the Scanner tool. Extensions can perform
149
+ * custom analysis or logging of Scanner issues by registering a Scanner
150
+ * listener.
151
+ *
152
+ * @param listener An object created by the extension that implements the
153
+ * <code>IScannerListener</code> interface.
154
+ */
155
+ void registerScannerListener(IScannerListener listener);
156
+
157
+ /**
158
+ * This method is used to register a listener which will be notified of
159
+ * changes to Burp's suite-wide target scope.
160
+ *
161
+ * @param listener An object created by the extension that implements the
162
+ * <code>IScopeChangeListener</code> interface.
163
+ */
164
+ void registerScopeChangeListener(IScopeChangeListener listener);
165
+
166
+ /**
167
+ * This method is used to register a factory for custom context menu items.
168
+ * When the user invokes a context menu anywhere within Burp, the factory
169
+ * will be passed details of the invocation event, and asked to provide any
170
+ * custom context menu items that should be shown.
171
+ *
172
+ * @param factory An object created by the extension that implements the
173
+ * <code>IContextMenuFactory</code> interface.
174
+ */
175
+ void registerContextMenuFactory(IContextMenuFactory factory);
176
+
177
+ /**
178
+ * This method is used to register a factory for custom message editor tabs.
179
+ * For each message editor that already exists, or is subsequently created,
180
+ * within Burp, the factory will be asked to provide a new instance of an
181
+ * <code>IMessageEditorTab</code> object, which can provide custom rendering
182
+ * or editing of HTTP messages.
183
+ *
184
+ * @param factory An object created by the extension that implements the
185
+ * <code>IMessageEditorTabFactory</code> interface.
186
+ */
187
+ void registerMessageEditorTabFactory(IMessageEditorTabFactory factory);
188
+
189
+ /**
190
+ * This method is used to register a provider of Scanner insertion points.
191
+ * For each base request that is actively scanned, Burp will ask the
192
+ * provider to provide any custom scanner insertion points that are
193
+ * appropriate for the request.
194
+ *
195
+ * @param provider An object created by the extension that implements the
196
+ * <code>IScannerInsertionPointProvider</code> interface.
197
+ */
198
+ void registerScannerInsertionPointProvider(
199
+ IScannerInsertionPointProvider provider);
200
+
201
+ /**
202
+ * This method is used to register a custom Scanner check. When performing
203
+ * scanning, Burp will ask the check to perform active or passive scanning
204
+ * on the base request, and report any Scanner issues that are identified.
205
+ *
206
+ * @param check An object created by the extension that implements the
207
+ * <code>IScannerCheck</code> interface.
208
+ */
209
+ void registerScannerCheck(IScannerCheck check);
210
+
211
+ /**
212
+ * This method is used to register a factory for Intruder payloads. Each
213
+ * registered factory will be available within the Intruder UI for the user
214
+ * to select as the payload source for an attack. When this is selected, the
215
+ * factory will be asked to provide a new instance of an
216
+ * <code>IIntruderPayloadGenerator</code> object, which will be used to
217
+ * generate payloads for the attack.
218
+ *
219
+ * @param factory An object created by the extension that implements the
220
+ * <code>IIntruderPayloadGeneratorFactory</code> interface.
221
+ */
222
+ void registerIntruderPayloadGeneratorFactory(
223
+ IIntruderPayloadGeneratorFactory factory);
224
+
225
+ /**
226
+ * This method is used to register a custom Intruder payload processor. Each
227
+ * registered processor will be available within the Intruder UI for the
228
+ * user to select as the action for a payload processing rule.
229
+ *
230
+ * @param processor An object created by the extension that implements the
231
+ * <code>IIntruderPayloadProcessor</code> interface.
232
+ */
233
+ void registerIntruderPayloadProcessor(IIntruderPayloadProcessor processor);
234
+
235
+ /**
236
+ * This method is used to register a custom session handling action. Each
237
+ * registered action will be available within the session handling rule UI
238
+ * for the user to select as a rule action. Users can choose to invoke an
239
+ * action directly in its own right, or following execution of a macro.
240
+ *
241
+ * @param action An object created by the extension that implements the
242
+ * <code>ISessionHandlingAction</code> interface.
243
+ */
244
+ void registerSessionHandlingAction(ISessionHandlingAction action);
245
+
246
+ /**
247
+ * This method is used to unload the extension from Burp Suite.
248
+ */
249
+ void unloadExtension();
250
+
251
+ /**
252
+ * This method is used to add a custom tab to the main Burp Suite window.
253
+ *
254
+ * @param tab An object created by the extension that implements the
255
+ * <code>ITab</code> interface.
256
+ */
257
+ void addSuiteTab(ITab tab);
258
+
259
+ /**
260
+ * This method is used to remove a previously-added tab from the main Burp
261
+ * Suite window.
262
+ *
263
+ * @param tab An object created by the extension that implements the
264
+ * <code>ITab</code> interface.
265
+ */
266
+ void removeSuiteTab(ITab tab);
267
+
268
+ /**
269
+ * This method is used to customize UI components in line with Burp's UI
270
+ * style, including font size, colors, table line spacing, etc.
271
+ *
272
+ * @param component The UI component to be customized.
273
+ */
274
+ void customizeUiComponent(Component component);
275
+
276
+ /**
277
+ * This method is used to create a new instance of Burp's HTTP message
278
+ * editor, for the extension to use in its own UI.
279
+ *
280
+ * @param controller An object created by the extension that implements the
281
+ * <code>IMessageEditorController</code> interface. This parameter is
282
+ * optional and may be <code>null</code>. If it is provided, then the
283
+ * message editor will query the controller when required to obtain details
284
+ * about the currently displayed message, including the
285
+ * <code>IHttpService</code> for the message, and the associated request or
286
+ * response message. If a controller is not provided, then the message
287
+ * editor will not support context menu actions, such as sending requests to
288
+ * other Burp tools.
289
+ * @param editable Indicates whether the editor created should be editable,
290
+ * or used only for message viewing.
291
+ * @return An object that implements the <code>IMessageEditor</code>
292
+ * interface, and which the extension can use in its own UI.
293
+ */
294
+ IMessageEditor createMessageEditor(IMessageEditorController controller,
295
+ boolean editable);
296
+
297
+ /**
298
+ * This method returns the command line arguments that were passed to Burp
299
+ * on startup.
300
+ *
301
+ * @return The command line arguments that were passed to Burp on startup.
302
+ */
303
+ String[] getCommandLineArguments();
304
+
305
+ /**
306
+ * This method is used to save configuration settings for the extension in a
307
+ * persistent way that survives reloads of the extension and of Burp Suite.
308
+ * Saved settings can be retrieved using the method
309
+ * <code>loadExtensionSetting()</code>.
310
+ *
311
+ * @param name The name of the setting.
312
+ * @param value The value of the setting. If this value is <code>null</code>
313
+ * then any existing setting with the specified name will be removed.
314
+ */
315
+ void saveExtensionSetting(String name, String value);
316
+
317
+ /**
318
+ * This method is used to load configuration settings for the extension that
319
+ * were saved using the method
320
+ * <code>saveExtensionSetting()</code>.
321
+ *
322
+ * @param name The name of the setting.
323
+ * @return The value of the setting, or <code>null</code> if no value is
324
+ * set.
325
+ */
326
+ String loadExtensionSetting(String name);
327
+
328
+ /**
329
+ * This method is used to create a new instance of Burp's plain text editor,
330
+ * for the extension to use in its own UI.
331
+ *
332
+ * @return An object that implements the <code>ITextEditor</code> interface,
333
+ * and which the extension can use in its own UI.
334
+ */
335
+ ITextEditor createTextEditor();
336
+
337
+ /**
338
+ * This method can be used to send an HTTP request to the Burp Repeater
339
+ * tool. The request will be displayed in the user interface, but will not
340
+ * be issued until the user initiates this action.
341
+ *
342
+ * @param host The hostname of the remote HTTP server.
343
+ * @param port The port of the remote HTTP server.
344
+ * @param useHttps Flags whether the protocol is HTTPS or HTTP.
345
+ * @param request The full HTTP request.
346
+ * @param tabCaption An optional caption which will appear on the Repeater
347
+ * tab containing the request. If this value is <code>null</code> then a
348
+ * default tab index will be displayed.
349
+ */
350
+ void sendToRepeater(
351
+ String host,
352
+ int port,
353
+ boolean useHttps,
354
+ byte[] request,
355
+ String tabCaption);
356
+
357
+ /**
358
+ * This method can be used to send an HTTP request to the Burp Intruder
359
+ * tool. The request will be displayed in the user interface, and markers
360
+ * for attack payloads will be placed into default locations within the
361
+ * request.
362
+ *
363
+ * @param host The hostname of the remote HTTP server.
364
+ * @param port The port of the remote HTTP server.
365
+ * @param useHttps Flags whether the protocol is HTTPS or HTTP.
366
+ * @param request The full HTTP request.
367
+ */
368
+ void sendToIntruder(
369
+ String host,
370
+ int port,
371
+ boolean useHttps,
372
+ byte[] request);
373
+
374
+ /**
375
+ * This method can be used to send an HTTP request to the Burp Intruder
376
+ * tool. The request will be displayed in the user interface, and markers
377
+ * for attack payloads will be placed into the specified locations within
378
+ * the request.
379
+ *
380
+ * @param host The hostname of the remote HTTP server.
381
+ * @param port The port of the remote HTTP server.
382
+ * @param useHttps Flags whether the protocol is HTTPS or HTTP.
383
+ * @param request The full HTTP request.
384
+ * @param payloadPositionOffsets A list of index pairs representing the
385
+ * payload positions to be used. Each item in the list must be an int[2]
386
+ * array containing the start and end offsets for the payload position.
387
+ */
388
+ void sendToIntruder(
389
+ String host,
390
+ int port,
391
+ boolean useHttps,
392
+ byte[] request,
393
+ List<int[]> payloadPositionOffsets);
394
+
395
+ /**
396
+ * This method can be used to send a seed URL to the Burp Spider tool. If
397
+ * the URL is not within the current Spider scope, the user will be asked if
398
+ * they wish to add the URL to the scope. If the Spider is not currently
399
+ * running, it will be started. The seed URL will be requested, and the
400
+ * Spider will process the application's response in the normal way.
401
+ *
402
+ * @param url The new seed URL to begin spidering from.
403
+ */
404
+ void sendToSpider(
405
+ java.net.URL url);
406
+
407
+ /**
408
+ * This method can be used to send an HTTP request to the Burp Scanner tool
409
+ * to perform an active vulnerability scan. If the request is not within the
410
+ * current active scanning scope, the user will be asked if they wish to
411
+ * proceed with the scan.
412
+ *
413
+ * @param host The hostname of the remote HTTP server.
414
+ * @param port The port of the remote HTTP server.
415
+ * @param useHttps Flags whether the protocol is HTTPS or HTTP.
416
+ * @param request The full HTTP request.
417
+ * @return The resulting scan queue item.
418
+ */
419
+ IScanQueueItem doActiveScan(
420
+ String host,
421
+ int port,
422
+ boolean useHttps,
423
+ byte[] request);
424
+
425
+ /**
426
+ * This method can be used to send an HTTP request to the Burp Scanner tool
427
+ * to perform an active vulnerability scan, based on a custom list of
428
+ * insertion points that are to be scanned. If the request is not within the
429
+ * current active scanning scope, the user will be asked if they wish to
430
+ * proceed with the scan.
431
+ *
432
+ * @param host The hostname of the remote HTTP server.
433
+ * @param port The port of the remote HTTP server.
434
+ * @param useHttps Flags whether the protocol is HTTPS or HTTP.
435
+ * @param request The full HTTP request.
436
+ * @param insertionPointOffsets A list of index pairs representing the
437
+ * positions of the insertion points that should be scanned. Each item in
438
+ * the list must be an int[2] array containing the start and end offsets for
439
+ * the insertion point.
440
+ * @return The resulting scan queue item.
441
+ */
442
+ IScanQueueItem doActiveScan(
443
+ String host,
444
+ int port,
445
+ boolean useHttps,
446
+ byte[] request,
447
+ List<int[]> insertionPointOffsets);
448
+
449
+ /**
450
+ * This method can be used to send an HTTP request to the Burp Scanner tool
451
+ * to perform a passive vulnerability scan.
452
+ *
453
+ * @param host The hostname of the remote HTTP server.
454
+ * @param port The port of the remote HTTP server.
455
+ * @param useHttps Flags whether the protocol is HTTPS or HTTP.
456
+ * @param request The full HTTP request.
457
+ * @param response The full HTTP response.
458
+ */
459
+ void doPassiveScan(
460
+ String host,
461
+ int port,
462
+ boolean useHttps,
463
+ byte[] request,
464
+ byte[] response);
465
+
466
+ /**
467
+ * This method can be used to issue HTTP requests and retrieve their
468
+ * responses.
469
+ *
470
+ * @param httpService The HTTP service to which the request should be sent.
471
+ * @param request The full HTTP request.
472
+ * @return An object that implements the <code>IHttpRequestResponse</code>
473
+ * interface, and which the extension can query to obtain the details of the
474
+ * response.
475
+ */
476
+ IHttpRequestResponse makeHttpRequest(IHttpService httpService,
477
+ byte[] request);
478
+
479
+ /**
480
+ * This method can be used to issue HTTP requests and retrieve their
481
+ * responses.
482
+ *
483
+ * @param host The hostname of the remote HTTP server.
484
+ * @param port The port of the remote HTTP server.
485
+ * @param useHttps Flags whether the protocol is HTTPS or HTTP.
486
+ * @param request The full HTTP request.
487
+ * @return The full response retrieved from the remote server.
488
+ */
489
+ byte[] makeHttpRequest(
490
+ String host,
491
+ int port,
492
+ boolean useHttps,
493
+ byte[] request);
494
+
495
+ /**
496
+ * This method can be used to query whether a specified URL is within the
497
+ * current Suite-wide scope.
498
+ *
499
+ * @param url The URL to query.
500
+ * @return Returns <code>true</code> if the URL is within the current
501
+ * Suite-wide scope.
502
+ */
503
+ boolean isInScope(java.net.URL url);
504
+
505
+ /**
506
+ * This method can be used to include the specified URL in the Suite-wide
507
+ * scope.
508
+ *
509
+ * @param url The URL to include in the Suite-wide scope.
510
+ */
511
+ void includeInScope(java.net.URL url);
512
+
513
+ /**
514
+ * This method can be used to exclude the specified URL from the Suite-wide
515
+ * scope.
516
+ *
517
+ * @param url The URL to exclude from the Suite-wide scope.
518
+ */
519
+ void excludeFromScope(java.net.URL url);
520
+
521
+ /**
522
+ * This method can be used to display a specified message in the Burp Suite
523
+ * alerts tab.
524
+ *
525
+ * @param message The alert message to display.
526
+ */
527
+ void issueAlert(String message);
528
+
529
+ /**
530
+ * This method returns details of all items in the Proxy history.
531
+ *
532
+ * @return The contents of the Proxy history.
533
+ */
534
+ IHttpRequestResponse[] getProxyHistory();
535
+
536
+ /**
537
+ * This method returns details of items in the site map.
538
+ *
539
+ * @param urlPrefix This parameter can be used to specify a URL prefix, in
540
+ * order to extract a specific subset of the site map. The method performs a
541
+ * simple case-sensitive text match, returning all site map items whose URL
542
+ * begins with the specified prefix. If this parameter is null, the entire
543
+ * site map is returned.
544
+ *
545
+ * @return Details of items in the site map.
546
+ */
547
+ IHttpRequestResponse[] getSiteMap(String urlPrefix);
548
+
549
+ /**
550
+ * This method returns all of the current scan issues for URLs matching the
551
+ * specified literal prefix.
552
+ *
553
+ * @param urlPrefix This parameter can be used to specify a URL prefix, in
554
+ * order to extract a specific subset of scan issues. The method performs a
555
+ * simple case-sensitive text match, returning all scan issues whose URL
556
+ * begins with the specified prefix. If this parameter is null, all issues
557
+ * are returned.
558
+ * @return Details of the scan issues.
559
+ */
560
+ IScanIssue[] getScanIssues(String urlPrefix);
561
+
562
+ /**
563
+ * This method is used to retrieve the contents of Burp's session handling
564
+ * cookie jar. Extensions that provide an
565
+ * <code>ISessionHandlingAction</code> can query and update the cookie jar
566
+ * in order to handle unusual session handling mechanisms.
567
+ *
568
+ * @return A list of <code>ICookie</code> objects representing the contents
569
+ * of Burp's session handling cookie jar.
570
+ */
571
+ List<ICookie> getCookieJarContents();
572
+
573
+ /**
574
+ * This method is used to update the contents of Burp's session handling
575
+ * cookie jar. Extensions that provide an
576
+ * <code>ISessionHandlingAction</code> can query and update the cookie jar
577
+ * in order to handle unusual session handling mechanisms.
578
+ *
579
+ * @param cookie An <code>ICookie</code> object containing details of the
580
+ * cookie to be updated. If the cookie jar already contains a cookie that
581
+ * matches the specified domain and name, then that cookie will be updated
582
+ * with the new value and expiration, unless the new value is
583
+ * <code>null</code>, in which case the cookie will be removed. If the
584
+ * cookie jar does not already contain a cookie that matches the specified
585
+ * domain and name, then the cookie will be added.
586
+ */
587
+ void updateCookieJar(ICookie cookie);
588
+
589
+ /**
590
+ * This method can be used to add an item to Burp's site map with the
591
+ * specified request/response details. This will overwrite the details of
592
+ * any existing matching item in the site map.
593
+ *
594
+ * @param item Details of the item to be added to the site map
595
+ */
596
+ void addToSiteMap(IHttpRequestResponse item);
597
+
598
+ /**
599
+ * This method can be used to restore Burp's state from a specified saved
600
+ * state file. This method blocks until the restore operation is completed,
601
+ * and must not be called from the event dispatch thread.
602
+ *
603
+ * @param file The file containing Burp's saved state.
604
+ */
605
+ void restoreState(java.io.File file);
606
+
607
+ /**
608
+ * This method can be used to save Burp's state to a specified file. This
609
+ * method blocks until the save operation is completed, and must not be
610
+ * called from the event dispatch thread.
611
+ *
612
+ * @param file The file to save Burp's state in.
613
+ */
614
+ void saveState(java.io.File file);
615
+
616
+ /**
617
+ * This method causes Burp to save all of its current configuration as a Map
618
+ * of name/value Strings.
619
+ *
620
+ * @return A Map of name/value Strings reflecting Burp's current
621
+ * configuration.
622
+ */
623
+ Map<String, String> saveConfig();
624
+
625
+ /**
626
+ * This method causes Burp to load a new configuration from the Map of
627
+ * name/value Strings provided. Any settings not specified in the Map will
628
+ * be restored to their default values. To selectively update only some
629
+ * settings and leave the rest unchanged, you should first call
630
+ * <code>saveConfig()</code> to obtain Burp's current configuration, modify
631
+ * the relevant items in the Map, and then call
632
+ * <code>loadConfig()</code> with the same Map.
633
+ *
634
+ * @param config A map of name/value Strings to use as Burp's new
635
+ * configuration.
636
+ */
637
+ void loadConfig(Map<String, String> config);
638
+
639
+ /**
640
+ * This method sets the master interception mode for Burp Proxy.
641
+ *
642
+ * @param enabled Indicates whether interception of Proxy messages should be
643
+ * enabled.
644
+ */
645
+ void setProxyInterceptionEnabled(boolean enabled);
646
+
647
+ /**
648
+ * This method retrieves information about the version of Burp in which the
649
+ * extension is running. It can be used by extensions to dynamically adjust
650
+ * their behavior depending on the functionality and APIs supported by the
651
+ * current version.
652
+ *
653
+ * @return An array of Strings comprised of: the product name (e.g. Burp
654
+ * Suite Professional), the major version (e.g. 1.5), the minor version
655
+ * (e.g. 03)
656
+ */
657
+ String[] getBurpVersion();
658
+
659
+ /**
660
+ * This method can be used to shut down Burp programmatically, with an
661
+ * optional prompt to the user. If the method returns, the user canceled the
662
+ * shutdown prompt.
663
+ *
664
+ * @param promptUser Indicates whether to prompt the user to confirm the
665
+ * shutdown.
666
+ */
667
+ void exitSuite(boolean promptUser);
668
+
669
+ /**
670
+ * This method is used to create a temporary file on disk containing the
671
+ * provided data. Extensions can use temporary files for long-term storage
672
+ * of runtime data, avoiding the need to retain that data in memory.
673
+ *
674
+ * @param buffer The data to be saved to a temporary file.
675
+ * @return An object that implements the <code>ITempFile</code> interface.
676
+ */
677
+ ITempFile saveToTempFile(byte[] buffer);
678
+
679
+ /**
680
+ * This method is used to save the request and response of an
681
+ * <code>IHttpRequestResponse</code> object to temporary files, so that they
682
+ * are no longer held in memory. Extensions can used this method to convert
683
+ * <code>IHttpRequestResponse</code> objects into a form suitable for
684
+ * long-term storage.
685
+ *
686
+ * @param httpRequestResponse The <code>IHttpRequestResponse</code> object
687
+ * whose request and response messages are to be saved to temporary files.
688
+ * @return An object that implements the
689
+ * <code>IHttpRequestResponsePersisted</code> interface.
690
+ */
691
+ IHttpRequestResponsePersisted saveBuffersToTempFiles(
692
+ IHttpRequestResponse httpRequestResponse);
693
+
694
+ /**
695
+ * This method is used to apply markers to an HTTP request or response, at
696
+ * offsets into the message that are relevant for some particular purpose.
697
+ * Markers are used in various situations, such as specifying Intruder
698
+ * payload positions, Scanner insertion points, and highlights in Scanner
699
+ * issues.
700
+ *
701
+ * @param httpRequestResponse The <code>IHttpRequestResponse</code> object
702
+ * to which the markers should be applied.
703
+ * @param requestMarkers A list of index pairs representing the offsets of
704
+ * markers to be applied to the request message. Each item in the list must
705
+ * be an int[2] array containing the start and end offsets for the marker.
706
+ * This parameter is optional and may be <code>null</code> if no request
707
+ * markers are required.
708
+ * @param responseMarkers A list of index pairs representing the offsets of
709
+ * markers to be applied to the response message. Each item in the list must
710
+ * be an int[2] array containing the start and end offsets for the marker.
711
+ * This parameter is optional and may be <code>null</code> if no response
712
+ * markers are required.
713
+ * @return An object that implements the
714
+ * <code>IHttpRequestResponseWithMarkers</code> interface.
715
+ */
716
+ IHttpRequestResponseWithMarkers applyMarkers(
717
+ IHttpRequestResponse httpRequestResponse,
718
+ List<int[]> requestMarkers,
719
+ List<int[]> responseMarkers);
720
+
721
+ /**
722
+ * This method is used to obtain the descriptive name for the Burp tool
723
+ * identified by the tool flag provided.
724
+ *
725
+ * @param toolFlag A flag identifying a Burp tool ( <code>TOOL_PROXY</code>,
726
+ * <code>TOOL_SCANNER</code>, etc.). Tool flags are defined within this
727
+ * interface.
728
+ * @return The descriptive name for the specified tool.
729
+ */
730
+ String getToolName(int toolFlag);
731
+
732
+ /**
733
+ * This method is used to register a new Scanner issue. <b>Note:</b>
734
+ * Wherever possible, extensions should implement custom Scanner checks
735
+ * using
736
+ * <code>IScannerCheck</code> and report issues via those checks, so as to
737
+ * integrate with Burp's user-driven workflow, and ensure proper
738
+ * consolidation of duplicate reported issues. This method is only designed
739
+ * for tasks outside of the normal testing workflow, such as importing
740
+ * results from other scanning tools.
741
+ *
742
+ * @param issue An object created by the extension that implements the
743
+ * <code>IScanIssue</code> interface.
744
+ */
745
+ void addScanIssue(IScanIssue issue);
746
+
747
+ /**
748
+ * This method parses the specified request and returns details of each
749
+ * request parameter.
750
+ *
751
+ * @param request The request to be parsed.
752
+ * @return An array of: <code>String[] { name, value, type }</code>
753
+ * containing details of the parameters contained within the request.
754
+ * @deprecated Use <code>IExtensionHelpers.analyzeRequest()</code> instead.
755
+ */
756
+ @Deprecated
757
+ String[][] getParameters(byte[] request);
758
+
759
+ /**
760
+ * This method parses the specified request and returns details of each HTTP
761
+ * header.
762
+ *
763
+ * @param message The request to be parsed.
764
+ * @return An array of HTTP headers.
765
+ * @deprecated Use <code>IExtensionHelpers.analyzeRequest()</code> or
766
+ * <code>IExtensionHelpers.analyzeResponse()</code> instead.
767
+ */
768
+ @Deprecated
769
+ String[] getHeaders(byte[] message);
770
+
771
+ /**
772
+ * This method can be used to register a new menu item which will appear on
773
+ * the various context menus that are used throughout Burp Suite to handle
774
+ * user-driven actions.
775
+ *
776
+ * @param menuItemCaption The caption to be displayed on the menu item.
777
+ * @param menuItemHandler The handler to be invoked when the user clicks on
778
+ * the menu item.
779
+ * @deprecated Use <code>registerContextMenuFactory()</code> instead.
780
+ */
781
+ @Deprecated
782
+ void registerMenuItem(
783
+ String menuItemCaption,
784
+ IMenuItemHandler menuItemHandler);
785
+ }