buby 1.3.3-java → 1.5.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +28 -14
- data/Rakefile +96 -6
- data/VERSION.yml +5 -0
- data/bin/buby +2 -0
- data/buby.gemspec +102 -17
- data/{java/src → ext/buby/burp}/BurpExtender.java +189 -29
- data/ext/burp_interfaces/burp/IBurpExtender.java +31 -0
- data/ext/burp_interfaces/burp/IBurpExtenderCallbacks.java +785 -0
- data/ext/burp_interfaces/burp/IContextMenuFactory.java +38 -0
- data/ext/burp_interfaces/burp/IContextMenuInvocation.java +156 -0
- data/ext/burp_interfaces/burp/ICookie.java +53 -0
- data/ext/burp_interfaces/burp/IExtensionHelpers.java +352 -0
- data/ext/burp_interfaces/burp/IExtensionStateListener.java +27 -0
- data/ext/burp_interfaces/burp/IHttpListener.java +37 -0
- data/ext/burp_interfaces/burp/IHttpRequestResponse.java +102 -0
- data/ext/burp_interfaces/burp/IHttpRequestResponsePersisted.java +26 -0
- data/ext/burp_interfaces/burp/IHttpRequestResponseWithMarkers.java +44 -0
- data/ext/burp_interfaces/burp/IHttpService.java +39 -0
- data/ext/burp_interfaces/burp/IInterceptedProxyMessage.java +116 -0
- data/ext/burp_interfaces/burp/IIntruderAttack.java +31 -0
- data/ext/burp_interfaces/burp/IIntruderPayloadGenerator.java +50 -0
- data/ext/burp_interfaces/burp/IIntruderPayloadGeneratorFactory.java +40 -0
- data/ext/burp_interfaces/burp/IIntruderPayloadProcessor.java +45 -0
- data/{java/src → ext/burp_interfaces}/burp/IMenuItemHandler.java +36 -40
- data/ext/burp_interfaces/burp/IMessageEditor.java +64 -0
- data/ext/burp_interfaces/burp/IMessageEditorController.java +49 -0
- data/ext/burp_interfaces/burp/IMessageEditorTab.java +102 -0
- data/ext/burp_interfaces/burp/IMessageEditorTabFactory.java +38 -0
- data/ext/burp_interfaces/burp/IParameter.java +104 -0
- data/ext/burp_interfaces/burp/IProxyListener.java +37 -0
- data/ext/burp_interfaces/burp/IRequestInfo.java +95 -0
- data/ext/burp_interfaces/burp/IResponseInfo.java +54 -0
- data/ext/burp_interfaces/burp/IScanIssue.java +120 -0
- data/ext/burp_interfaces/burp/IScanQueueItem.java +80 -0
- data/ext/burp_interfaces/burp/IScannerCheck.java +89 -0
- data/ext/burp_interfaces/burp/IScannerInsertionPoint.java +156 -0
- data/ext/burp_interfaces/burp/IScannerInsertionPointProvider.java +38 -0
- data/ext/burp_interfaces/burp/IScannerListener.java +30 -0
- data/ext/burp_interfaces/burp/IScopeChangeListener.java +25 -0
- data/ext/burp_interfaces/burp/ISessionHandlingAction.java +51 -0
- data/ext/burp_interfaces/burp/ITab.java +38 -0
- data/ext/burp_interfaces/burp/ITempFile.java +33 -0
- data/ext/burp_interfaces/burp/ITextEditor.java +90 -0
- data/lib/buby/burp_extender/console_frame.rb +33 -0
- data/lib/buby/burp_extender/console_pane.rb +26 -0
- data/lib/buby/burp_extender/console_tab.rb +15 -0
- data/lib/buby/burp_extender/context_menu.rb +29 -0
- data/lib/buby/burp_extender/context_menu_factory.rb +17 -0
- data/lib/buby/burp_extender/context_menu_item.rb +13 -0
- data/lib/buby/burp_extender/jcheck_box_menu_item.rb +12 -0
- data/lib/buby/burp_extender/jmenu.rb +11 -0
- data/lib/buby/burp_extender/jmenu_item.rb +12 -0
- data/lib/buby/burp_extender/menu.rb +11 -0
- data/lib/buby/burp_extender/menu_item.rb +12 -0
- data/lib/buby/burp_extender.rb +339 -0
- data/lib/buby/context_menu_factory.rb +35 -0
- data/lib/buby/cookie.rb +37 -0
- data/lib/buby/extender.rb +156 -0
- data/lib/buby/http_listener.rb +29 -0
- data/lib/buby/{extends → implants}/buby_array_wrapper.rb +0 -0
- data/lib/buby/implants/context_menu_invocation.rb +113 -0
- data/lib/buby/implants/cookie.rb +47 -0
- data/lib/buby/implants/extension_helpers.rb +286 -0
- data/lib/buby/{extends → implants}/http_request_response.rb +8 -1
- data/lib/buby/implants/intercepted_proxy_message.rb +53 -0
- data/lib/buby/implants/intruder_attack.rb +42 -0
- data/lib/buby/implants/jruby.rb +64 -0
- data/lib/buby/implants/message_editor.rb +70 -0
- data/lib/buby/implants/message_editor_controller.rb +60 -0
- data/lib/buby/implants/parameter.rb +84 -0
- data/lib/buby/implants/request_info.rb +47 -0
- data/lib/buby/implants/response_info.rb +44 -0
- data/lib/buby/{extends → implants}/scan_issue.rb +1 -2
- data/lib/buby/implants/scan_queue_item.rb +53 -0
- data/lib/buby/implants/scanner_insertion_point.rb +92 -0
- data/lib/buby/implants/temp_file.rb +43 -0
- data/lib/buby/implants/text_editor.rb +63 -0
- data/lib/buby/implants.rb +28 -0
- data/lib/buby/intruder_payload_generator.rb +60 -0
- data/lib/buby/intruder_payload_generator_factory.rb +32 -0
- data/lib/buby/intruder_payload_processor.rb +38 -0
- data/lib/buby/message_editor_controller.rb +41 -0
- data/lib/buby/message_editor_tab.rb +98 -0
- data/lib/buby/message_editor_tab_factory.rb +28 -0
- data/lib/buby/parameter/base.rb +40 -0
- data/lib/buby/parameter/body.rb +7 -0
- data/lib/buby/parameter/cookie.rb +7 -0
- data/lib/buby/parameter/url.rb +7 -0
- data/lib/buby/parameter.rb +15 -0
- data/lib/buby/proxy_listener.rb +26 -0
- data/lib/buby/scan_issue.rb +112 -0
- data/lib/buby/scanner_check.rb +84 -0
- data/lib/buby/scanner_insertion_point.rb +118 -0
- data/lib/buby/scanner_insertion_point_provider.rb +27 -0
- data/lib/buby/scanner_listener.rb +22 -0
- data/lib/buby/scope_change_listener.rb +19 -0
- data/lib/buby/session_handling_action.rb +43 -0
- data/lib/buby/tab.rb +37 -0
- data/lib/buby/version.rb +9 -0
- data/lib/buby.rb +892 -101
- metadata +118 -22
- data/VERSION +0 -1
- data/java/buby.jar +0 -0
- data/java/src/burp/IBurpExtender.java +0 -180
- data/java/src/burp/IBurpExtenderCallbacks.java +0 -373
- data/java/src/burp/IHttpRequestResponse.java +0 -156
- data/java/src/burp/IScanIssue.java +0 -106
- data/java/src/burp/IScanQueueItem.java +0 -76
- data/lib/buby/extends.rb +0 -4
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
package burp;
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* @(#)IProxyListener.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
|
+
* Extensions can implement this interface and then call
|
|
14
|
+
* <code>IBurpExtenderCallbacks.registerProxyListener()</code> to register a
|
|
15
|
+
* Proxy listener. The listener will be notified of requests and responses being
|
|
16
|
+
* processed by the Proxy tool. Extensions can perform custom analysis or
|
|
17
|
+
* modification of these messages, and control in-UI message interception, by
|
|
18
|
+
* registering a proxy listener.
|
|
19
|
+
*/
|
|
20
|
+
public interface IProxyListener
|
|
21
|
+
{
|
|
22
|
+
/**
|
|
23
|
+
* This method is invoked when an HTTP message is being processed by the
|
|
24
|
+
* Proxy.
|
|
25
|
+
*
|
|
26
|
+
* @param messageIsRequest Indicates whether the HTTP message is a request
|
|
27
|
+
* or a response.
|
|
28
|
+
* @param message An
|
|
29
|
+
* <code>IInterceptedProxyMessage</code> object that extensions can use to
|
|
30
|
+
* query and update details of the message, and control whether the message
|
|
31
|
+
* should be intercepted and displayed to the user for manual review or
|
|
32
|
+
* modification.
|
|
33
|
+
*/
|
|
34
|
+
void processProxyMessage(
|
|
35
|
+
boolean messageIsRequest,
|
|
36
|
+
IInterceptedProxyMessage message);
|
|
37
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
package burp;
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* @(#)IRequestInfo.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.net.URL;
|
|
13
|
+
import java.util.List;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* This interface is used to retrieve key details about an HTTP request.
|
|
17
|
+
* Extensions can obtain an
|
|
18
|
+
* <code>IRequestInfo</code> object for a given request by calling
|
|
19
|
+
* <code>IExtensionHelpers.analyzeRequest()</code>.
|
|
20
|
+
*/
|
|
21
|
+
public interface IRequestInfo
|
|
22
|
+
{
|
|
23
|
+
/**
|
|
24
|
+
* Used to indicate that there is no content.
|
|
25
|
+
*/
|
|
26
|
+
static final byte CONTENT_TYPE_NONE = 0;
|
|
27
|
+
/**
|
|
28
|
+
* Used to indicate URL-encoded content.
|
|
29
|
+
*/
|
|
30
|
+
static final byte CONTENT_TYPE_URL_ENCODED = 1;
|
|
31
|
+
/**
|
|
32
|
+
* Used to indicate multi-part content.
|
|
33
|
+
*/
|
|
34
|
+
static final byte CONTENT_TYPE_MULTIPART = 2;
|
|
35
|
+
/**
|
|
36
|
+
* Used to indicate XML content.
|
|
37
|
+
*/
|
|
38
|
+
static final byte CONTENT_TYPE_XML = 3;
|
|
39
|
+
/**
|
|
40
|
+
* Used to indicate JSON content.
|
|
41
|
+
*/
|
|
42
|
+
static final byte CONTENT_TYPE_JSON = 4;
|
|
43
|
+
/**
|
|
44
|
+
* Used to indicate AMF content.
|
|
45
|
+
*/
|
|
46
|
+
static final byte CONTENT_TYPE_AMF = 5;
|
|
47
|
+
/**
|
|
48
|
+
* Used to indicate unknown content.
|
|
49
|
+
*/
|
|
50
|
+
static final byte CONTENT_TYPE_UNKNOWN = -1;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* This method is used to obtain the HTTP method used in the request.
|
|
54
|
+
*
|
|
55
|
+
* @return The HTTP method used in the request.
|
|
56
|
+
*/
|
|
57
|
+
String getMethod();
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* This method is used to obtain the URL in the request.
|
|
61
|
+
*
|
|
62
|
+
* @return The URL in the request.
|
|
63
|
+
*/
|
|
64
|
+
URL getUrl();
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* This method is used to obtain the HTTP headers contained in the request.
|
|
68
|
+
*
|
|
69
|
+
* @return The HTTP headers contained in the request.
|
|
70
|
+
*/
|
|
71
|
+
List<String> getHeaders();
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* This method is used to obtain the parameters contained in the request.
|
|
75
|
+
*
|
|
76
|
+
* @return The parameters contained in the request.
|
|
77
|
+
*/
|
|
78
|
+
List<IParameter> getParameters();
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* This method is used to obtain the offset within the request where the
|
|
82
|
+
* message body begins.
|
|
83
|
+
*
|
|
84
|
+
* @return The offset within the request where the message body begins.
|
|
85
|
+
*/
|
|
86
|
+
int getBodyOffset();
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* This method is used to obtain the content type of the message body.
|
|
90
|
+
*
|
|
91
|
+
* @return An indication of the content type of the message body. Available
|
|
92
|
+
* types are defined within this interface.
|
|
93
|
+
*/
|
|
94
|
+
byte getContentType();
|
|
95
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
package burp;
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* @(#)IResponseInfo.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.util.List;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* This interface is used to retrieve key details about an HTTP response.
|
|
16
|
+
* Extensions can obtain an
|
|
17
|
+
* <code>IResponseInfo</code> object for a given response by calling
|
|
18
|
+
* <code>IExtensionHelpers.analyzeResponse()</code>.
|
|
19
|
+
*/
|
|
20
|
+
public interface IResponseInfo
|
|
21
|
+
{
|
|
22
|
+
/**
|
|
23
|
+
* This method is used to obtain the HTTP headers contained in the response.
|
|
24
|
+
*
|
|
25
|
+
* @return The HTTP headers contained in the response.
|
|
26
|
+
*/
|
|
27
|
+
List<String> getHeaders();
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* This method is used to obtain the offset within the response where the
|
|
31
|
+
* message body begins.
|
|
32
|
+
*
|
|
33
|
+
* @return The offset within the response where the message body begins.
|
|
34
|
+
*/
|
|
35
|
+
int getBodyOffset();
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* This method is used to obtain the HTTP status code contained in the
|
|
39
|
+
* response.
|
|
40
|
+
*
|
|
41
|
+
* @return The HTTP status code contained in the response.
|
|
42
|
+
*/
|
|
43
|
+
short getStatusCode();
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* This method is used to obtain details of the HTTP cookies set in the
|
|
47
|
+
* response.
|
|
48
|
+
*
|
|
49
|
+
* @return A list of
|
|
50
|
+
* <code>ICookie</code> objects representing the cookies set in the
|
|
51
|
+
* response, if any.
|
|
52
|
+
*/
|
|
53
|
+
List<ICookie> getCookies();
|
|
54
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
package burp;
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* @(#)IScanIssue.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
|
+
* This interface is used to retrieve details of Scanner issues. Extensions can
|
|
14
|
+
* obtain details of issues by registering an
|
|
15
|
+
* <code>IScannerListener</code> or by calling
|
|
16
|
+
* <code>IBurpExtenderCallbacks.getScanIssues()</code>. Extensions can also add
|
|
17
|
+
* custom Scanner issues by registering an
|
|
18
|
+
* <code>IScannerCheck</code> or calling
|
|
19
|
+
* <code>IBurpExtenderCallbacks.addScanIssue()</code>, and providing their own
|
|
20
|
+
* implementations of this interface
|
|
21
|
+
*/
|
|
22
|
+
public interface IScanIssue
|
|
23
|
+
{
|
|
24
|
+
/**
|
|
25
|
+
* This method returns the URL for which the issue was generated.
|
|
26
|
+
*
|
|
27
|
+
* @return The URL for which the issue was generated.
|
|
28
|
+
*/
|
|
29
|
+
java.net.URL getUrl();
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* This method returns the name of the issue type.
|
|
33
|
+
*
|
|
34
|
+
* @return The name of the issue type (e.g. "SQL injection").
|
|
35
|
+
*/
|
|
36
|
+
String getIssueName();
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* This method returns a numeric identifier of the issue type. See the Burp
|
|
40
|
+
* Scanner help documentation for a listing of all the issue types.
|
|
41
|
+
*
|
|
42
|
+
* @return A numeric identifier of the issue type.
|
|
43
|
+
*/
|
|
44
|
+
int getIssueType();
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* This method returns the issue severity level.
|
|
48
|
+
*
|
|
49
|
+
* @return The issue severity level. Expected values are "High", "Medium",
|
|
50
|
+
* "Low", "Information" or "False positive".
|
|
51
|
+
*
|
|
52
|
+
*/
|
|
53
|
+
String getSeverity();
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* This method returns the issue confidence level.
|
|
57
|
+
*
|
|
58
|
+
* @return The issue confidence level. Expected values are "Certain", "Firm"
|
|
59
|
+
* or "Tentative".
|
|
60
|
+
*/
|
|
61
|
+
String getConfidence();
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* This method returns a background description for this type of issue.
|
|
65
|
+
*
|
|
66
|
+
* @return A background description for this type of issue, or
|
|
67
|
+
* <code>null</code> if none applies.
|
|
68
|
+
*/
|
|
69
|
+
String getIssueBackground();
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* This method returns a background description of the remediation for this
|
|
73
|
+
* type of issue.
|
|
74
|
+
*
|
|
75
|
+
* @return A background description of the remediation for this type of
|
|
76
|
+
* issue, or
|
|
77
|
+
* <code>null</code> if none applies.
|
|
78
|
+
*/
|
|
79
|
+
String getRemediationBackground();
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* This method returns detailed information about this specific instance of
|
|
83
|
+
* the issue.
|
|
84
|
+
*
|
|
85
|
+
* @return Detailed information about this specific instance of the issue,
|
|
86
|
+
* or
|
|
87
|
+
* <code>null</code> if none applies.
|
|
88
|
+
*/
|
|
89
|
+
String getIssueDetail();
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* This method returns detailed information about the remediation for this
|
|
93
|
+
* specific instance of the issue.
|
|
94
|
+
*
|
|
95
|
+
* @return Detailed information about the remediation for this specific
|
|
96
|
+
* instance of the issue, or
|
|
97
|
+
* <code>null</code> if none applies.
|
|
98
|
+
*/
|
|
99
|
+
String getRemediationDetail();
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* This method returns the HTTP messages on the basis of which the issue was
|
|
103
|
+
* generated.
|
|
104
|
+
*
|
|
105
|
+
* @return The HTTP messages on the basis of which the issue was generated.
|
|
106
|
+
* <b>Note:</b> The items in this array should be instances of
|
|
107
|
+
* <code>IHttpRequestResponseWithMarkers</code> if applicable, so that
|
|
108
|
+
* details of the relevant portions of the request and response messages are
|
|
109
|
+
* available.
|
|
110
|
+
*/
|
|
111
|
+
IHttpRequestResponse[] getHttpMessages();
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* This method returns the HTTP service for which the issue was generated.
|
|
115
|
+
*
|
|
116
|
+
* @return The HTTP service for which the issue was generated.
|
|
117
|
+
*/
|
|
118
|
+
IHttpService getHttpService();
|
|
119
|
+
|
|
120
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
package burp;
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* @(#)IScanQueueItem.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
|
+
* This interface is used to retrieve details of items in the Burp Scanner
|
|
14
|
+
* active scan queue. Extensions can obtain references to scan queue items by
|
|
15
|
+
* calling
|
|
16
|
+
* <code>IBurpExtenderCallbacks.doActiveScan()</code>.
|
|
17
|
+
*/
|
|
18
|
+
public interface IScanQueueItem
|
|
19
|
+
{
|
|
20
|
+
/**
|
|
21
|
+
* This method returns a description of the status of the scan queue item.
|
|
22
|
+
*
|
|
23
|
+
* @return A description of the status of the scan queue item.
|
|
24
|
+
*/
|
|
25
|
+
String getStatus();
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* This method returns an indication of the percentage completed for the
|
|
29
|
+
* scan queue item.
|
|
30
|
+
*
|
|
31
|
+
* @return An indication of the percentage completed for the scan queue
|
|
32
|
+
* item.
|
|
33
|
+
*/
|
|
34
|
+
byte getPercentageComplete();
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* This method returns the number of requests that have been made for the
|
|
38
|
+
* scan queue item.
|
|
39
|
+
*
|
|
40
|
+
* @return The number of requests that have been made for the scan queue
|
|
41
|
+
* item.
|
|
42
|
+
*/
|
|
43
|
+
int getNumRequests();
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* This method returns the number of network errors that have occurred for
|
|
47
|
+
* the scan queue item.
|
|
48
|
+
*
|
|
49
|
+
* @return The number of network errors that have occurred for the scan
|
|
50
|
+
* queue item.
|
|
51
|
+
*/
|
|
52
|
+
int getNumErrors();
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* This method returns the number of attack insertion points being used for
|
|
56
|
+
* the scan queue item.
|
|
57
|
+
*
|
|
58
|
+
* @return The number of attack insertion points being used for the scan
|
|
59
|
+
* queue item.
|
|
60
|
+
*/
|
|
61
|
+
int getNumInsertionPoints();
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* This method allows the scan queue item to be canceled.
|
|
65
|
+
*/
|
|
66
|
+
void cancel();
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* This method returns details of the issues generated for the scan queue
|
|
70
|
+
* item. <b>Note:</b> different items within the scan queue may contain
|
|
71
|
+
* duplicated versions of the same issues - for example, if the same request
|
|
72
|
+
* has been scanned multiple times. Duplicated issues are consolidated in
|
|
73
|
+
* the main view of scan results. Extensions can register an
|
|
74
|
+
* <code>IScannerListener</code> to get details only of unique, newly
|
|
75
|
+
* discovered Scanner issues post-consolidation.
|
|
76
|
+
*
|
|
77
|
+
* @return Details of the issues generated for the scan queue item.
|
|
78
|
+
*/
|
|
79
|
+
IScanIssue[] getIssues();
|
|
80
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
package burp;
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* @(#)IScannerCheck.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.util.List;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Extensions can implement this interface and then call
|
|
16
|
+
* <code>IBurpExtenderCallbacks.registerScannerCheck()</code> to register a
|
|
17
|
+
* custom Scanner check. When performing scanning, Burp will ask the check to
|
|
18
|
+
* perform active or passive scanning on the base request, and report any
|
|
19
|
+
* Scanner issues that are identified.
|
|
20
|
+
*/
|
|
21
|
+
public interface IScannerCheck
|
|
22
|
+
{
|
|
23
|
+
/**
|
|
24
|
+
* The Scanner invokes this method for each base request / response that is
|
|
25
|
+
* passively scanned. <b>Note:</b> Extensions should not only analyze the
|
|
26
|
+
* HTTP messages provided during passive scanning, and should not make any
|
|
27
|
+
* new HTTP requests of their own.
|
|
28
|
+
*
|
|
29
|
+
* @param baseRequestResponse The base HTTP request / response that should
|
|
30
|
+
* be passively scanned.
|
|
31
|
+
* @return A list of
|
|
32
|
+
* <code>IScanIssue</code> objects, or
|
|
33
|
+
* <code>null</code> if no issues are identified.
|
|
34
|
+
*/
|
|
35
|
+
List<IScanIssue> doPassiveScan(IHttpRequestResponse baseRequestResponse);
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The Scanner invokes this method for each insertion point that is actively
|
|
39
|
+
* scanned. Extensions may issue HTTP requests as required to carry out
|
|
40
|
+
* active scanning, and should use the
|
|
41
|
+
* <code>IScannerInsertionPoint</code> object provided to build scan
|
|
42
|
+
* requests for particular payloads. <b>Note:</b> Extensions are responsible
|
|
43
|
+
* for ensuring that attack payloads are suitably encoded within requests
|
|
44
|
+
* (for example, by URL-encoding relevant metacharacters in the URL query
|
|
45
|
+
* string). Encoding is not automatically carried out by the
|
|
46
|
+
* <code>IScannerInsertionPoint</code>, because this would prevent Scanner
|
|
47
|
+
* checks from testing for certain input filter bypasses. Extensions should
|
|
48
|
+
* query the
|
|
49
|
+
* <code>IScannerInsertionPoint</code> to determine its type, and apply any
|
|
50
|
+
* encoding that may be appropriate.
|
|
51
|
+
*
|
|
52
|
+
* @param baseRequestResponse The base HTTP request / response that should
|
|
53
|
+
* be actively scanned.
|
|
54
|
+
* @param insertionPoint An
|
|
55
|
+
* <code>IScannerInsertionPoint</code> object that can be queried to obtain
|
|
56
|
+
* details of the insertion point being tested, and can be used to build
|
|
57
|
+
* scan requests for particular payloads.
|
|
58
|
+
* @return A list of
|
|
59
|
+
* <code>IScanIssue</code> objects, or
|
|
60
|
+
* <code>null</code> if no issues are identified.
|
|
61
|
+
*/
|
|
62
|
+
List<IScanIssue> doActiveScan(
|
|
63
|
+
IHttpRequestResponse baseRequestResponse,
|
|
64
|
+
IScannerInsertionPoint insertionPoint);
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The Scanner invokes this method when the custom Scanner check has
|
|
68
|
+
* reported multiple issues for the same URL path. This can arise either
|
|
69
|
+
* because there are multiple distinct vulnerabilities, or because the same
|
|
70
|
+
* (or a similar) request has been scanned more than once. The custom check
|
|
71
|
+
* should determine whether the issues are duplicates. In most cases, where
|
|
72
|
+
* a check uses distinct issue names or descriptions for distinct issues,
|
|
73
|
+
* the consolidation process will simply be a matter of comparing these
|
|
74
|
+
* features for the two issues.
|
|
75
|
+
*
|
|
76
|
+
* @param existingIssue An issue that was previously reported by this
|
|
77
|
+
* Scanner check.
|
|
78
|
+
* @param newIssue An issue at the same URL path that has been newly
|
|
79
|
+
* reported by this Scanner check.
|
|
80
|
+
* @return An indication of which issue(s) should be reported in the main
|
|
81
|
+
* Scanner results. The method should return
|
|
82
|
+
* <code>-1</code> to report the existing issue only,
|
|
83
|
+
* <code>0</code> to report both issues, and
|
|
84
|
+
* <code>1</code> to report the new issue only.
|
|
85
|
+
*/
|
|
86
|
+
int consolidateDuplicateIssues(
|
|
87
|
+
IScanIssue existingIssue,
|
|
88
|
+
IScanIssue newIssue);
|
|
89
|
+
}
|