Skip to content

Commit fe994bb

Browse files
committed
Merge remote-tracking branch 'silentsignal/gzip-fixes'
2 parents 1c85711 + 10602ce commit fe994bb

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

src/burp/BurpExtender.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -775,20 +775,27 @@ else if (startChar[0] == '<')
775775

776776
//Check if base64 decoding is necessary
777777
if (magicPosBase64Gzip > -1) {
778-
//Extract out string
779-
String extractedObject = helpers.bytesToString(potentialObject);
778+
//Check is URL decoding is necessary before Base64 decoding
779+
boolean urlEncoded = false;
780+
for (int i = 0; i < potentialObject.length; i++) {
781+
if (potentialObject[i] == (byte)'%') {
782+
urlEncoded = true;
783+
break;
784+
}
785+
}
780786

781787
//Base64 decode
782-
gzippedObject = helpers.base64Decode(extractedObject);
788+
gzippedObject = helpers.base64Decode(urlEncoded ?
789+
helpers.urlDecode(potentialObject) : potentialObject);
783790

784791
//Prematurely set issue name
785-
issueName = passiveScanIssue + " (encoded in Base64 & Gzipped)";
792+
issueName = passiveScanIssue + " in request (encoded in Base64 & Gzipped)";
786793

787794
} else {
788795

789796
//Extract out gzipped object
790797
gzippedObject = potentialObject;
791-
issueName = passiveScanIssue + " (Gzipped)";
798+
issueName = passiveScanIssue + " in request (Gzipped)";
792799

793800
}
794801

@@ -797,7 +804,7 @@ else if (startChar[0] == '<')
797804
//Gzip decompress first 2 bytes to check header for asciiHexMagic
798805
GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(gzippedObject));
799806
byte[] ungzip = new byte[2];
800-
gis.read(ungzip, 0, 2);
807+
gis.read(ungzip);
801808

802809
//Check if ungzip data is the same as serializeMagic
803810
if (Arrays.equals(ungzip, serializeMagic)) {
@@ -806,7 +813,7 @@ else if (startChar[0] == '<')
806813
issues.add(new CustomScanIssue(
807814
baseRequestResponse.getHttpService(),
808815
helpers.analyzeRequest(baseRequestResponse).getUrl(),
809-
new IHttpRequestResponse[] { callbacks.applyMarkers(baseRequestResponse, null, responseMarkers) },
816+
new IHttpRequestResponse[] { callbacks.applyMarkers(baseRequestResponse, responseMarkers, null) },
810817
issueName,
811818
passiveScanSeverity,
812819
passiveScanConfidence,
@@ -833,7 +840,7 @@ else if(magicPosBase64 > -1)
833840
issues.add(new CustomScanIssue(
834841
baseRequestResponse.getHttpService(),
835842
helpers.analyzeRequest(baseRequestResponse).getUrl(),
836-
new IHttpRequestResponse[] { callbacks.applyMarkers(baseRequestResponse, responseMarkers, new ArrayList<int[]>()) },
843+
new IHttpRequestResponse[] { callbacks.applyMarkers(baseRequestResponse, responseMarkers, null) },
837844
issueName,
838845
passiveScanSeverity,
839846
passiveScanConfidence,

0 commit comments

Comments
 (0)