Burp Scanner offers numerous settings that control how scans behave during the audit phase. You can select these settings when you create or edit scan configurations in Burp Suite Professional or Burp Suite Enterprise Edition.
These settings enable you to tune Burp Scanner's behavior during the audit phase, to reflect the objectives of the audit and the nature of the target application.
The following settings are available.
This setting determines how thoroughly Burp Scanner undertakes certain audit checks:
This option determines the amount of evidence that the Scanner requires before it can report certain vulnerability types.
Some issues can only be detected using blind techniques, in which Burp infers the probable existence of a vulnerability based on observed behavior, such as a time delay or a differential response. Because these behaviors can also occur in the absence of the associated vulnerability, blind techniques are inherently more prone to false positives than other detection methods.
To attempt to reduce false positives, Burp repeats certain tests a number of times when it first infers a potential issue. Use the Audit accuracy setting controls to set how many times Burp retries these tests:
This setting defines the maximum total run time for each scan, in minutes. It is not available for audit-only scans, or scans that are currently in progress. If a scan reaches the specified maximum crawl and audit time then it pauses and an entry is added to the event log.
This setting makes scans more efficient by omitting checks that appear irrelevant given the base value of the parameter at each insertion point.
For example, if a parameter's value contains characters that do not normally appear in filenames, Burp skips file path traversal checks for this parameter. Use this option to speed up your scans, with a relatively low risk that you will miss vulnerabilities.
Use this setting to control whether Burp consolidates frequently-occurring passive issues. This option reduces noise when the same issue (for example, Clickjacking) appears in many locations or even throughout an entire application.
This setting controls whether Burp maintains session automatically during the audit phase of the scan. This is only applicable to crawl-driven audits where the navigational pathways identified during the crawl phase can be used to maintain session during the audit phase.
In modern applications, it is normally essential to maintain session to achieve good audit coverage. However, there is an overhead to maintaining session in terms of numbers of requests made. You can disable this option if you know it is not necessary.
Some vulnerabilities (for example, cross-site scripting in an error message that is only returned after following a redirect) can only be detected by following redirects.
Burp does not follow all redirects by default, because some applications issue redirects that contain parameter values that you submitted to third-party URLs. This protects you against inadvertently attacking third-party applications.
If the request being scanned is within the defined target scope, Burp only follows redirects that are within that same scope. If the request being scanned is not in scope, Burp only follows redirects that are:
These settings control which issue types Burp checks for during the scan.
Each check that Burp Scanner performs increases the number of requests made and the overall audit time. You may want to disable scanning for some issue types based on your knowledge of an application's technologies.
For example, if you know that an application does not use any LDAP, you could turn off LDAP injection. Likewise, if you know which back-end database the application uses, you can turn off SQL injection detection methods that are specific to other database types.
You can select issue types in two ways:
Scan type - Select issues by the nature of the audit activity involved in detecting them. You can select from the following options:
For active issue types, Burp Scanner sends requests to the application designed to detect those issues. Depending on the issues selected, these requests might be reasonably viewed as malicious, or might damage the application and its data.
These settings control how Burp Scanner handles application errors (connection failures and transmission timeouts) that arise during the audit phase of the scan.
You can configure the following options:
To disable any of these functions, leave the corresponding setting blank.
These settings control the types of insertion point that Burp Scanner can use during the audit.
Burp Scanner can add the following types of insertion point:
Body parameter values - Parameter values in the message body, including:
Referer and User-Agent headers, as well as any custom header beginning with x-. Testing these insertion points can often detect issues such as SQL injection or persistent XSS within logging functionality.
These settings enable you to configure the Scanner to move parameters to other locations within the request, so that they can be re-tested in locations other than their original position. For example, you could move each URL parameter into the message body and retest it there.
The following options are available for changing parameter locations:
Moving parameters in this way can often bypass defensive filters. Many applications and firewalls perform per-parameter input validation. This assumes that each parameter is in its expected location within the request. If you move the parameter to a different location, you can evade this validation.
When the application code later retrieves the parameter to implement its main logic, it may use an API that does not factor the parameter's location. If this is the case, moving the parameter may enable you to reach vulnerable code paths by using input that would normally be filtered before being processed.
Changing parameter locations results in many more scan requests, because each request parameter is effectively scanned multiple times.
These settings enable you to specify request parameters for which Burp Scanner skips audit checks. You can choose to either skip server-side injection checks (such as SQL injection) or skip all checks for a given parameter.
Skipping all checks may be useful if a parameter is handled by an application component that you do not wish to test, or if modifying a parameter is known to cause application instability.
Server-side injection checks mean that Burp needs to send multiple requests to probe for various blind vulnerabilities on the server. If you believe that certain parameters that appear within requests are not vulnerable (for example, built-in parameters used only by the platform or web server), you can tell Burp not to test them.
To add a parameter to the ignored insertion point lists:
You can identify parameters within URL path folders either by their position (slash-delimited) within the URL path or the folder name.
To filter by URL path position:
URL path folder from the Match item drop-down.
Name from the Name or value drop-down.
is from the Match type drop-down.
To filter by folder name, select the following:
URL path folder from the Match item drop-down.
Value from the Name or value drop-down.
is from the Match type drop-down to match an exact string, or select matches expression to match regex.
These settings enable you to configure whether Burp Scanner avoids duplication in frequently occurring insertion points. You can select to apply this optimization to the following insertion points:
When configured, Burp identifies insertion points that have proven to be uninteresting (that is, occurring frequently without any issues generated) and performs a more lightweight audit of those insertion points.
Auditing: Handling of frequently occurring insertion points.
The Misc insertion point options section contains settings that relate to insertion points.
Some applications apply multiple layers of encoding to the same data, effectively nesting one format within another. For example, a URL parameter might contain Base64-encoded data, and the decoded value might in turn contain JSON or XML data.
If you select Use nested insertion points, Burp Scanner detects this behavior, and automatically applies the same layers of encoding to payloads. Burp creates suitable insertion points for each separate item of input at each level of nesting.
Nested insertion points impose no overhead when you scan requests that contain only conventional request parameters. Despite this, they enable Burp to reach more of the attack surface of complex applications where data is encapsulated within different formats.
You can set a limit on the number of insertion points that can be generated for each base request. This prevents your scans from stalling if they encounter requests containing huge numbers of parameters.
When Burp needs to curtail the number of insertion points, the item's entry in the audit indicates the number of insertion points that were skipped. This enables you to review the base request manually and decide if it is worth performing a full scan of all its possible insertion points.
These settings control how Burp Scanner detects DOM-based vulnerabilities in JavaScript. The following settings are available:
Fetch previously undiscovered resources and data from out-of-scope hosts - Controls whether resources and data that are referenced by a page but were not discovered by Burp Scanner during crawling are loaded from locations that are out of scope for the scan. You may encounter this scenario if you run an audit-only scan on:
If you disable this option, the scan does not load these resources during auditing and may miss vulnerabilities as a result. For example, a page may be safe until it loads an external JavaScript file that introduces vulnerabilities on execution.
JavaScript analysis can consume large amounts of system resource. As a result, you may want to restrict the analysis to key targets. It may also be necessary to launch Burp with greater amounts of memory when performing JavaScript analysis. To do so, launch Burp from the command line.
These settings enable you to specify timeout values for the audit. These values override any you may have configured in the global settings.