Giter Site home page Giter Site logo

augustd / burp-suite-software-version-checks Goto Github PK

View Code? Open in Web Editor NEW
30.0 30.0 17.0 280 KB

Burp extension to passively scan for applications revealing software version numbers

Java 96.83% HTML 3.17%
burp burp-extensions burp-plugin burpsuite java penetration-testing pentest scanning

burp-suite-software-version-checks's People

Contributors

adetlefsen-rms avatar ahri avatar augustd avatar crashbrz avatar dependabot[bot] avatar libcrack avatar mike-smith-ps avatar petermosmans avatar sjord avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

burp-suite-software-version-checks's Issues

Consolidate

Could we consolidate versions if it is the same version on the same host?

For example if example.org has several time "nginx/1.10.1" in the HTTP server response header, I get 158 issues reported in Burp, although one is enough if the host is the same and the version string is the same but on different URLs.

CKEditor

Proposed pattern for CKEditor

ckeditor.*([0-9].[0-9].[]0-9])

ENH: add version check for GWT

Please add a check for for GWT version, maybe in the form of a JS scan of a 
cache.html file with this:

$gwt_version = "2.5.1"

Thanks.

Original issue reported on code.google.com by veggiespam on 7 Jul 2015 at 5:27

False positives for short matches on random data

The application I am testing exports base-64 encoded data, like this:

0t8UGYfJSF/5q6IFb3KImLoQBoA1+3vqfvp61zMUuj3zDV...

The plugin incorrectly reports the server uses Java Server Faces 5 because JSF/5 exists in this data.

Somewhere else, I get a session cookie with a value like this:

85athjhd7yxaclvj3ajdk8l

The version plugin reports this as JDK 8, because it contains jdk8.

Do you have any ideas to reduce the number of false positives? Should the short regexes be modified to match word boundaries?

Custom Rules URL Not Saved

When I define my own custom URL with match-rules.tab and reload Burp, the plugin does not restore the custom URL. Can you modify it to save those settings? If I forget to add my custom URL, I lose all functionality for the plugin due to being in a closed network without access to github.

Pattern for Handlebars

Proposed pattern for Handlebars:

Handlebars\.VERSION\s*=\s*["']([\w.]+)["']

Seen in /javascripts/vendor.js distributed with Apache Ambari:

...
var Handlebars = {};

Handlebars.VERSION = "1.0.beta.6";

Handlebars.helpers  = {};
Handlebars.partials = {};
...

Extension freezes Burp on start

On Windows 10, when I close Burp program after working on a project, then start it again after few minutes with default settings, quite often the program will freeze.
I narrowed it down to this happening when either “Error Message Checks” or “Software Version Reporter” extension is enabled.
I’m not sure about other extensions.
It’s possible to reproduce this issue quickly on my computer after starting and stopping burp about 3-4 times.

Also when I start Burp I usually click on the maximize button when it’s loading before it starts, after which it resizes when it loads.
However I am able to reproduce this issue without having to click resize button on start.

Excessive backslashes

Several patterns seem defective due to excessive backslashes. As an example, pattern

http://errors\\.angularjs\\.org/([0-9\\.]+)/

is not matching on a page that contains http://errors.angularjs.org/1.4.5/. When the doubled backslashes are removed, i.e.

http://errors\.angularjs\.org/([0-9\.]+)/

then the version does get detected correctly.

As a side note, there is no reason to escape "dot" inside a class because it is not considered to be a meta-character. Also, it might be useful to consider using predefined classes, such as \d in lieu of [0-9]. Therefore a clean pattern would be:

http://errors\.angularjs\.org/([\d.]+)/

Or, in a pedantic way to avoid matching on a single "dot", such as http://errors.angularjs.org/./, the pattern could be

http://errors\.angularjs\.org/(\d+(?:\.\d+)*)/

Where to load local file

The README says that I can load the rules from a local file, but I can't find anywhere to do this in the UI. I tried a file:/// URI in the remote file input field just in case, but that didn't appear to work.

This would seem to apply to the Error Message Checks extension as well.

Is this feature still supported? It would be nice to be able to use a local file in case this repo is ever down or becomes unavailable.

Thanks.

Pattern for Ember

Proposed pattern for Ember:

Ember\.VERSION\s*=\s*["']([\w.]+)["']

Seen in /javascripts/vendor.js distributed with Apache Ambari:

...
Ember.isNamespace = true;

Ember.toString = function() { return "Ember"; };


/**
  @static
  @type String
  @default '1.0.pre'
  @constant
*/
Ember.VERSION = '1.0.pre';
...

Pattern for Subversion

Proposing

>Apache Subversion</a>\s+version\s+([\d.]+(?:\s*\(r\d+\))?)

Seen at https://svn.nmap.org/ as follows:

<em>Powered by <a href="http://subversion.apache.org/">Apache Subversion</a> version 1.7.14 (r1542130).</em>

Scanner check doesn't obey URL Scope

There doesn't seem to be a way to tell the tool to obey the current scope, which sometimes results in hundreds or thousands of false positives for domains outside of the scope of a test. Since it is a passive scan it isn't as crucial as if it was an active scan but it can still be quite annoying and result in larger-than-necessary state files.

Burp 2 beta errors

Hi,
maybe it's not connected, but I get Java exceptions when trying out on the new Burp 2:

java.util.ConcurrentModificationException
	at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
	at java.util.ArrayList$Itr.next(ArrayList.java:851)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:120)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.beh.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.beh.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)

ASP.net Reporting Results Incorrectly

Reports for ASP.net report in the following format:

Issue detail
The server software versions used by the application are revealed by the web server. Displaying version information of software information could allow an attacker to determine which vulnerabilities are present in the software, particularly if an outdated software version is in use with published vulnerabilities. The following software appears to be in use:
Microsoft IIS: 8.5
ASP.Net MVC Framework: 5.1
ASP.Net: 4.0.30319

From the header:

HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: <redacted>
Server: Microsoft-IIS/8.5
Set-Cookie: ASP.NET_SessionId=<redacted>; path=/; HttpOnly
X-AspNetMvc-Version: 5.1
X-AspNet-Version: 4.0.30319

However the X-AspNet-Version response header isn't ASP's way of indicating the MAJOR.MINOR.BUILD in use on the server, as explained here: https://stackoverflow.com/questions/12971881/how-to-reliably-detect-the-actual-net-4-5-version-installed

The checks for ASP.net should be updated to match those observed in the stackoverflow thread. Please let me know if you concur with this finding and would like me to put in a pull request.

java.lang.IndexOutOfBoundsException

Hi,
I'm running the newest and unchanged rules for this extender. It seems that at least one rule was put there with some mistake, because when I open Errors tab, I can see following:

java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.vec.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.vec.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.vec.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.vec.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.vec.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.vec.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.vec.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at burp.BurpExtender.processHttpMessage(BurpExtender.java:209)
	at burp.vec.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at com.codemagi.burp.PassiveScan.doPassiveScan(PassiveScan.java:105)
	at burp.dhd.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at com.codemagi.burp.PassiveScan.doPassiveScan(PassiveScan.java:105)
	at burp.dhd.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
java.lang.IndexOutOfBoundsException: No group 2
	at java.util.regex.Matcher.group(Matcher.java:538)
	at com.codemagi.burp.PassiveScan.runPassiveScanChecks(PassiveScan.java:126)
	at com.codemagi.burp.PassiveScan.doPassiveScan(PassiveScan.java:105)
	at burp.dhd.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)

Markers intersection in issue

When adding a large number of rules, the intersection of highlight markers is possible in the issue. In this case, Burp does not create an issue and does not display an error about it, and the extension may lose results.

For example, you can make the following rules

(HTTP/\d\.\d)	1	HTTP	High	Certain
(HTTP/1\.\d)	1	HTTP	High	Certain

Together they do not create an issue, but if you delete one of them, everything works correctly.

Links:

https://github.com/augustd/burp-suite-utils/blob/18cd784424130c038f9b58d338f9821e7c8e4bb9/src/main/java/com/codemagi/burp/ScanIssue.java#L56

https://portswigger.net/burp/extender/api/burp/IBurpExtenderCallbacks.html#applyMarkers(burp.IHttpRequestResponse,%20java.util.List,%20java.util.List)

JBoss improvement

Hi,
I got 200:ok page with following source:

<html><head><title>JBoss Web/7.4.10.Final-redhat-1 - JBWEB000064: Error report</title><style>
...
<h3>JBoss Web/7.4.10.Final-redhat-1</h3>

It is a bit different than the regexp in rules, and was not detected.
Thanks:)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.