22// By default it will raise 'Info' level alerts for Client Errors (4xx) (apart from 404s) and 'Low' Level alerts for Server Errors (5xx)
33// But it can be easily changed.
44
5- var Pattern = Java . type ( "java.util.regex.Pattern" ) ;
5+ const Integer = Java . type ( "java.lang.Integer" ) ;
6+ const Pattern = Java . type ( "java.util.regex.Pattern" ) ;
7+
8+ const Alert = Java . type ( "org.parosproxy.paros.core.scanner.Alert" ) ;
9+ const ExtensionAlert = Java . type (
10+ "org.zaproxy.zap.extension.alert.ExtensionAlert"
11+ ) ;
12+ const HistoryReference = Java . type (
13+ "org.parosproxy.paros.model.HistoryReference"
14+ ) ;
15+
16+ const extensionAlert = control
17+ . getExtensionLoader ( )
18+ . getExtension ( ExtensionAlert . NAME ) ;
19+
620pluginid = 100000 ; // https://github.com/zaproxy/zaproxy/blob/main/docs/scanners.md
721
822function sendingRequest ( msg , initiator , helper ) {
@@ -14,12 +28,10 @@ function responseReceived(msg, initiator, helper) {
1428 // Not of interest.
1529 return ;
1630 }
17- var extensionAlert = control
18- . getExtensionLoader ( )
19- . getExtension ( org . zaproxy . zap . extension . alert . ExtensionAlert . NAME ) ;
31+
2032 if ( extensionAlert != null ) {
2133 var code = msg . getResponseHeader ( ) . getStatusCode ( ) ;
22- if ( code < 400 || code >= 600 || code == 404 ) {
34+ if ( code < 400 || code >= 600 ) {
2335 // Do nothing
2436 } else {
2537 var risk = 0 ; // Info
@@ -30,17 +42,12 @@ function responseReceived(msg, initiator, helper) {
3042 title = "A Server Error response code was returned by the server" ;
3143 }
3244 // CONFIDENCE_HIGH = 3 (we can be pretty sure we're right)
33- var alert = new org . parosproxy . paros . core . scanner . Alert (
34- pluginid ,
35- risk ,
36- 3 ,
37- title
38- ) ;
45+ var alert = new Alert ( pluginid , risk , 3 , title ) ;
3946 var ref = msg . getHistoryRef ( ) ;
4047 if (
4148 ref != null &&
42- org . parosproxy . paros . model . HistoryReference . getTemporaryTypes ( ) . contains (
43- java . lang . Integer . valueOf ( ref . getHistoryType ( ) )
49+ HistoryReference . getTemporaryTypes ( ) . contains (
50+ Integer . valueOf ( ref . getHistoryType ( ) )
4451 )
4552 ) {
4653 // Dont use temporary types as they will get deleted
@@ -78,11 +85,7 @@ function responseReceived(msg, initiator, helper) {
7885 type = 15 ; // User - fallback
7986 break ;
8087 }
81- ref = new org . parosproxy . paros . model . HistoryReference (
82- model . getSession ( ) ,
83- type ,
84- msg
85- ) ;
88+ ref = new HistoryReference ( model . getSession ( ) , type , msg ) ;
8689 }
8790 alert . setMessage ( msg ) ;
8891 alert . setUri ( msg . getRequestHeader ( ) . getURI ( ) . toString ( ) ) ;
@@ -93,9 +96,7 @@ function responseReceived(msg, initiator, helper) {
9396 "This may indicate that the application is failing to handle unexpected input correctly.\n" +
9497 "Raised by the 'Alert on HTTP Response Code Error' script"
9598 ) ;
96- // Use a regex to extract the evidence from the response header
97- var regex = new RegExp ( "^HTTP.*" + code ) ;
98- alert . setEvidence ( msg . getResponseHeader ( ) . toString ( ) . match ( regex ) ) ;
99+ alert . setEvidence ( code . toString ( ) ) ;
99100 alert . setCweId ( 388 ) ; // CWE CATEGORY: Error Handling
100101 alert . setWascId ( 20 ) ; // WASC Improper Input Handling
101102 extensionAlert . alertFound ( alert , ref ) ;
0 commit comments