├── .travis.yml
├── .gitignore
├── BappManifest.bmf
├── BappDescription.html
├── src
├── test
│ ├── resources
│ │ └── burp
│ │ │ ├── falsePositives.txt
│ │ │ └── testResponse.txt
│ └── java
│ │ └── burp
│ │ └── RegexTest.java
├── burp
│ └── match-rules.tab
└── main
│ ├── resources
│ └── burp
│ │ └── match-rules.tab
│ └── java
│ └── burp
│ └── BurpExtender.java
├── README.md
└── pom.xml
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: java
2 | jdk:
3 | - openjdk8
4 | - openjdk11
5 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /nbproject/private/
2 | /build/
3 | /dist/
4 | /target/
5 | .idea
6 | *.iml
7 | *~
8 | .DS_Store
9 |
--------------------------------------------------------------------------------
/BappManifest.bmf:
--------------------------------------------------------------------------------
1 | Uuid: 4f01db4b668c4126a68e4673df796f0f
2 | ExtensionType: 1
3 | Name: Error Message Checks
4 | RepoName: error-message-checks
5 | ScreenVersion: 2.0.5
6 | SerialVersion: 13
7 | MinPlatformVersion: 0
8 | ProOnly: True
9 | Author: August Detlefsen
10 | ShortDescription: Passively detects detailed server error messages.
11 | EntryPoint: target/burp-suite-error-message-checks-2.0.0.jar
12 | BuildCommand: mvn package -DskipTests=true -Dmaven.javadoc.skip=true -B
13 | SupportedProducts: Pro
14 |
--------------------------------------------------------------------------------
/BappDescription.html:
--------------------------------------------------------------------------------
1 |
This extension passively reports detailed server error messages.
2 |
3 | Detailed error messages are often not visible during the normal course of testing. Some examples are:
4 |
5 | - Java: "[SEVERE] at net.minecraft.server.World.tickEntities(World.java:1146)"
6 | - ASP.Net: "System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint) +2071"
7 | - PHP: "c() called at [/tmp/include.php:10]"
8 | - Perl: "Use of uninitialized value in string eq at /Library/Perl/5.8.6/WWW/Mechanize.pm line 695"
9 |
10 |
11 | New in version 2.0.1:
12 |
13 | - Reports the regexes matched
14 | - Loads match rules using Burp proxy configuration
15 | - Backup loading of match rules from BApp jar
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/test/resources/burp/falsePositives.txt:
--------------------------------------------------------------------------------
1 | !function(e){function t(n){if(a[n])return a[n].exports;var i=a[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n=window.atwpjp;window.atwpjp=function(a,o){for(var r,s,d=0,u=[];d on line [0-9]+ 0 PHP Low Certain
3 | Fatal error: 0 PHP Low Certain
4 | \.php:[0-9]+ 0 PHP Low Certain
5 | \[(ODBC SQL Server Driver|SQL Server|ODBC Driver Manager)\] 0 Microsoft SQL Server Low Certain
6 | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 0 MySQL Medium Certain
7 | \.java:[0-9]+ 0 Java Low Certain
8 | \.java\((Inlined )?Compiled Code\) 0 Java Low Certain
9 | [A-Za-z\.]+\(([A-Za-z0-9, ]+)?\) \+[0-9]+ 0 ASP.Net Low Certain
10 | at (\/[A-Za-z0-9\.]+)*\.pm line [0-9]+ 0 Perl Low Certain
11 | File \"[A-Za-z0-9\-_\./]*\", line [0-9]+, in 0 Python Low Certain
12 | \.rb:[0-9]+:in 0 Ruby Low Certain
13 | Exception of type 0 ASP.Net Low Certain
14 | --- End of inner exception stack trace --- 0 ASP.Net Low Certain
15 | Microsoft OLE DB Provider 0 ASP.Net Low Certain
16 | Error ([\d-]+) \([\dA-F]+\) 0 ASP.Net Low Certain
17 | at ([a-zA-Z0-9]*\.)*([a-zA-Z0-9]*)\([a-zA-Z0-9, ]*\) 0 ASP.Net Low Certain
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://travis-ci.org/augustd/burp-suite-error-message-checks)
2 | [](https://snyk.io/test/github/augustd/burp-suite-error-message-checks)
3 |
4 | # burp-suite-error-message-checks
5 | This Burp Suite 1.5+ extension passively detects server error messages in running applications. Some examples:
6 |
7 | - Fatal error: Call to a member function getId() on a non-object in /var/www/docroot/application/modules/controllers/ModalController.php on line 609
8 | - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax
9 | - [SEVERE] at net.minecraft.server.World.tickEntities(World.java:1146)
10 | - System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint) +2071
11 | - c() called at [/tmp/include.php:10]
12 | - Use of uninitialized value in string eq at /Library/Perl/5.8.6/WWW/Mechanize.pm line 695
13 |
14 | Often error messages may go unnoticed by a tester who is only looking at the application UI. This extension is designed to passively detect error messages, even during scanning, spidering, etc.
15 |
16 | Match rules are loaded from a [remote tab-delimited file](https://github.com/augustd/burp-suite-error-message-checks/blob/master/src/main/resources/burp/match-rules.tab) at extension startup. Users can also load their own match rules from a local file or using the BApp GUI.
17 |
18 | ## Building:
19 | `mvn clean install`
20 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4.0.0
4 | com.codemagi
5 | burp-suite-error-message-checks
6 | 2.0.0
7 | jar
8 |
9 |
10 | com.codemagi
11 | burp-suite-utils
12 | 1.2.5
13 |
14 |
15 | junit
16 | junit
17 | 4.13.2
18 | test
19 |
20 |
21 |
22 | UTF-8
23 | 1.8
24 | 1.8
25 |
26 |
27 |
28 |
29 | org.apache.maven.plugins
30 | maven-shade-plugin
31 | 3.1.0
32 |
33 |
34 | package
35 |
36 | shade
37 |
38 |
39 | false
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/src/main/resources/burp/match-rules.tab:
--------------------------------------------------------------------------------
1 | AH[0-9]{5}: 0 Apache Server Low Firm
2 | mod_[\w]+: 0 Apache Server Low Firm
3 | ([A-Za-z]{1,32}\.)+[A-Za-z]{0,32}\(([A-Za-z0-9]+\s+[A-Za-z0-9]+[,\s]*)*\)\s+\+{1}\d+ 0 ASP.Net Low Certain 3
4 | "Message":"Invalid web service call 0 ASP.Net Low Certain
5 | Exception of type 0 ASP.Net Low Certain
6 | --- End of inner exception stack trace --- 0 ASP.Net Low Certain
7 | Microsoft OLE DB Provider 0 ASP.Net Low Certain
8 | Error ([\d-]+) \([\dA-Fa-f]+\) 0 ASP.Net Low Certain
9 | \bat ([a-zA-Z0-9_]*\.)*([a-zA-Z0-9_]+)\([a-zA-Z0-9, \[\]\&\;]*\) 0 ASP.Net Low Certain 4
10 | System.([A-Za-z]{1,32}\.)*[A-Za-z]{0,32}Exception: 0 ASP.Net Low Certain 6
11 | in [A-Za-z]:\\([A-Za-z0-9_]+\\)+[A-Za-z0-9_\-]+(\.aspx)?\.cs:line [\d]+ 0 ASP.Net Low Certain 2
12 | [A-Za-z\.]+\(([A-Za-z0-9, ]+)?\) \+[0-9]+ 0 ASP.Net Low Certain 3
13 | Syntax error in string in query expression 0 ASP.Net Medium Certain
14 | CLI Driver.*DB2 0 DB2 Low Certain 0
15 | DB2 SQL error 0 DB2 Low Certain 0
16 | db2_\w+\( 0 DB2 Low Certain 0
17 | \bdb2_\w+\( 0 DB2 Low Certain 0
18 | \[function.ibase.query\] 0 Firebird Low Certain 0
19 | Dynamic SQL Error 0 Firebird Low Certain 0
20 | Warning.*ibase_.* 0 Firebird Low Certain 0
21 | \.groovy:[0-9]+ 0 Groovy High Certain
22 | org\.hsqldb\.jdbc 0 HyperSQL Low Certain 0
23 | Exception.*Informix 0 Informix Low Certain 0
24 | Warning.*ingre_ 0 Ingres DB Low Certain 0
25 | Ingres SQLSTATE 0 Ingres DB Low Certain 0
26 | Ingres\W.*Driver 0 Ingres DB Low Certain 0
27 | HSQLDB 0 Ingres DB Low Certain 0
28 | \.java:[0-9]+ 0 Java Low Certain
29 | \.java\((Inlined )?Compiled Code\) 0 Java Low Certain 2
30 | \.invoke\(Unknown Source\) 0 Java Low Certain
31 | nested exception is 0 Java Low Firm
32 | java\.lang\.([A-Za-z0-9_]*)Exception 0 Java Medium Firm 5
33 | java.io.FileNotFoundException: 0 Java Low Certain
34 | \.js:[0-9]+:[0-9]+ 0 Javascript Low Certain
35 | JBWEB[0-9]{6}: 0 JBoss Low Firm
36 | ((dn|dc|cn|ou|uid|o|c)=[\w\d]*,\s?){2,} 0 LDAP Low Firm
37 | DB Error: 0 Maria Low Certain 0
38 | \[(ODBC SQL Server Driver|SQL Server|ODBC Driver Manager)\] 0 Microsoft SQL Server Low Certain
39 | Unclosed quotation mark 0 Microsoft SQL Server Low Certain 1
40 | warning.*mssql_.* 0 Microsoft SQL Server Low Certain 0
41 | Driver.* SQL[-_]*Server 0 Microsoft SQL Server Low Certain 0
42 | (\W|\A)SQL Server.*Driver 0 Microsoft SQL Server Low Certain 0
43 | Conversion failed when converting the 0 Microsoft SQL Server Low Certain 0
44 | Cannot initialize the data source object of OLE DB provider "[\w]*" for linked server "[\w]*" 0 Microsoft SQL Server Low Certain
45 | E QUERY\s+\[thread1\] SyntaxError: 0 MongoDB Low Certain 2
46 | uncaught exception: 0 MongoDB Low Certain
47 | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 0 MySQL Medium Certain
48 | Illegal mix of collations \([\w\s\,]+\) and \([\w\s\,]+\) for operation 0 MySQL Medium Certain
49 | Error: Unknown column 0 MySQL Low Certain 0
50 | Warning.*mysql_.* 0 MySQL Low Certain 0
51 | valid MySQL result 0 MySQL Low Certain 0
52 | MySqlClient\. 0 MySQL Low Certain 0
53 | com\.mysql\.jdbc\.exceptions 0 MySQL Low Certain 0
54 | warning mysql_ 0 MySQL Low Certain 0
55 | 1062 Duplicate entry 0 MYSQL Low Certain 0
56 | client intended to address 0 NGINX Server Low Firm
57 | could not build optimal proxy_headers_hash 0 NGINX Server Low Firm
58 | ReferenceError: 0 Node.js Low Certain
59 | TypeError: 0 Node.js Low Certain
60 | UnhandledPromiseRejectionWarning: 0 Node.js Low Certain
61 | quoted string not properly terminated 0 Oracle Low Certain 1
62 | \bORA-[0-9]{5} 0 Oracle Low Certain
63 | Oracle.*Driver] 0 Oracle Low Certain 0
64 | Warning.*\Woci_.* 0 Oracle Low Certain 0
65 | Warning.*\Wora_.* 0 Oracle Low Certain 0
66 | Warning: oci_parse() 0 Oracle Low Certain 0
67 | at (\/[A-Za-z0-9\.]+)*\.pm line [0-9]+ 0 Perl Low Certain
68 | \.php on line [0-9]+ 0 PHP Low Certain 4
69 | \.php on line [0-9]+ 0 PHP Low Certain
70 | Fatal error: 0 PHP Low Certain 2
71 | \.php:[0-9]+ 0 PHP Low Certain
72 | Undefined (index|variable|offset): 0 PHP Low Certain 3
73 | PostgreSQL.*ERROR 0 PostgreSQL Low Certain 0
74 | Warning.*\Wpg_.* 0 PostgreSQL Low Certain 0
75 | valid PostgreSQL result 0 PostgreSQL Low Certain 0
76 | Npgsql\. 0 PostgreSQL Low Certain 0
77 | org\.postgresql\.util\.PSQLException 0 PostgreSQL Low Certain 0
78 | Traceback \(most recent call last\): 0 Python Low Certain
79 | File \"[A-Za-z0-9\-_\./]*\", line [0-9]+, in 0 Python Low Certain
80 | NameError: 0 Python Low Certain
81 | ImportError: 0 Python Low Certain
82 | IndentationError: 0 Python Low Certain
83 | \.rb:[0-9]+:in 0 Ruby Low Certain
84 | SQL error.*POS([0-9]+).* 0 SAP MaxDB Low Certain 0
85 | Warning.*maxdb.* 0 SAP MaxDB Low Certain 0
86 | \.scala:[0-9]+ 0 Scala Low Certain
87 | SQLite/JDBCDriver 0 SQLite Low Certain 0
88 | SQLite.Exception 0 SQLite Low Certain 0
89 | System.Data.SQLite.SQLiteException 0 SQLite Low Certain 0
90 | Warning.*sqlite_.* 0 SQLite Low Certain 0
91 | Warning.*SQLite3:: 0 SQLite Low Certain 0
92 | \[SQLITE_ERROR\] 0 SQLite Low Certain 0
93 | (?i)Warning.*sybase.* 0 Sybase Low Certain 0
94 | Sybase message 0 Sybase Low Certain 0
95 | Sybase.*Server message.* 0 Sybase Low Certain 0
96 | \(generated by waitress\) 0 Waitress Python server Information Certain
97 | 132120c8|38ad52fa|38cf013d|38cf0259|38cf025a|38cf025b|38cf025c|38cf025d|38cf025e|38cf025f|38cf0421|38cf0424|38cf0425|38cf0427|38cf0428|38cf0432|38cf0434|38cf0437|38cf0439|38cf0442|38cf07aa|38cf08cc|38cf04d7|38cf04c6|websealerror 0 WebSEAL Low Certain 2
--------------------------------------------------------------------------------
/src/test/resources/burp/testResponse.txt:
--------------------------------------------------------------------------------
1 | Fatal error: Call to a member function getId() on a non-object in /var/www/docroot/application/modules/controllers/ModalController.php on line 609
2 | Warning: Invalid argument supplied for foreach() in /home/content/.../admin/model/report/sale.php on line 87
3 | Fatal error: Undefined class constant 'PRODUCT' in
4 | OLE DB provider "MSDASQL" for linked server "INFORMIX_LIBRARY" returned message "[Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed".
5 | Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "INFORMIX_LIBRARY".
6 | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Details (title, first, last, NRIC, po' at line 1
7 | Illegal mix of collations (latin1_swedish_ci ,IMPLICIT) and (utf8_general_ci ,COERCIBLE) for operation ’=’
8 | [SEVERE] at net.minecraft.server.World.tickEntities(World.java:1146)
9 | at com.aptrix.pluto.cmpnt.FormatterCmpnt.applyMicroTemplate(FormatterCmpnt.java(Compiled Code))
10 | at com.aptrix.pluto.cmpnt.FormatterCmpnt.resolveNode(FormatterCmpnt.java(Inlined Compiled Code))
11 | at sun.reflect.GeneratedMethodAccessor3159.invoke(Unknown Source)
12 | Failed to convert property value of type [java.lang.String] to required type [boolean] for property order; nested exception is java.lang.IllegalArgumentException
13 | SyntaxError: Unexpected token & in JSON at position 52
at JSON.parse (<anonymous>)
at parse (/app/node_modules/body-parser/lib/types/json.js:88:17)
14 | JBoss Web/7.4.10.Final-redhat-1 - JBWEB000064: Error report