@@ -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