@abtnode/router-provider 1.16.38-beta-20250116-083413-dbd33222 → 1.16.38-beta-20250118-033334-2da05ae8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/nginx/includes/security/crs4/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example +200 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-901-INITIALIZATION.conf +470 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-905-COMMON-EXCEPTIONS.conf +57 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-911-METHOD-ENFORCEMENT.conf +76 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-913-SCANNER-DETECTION.conf +86 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf +1915 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-921-PROTOCOL-ATTACK.conf +558 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-922-MULTIPART-ATTACK.conf +120 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf +203 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-931-APPLICATION-ATTACK-RFI.conf +189 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf +1875 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf +774 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-934-APPLICATION-ATTACK-GENERIC.conf +366 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf +1071 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf +1978 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf +132 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-944-APPLICATION-ATTACK-JAVA.conf +463 -0
- package/lib/nginx/includes/security/crs4/rules/REQUEST-949-BLOCKING-EVALUATION.conf +270 -0
- package/lib/nginx/includes/security/crs4/rules/RESPONSE-950-DATA-LEAKAGES.conf +156 -0
- package/lib/nginx/includes/security/crs4/rules/RESPONSE-951-DATA-LEAKAGES-SQL.conf +417 -0
- package/lib/nginx/includes/security/crs4/rules/RESPONSE-952-DATA-LEAKAGES-JAVA.conf +108 -0
- package/lib/nginx/includes/security/crs4/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf +158 -0
- package/lib/nginx/includes/security/crs4/rules/RESPONSE-954-DATA-LEAKAGES-IIS.conf +152 -0
- package/lib/nginx/includes/security/crs4/rules/RESPONSE-955-WEB-SHELLS.conf +558 -0
- package/lib/nginx/includes/security/crs4/rules/RESPONSE-959-BLOCKING-EVALUATION.conf +280 -0
- package/lib/nginx/includes/security/crs4/rules/RESPONSE-980-CORRELATION.conf +138 -0
- package/lib/nginx/includes/security/crs4/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example +76 -0
- package/lib/nginx/includes/security/crs4/rules/iis-errors.data +59 -0
- package/lib/nginx/includes/security/crs4/rules/java-classes.data +64 -0
- package/lib/nginx/includes/security/crs4/rules/java-code-leakages.data +17 -0
- package/lib/nginx/includes/security/crs4/rules/java-errors.data +10 -0
- package/lib/nginx/includes/security/crs4/rules/lfi-os-files.data +722 -0
- package/lib/nginx/includes/security/crs4/rules/php-config-directives.data +571 -0
- package/lib/nginx/includes/security/crs4/rules/php-errors-pl2.data +7 -0
- package/lib/nginx/includes/security/crs4/rules/php-errors.data +2147 -0
- package/lib/nginx/includes/security/crs4/rules/php-function-names-933150.data +245 -0
- package/lib/nginx/includes/security/crs4/rules/php-function-names-933151.data +2201 -0
- package/lib/nginx/includes/security/crs4/rules/php-variables.data +30 -0
- package/lib/nginx/includes/security/crs4/rules/restricted-files.data +284 -0
- package/lib/nginx/includes/security/crs4/rules/restricted-upload.data +177 -0
- package/lib/nginx/includes/security/crs4/rules/scanners-user-agents.data +119 -0
- package/lib/nginx/includes/security/crs4/rules/sql-errors.data +172 -0
- package/lib/nginx/includes/security/crs4/rules/ssrf.data +177 -0
- package/lib/nginx/includes/security/crs4/rules/unix-shell.data +670 -0
- package/lib/nginx/includes/security/crs4/rules/web-shells-php.data +167 -0
- package/lib/nginx/includes/security/crs4/rules/windows-powershell-commands.data +425 -0
- package/lib/nginx/includes/security/unicode.mapping +96 -0
- package/lib/nginx/index.js +50 -3
- package/lib/nginx/templates/security/crs4/crs-setup.conf.js +857 -0
- package/lib/nginx/templates/security/modsecurity.conf.js +244 -0
- package/package.json +7 -6
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
# ------------------------------------------------------------------------
|
|
2
|
+
# OWASP CRS ver.4.9.0
|
|
3
|
+
# Copyright (c) 2006-2020 Trustwave and contributors. All rights reserved.
|
|
4
|
+
# Copyright (c) 2021-2024 CRS project. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# The OWASP CRS is distributed under
|
|
7
|
+
# Apache Software License (ASL) version 2
|
|
8
|
+
# Please see the enclosed LICENSE file for full details.
|
|
9
|
+
# ------------------------------------------------------------------------
|
|
10
|
+
|
|
11
|
+
#
|
|
12
|
+
# -= Paranoia Level 0 (empty) =- (apply unconditionally)
|
|
13
|
+
#
|
|
14
|
+
|
|
15
|
+
# Skip all rules if RESPONSE_BODY is compressed.
|
|
16
|
+
SecRule RESPONSE_HEADERS:Content-Encoding "@pm gzip compress deflate br zstd" \
|
|
17
|
+
"id:951010,\
|
|
18
|
+
phase:4,\
|
|
19
|
+
pass,\
|
|
20
|
+
nolog,\
|
|
21
|
+
tag:'OWASP_CRS',\
|
|
22
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
23
|
+
skipAfter:END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
24
|
+
|
|
25
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 1" "id:951011,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
26
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 1" "id:951012,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
27
|
+
#
|
|
28
|
+
# -= Paranoia Level 1 (default) =- (apply only when tx.detection_paranoia_level is sufficiently high: 1 or higher)
|
|
29
|
+
#
|
|
30
|
+
|
|
31
|
+
#
|
|
32
|
+
# -=[ SQL Error Leakages ]=-
|
|
33
|
+
#
|
|
34
|
+
# Ref: https://github.com/sqlmapproject/sqlmap
|
|
35
|
+
# Ref: https://github.com/Arachni/arachni/tree/master/components/checks/active/sql_injection/regexps
|
|
36
|
+
#
|
|
37
|
+
SecRule RESPONSE_BODY "!@pmFromFile sql-errors.data" \
|
|
38
|
+
"id:951100,\
|
|
39
|
+
phase:4,\
|
|
40
|
+
pass,\
|
|
41
|
+
t:none,\
|
|
42
|
+
nolog,\
|
|
43
|
+
tag:'application-multi',\
|
|
44
|
+
tag:'language-multi',\
|
|
45
|
+
tag:'platform-multi',\
|
|
46
|
+
tag:'attack-disclosure',\
|
|
47
|
+
tag:'OWASP_CRS',\
|
|
48
|
+
tag:'capec/1000/118/116/54',\
|
|
49
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
50
|
+
skipAfter:END-SQL-ERROR-MATCH-PL1"
|
|
51
|
+
|
|
52
|
+
SecRule RESPONSE_BODY "@rx (?i:JET Database Engine|Access Database Engine|\[Microsoft\]\[ODBC Microsoft Access Driver\])" \
|
|
53
|
+
"id:951110,\
|
|
54
|
+
phase:4,\
|
|
55
|
+
block,\
|
|
56
|
+
capture,\
|
|
57
|
+
t:none,\
|
|
58
|
+
msg:'Microsoft Access SQL Information Leakage',\
|
|
59
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
60
|
+
tag:'application-multi',\
|
|
61
|
+
tag:'language-multi',\
|
|
62
|
+
tag:'platform-msaccess',\
|
|
63
|
+
tag:'attack-disclosure',\
|
|
64
|
+
tag:'paranoia-level/1',\
|
|
65
|
+
tag:'OWASP_CRS',\
|
|
66
|
+
tag:'capec/1000/118/116/54',\
|
|
67
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
68
|
+
severity:'CRITICAL',\
|
|
69
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
70
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
71
|
+
|
|
72
|
+
# Regular expression generated from regex-assembly/951120.ra.
|
|
73
|
+
# To update the regular expression run the following shell script
|
|
74
|
+
# (consult https://coreruleset.org/docs/development/regex_assembly/ for details):
|
|
75
|
+
# crs-toolchain regex update 951120
|
|
76
|
+
#
|
|
77
|
+
SecRule RESPONSE_BODY "@rx (?i)\bORA-[0-9][0-9][0-9][0-9][0-9]:|java\.sql\.SQLException|Oracle(?: erro|[^\(\)]{0,20}Drive)r|Warning.{1,10}o(?:ci_.{1,30}|ra_.{1,20})" \
|
|
78
|
+
"id:951120,\
|
|
79
|
+
phase:4,\
|
|
80
|
+
block,\
|
|
81
|
+
capture,\
|
|
82
|
+
t:none,\
|
|
83
|
+
msg:'Oracle SQL Information Leakage',\
|
|
84
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
85
|
+
tag:'application-multi',\
|
|
86
|
+
tag:'language-multi',\
|
|
87
|
+
tag:'platform-oracle',\
|
|
88
|
+
tag:'attack-disclosure',\
|
|
89
|
+
tag:'paranoia-level/1',\
|
|
90
|
+
tag:'OWASP_CRS',\
|
|
91
|
+
tag:'capec/1000/118/116/54',\
|
|
92
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
93
|
+
severity:'CRITICAL',\
|
|
94
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
95
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
96
|
+
|
|
97
|
+
SecRule RESPONSE_BODY "@rx (?i:DB2 SQL error:|\[IBM\]\[CLI Driver\]\[DB2/6000\]|CLI Driver.*DB2|DB2 SQL error|db2_\w+\()" \
|
|
98
|
+
"id:951130,\
|
|
99
|
+
phase:4,\
|
|
100
|
+
block,\
|
|
101
|
+
capture,\
|
|
102
|
+
t:none,\
|
|
103
|
+
msg:'DB2 SQL Information Leakage',\
|
|
104
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
105
|
+
tag:'application-multi',\
|
|
106
|
+
tag:'language-multi',\
|
|
107
|
+
tag:'platform-db2',\
|
|
108
|
+
tag:'attack-disclosure',\
|
|
109
|
+
tag:'paranoia-level/1',\
|
|
110
|
+
tag:'OWASP_CRS',\
|
|
111
|
+
tag:'capec/1000/118/116/54',\
|
|
112
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
113
|
+
severity:'CRITICAL',\
|
|
114
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
115
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
116
|
+
|
|
117
|
+
SecRule RESPONSE_BODY "@rx (?i:\[DM_QUERY_E_SYNTAX\]|has occurred in the vicinity of:)" \
|
|
118
|
+
"id:951140,\
|
|
119
|
+
phase:4,\
|
|
120
|
+
block,\
|
|
121
|
+
capture,\
|
|
122
|
+
t:none,\
|
|
123
|
+
msg:'EMC SQL Information Leakage',\
|
|
124
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
125
|
+
tag:'application-multi',\
|
|
126
|
+
tag:'language-multi',\
|
|
127
|
+
tag:'platform-emc',\
|
|
128
|
+
tag:'attack-disclosure',\
|
|
129
|
+
tag:'paranoia-level/1',\
|
|
130
|
+
tag:'OWASP_CRS',\
|
|
131
|
+
tag:'capec/1000/118/116/54',\
|
|
132
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
133
|
+
severity:'CRITICAL',\
|
|
134
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
135
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
136
|
+
|
|
137
|
+
SecRule RESPONSE_BODY "@rx (?i)Dynamic SQL Error" \
|
|
138
|
+
"id:951150,\
|
|
139
|
+
phase:4,\
|
|
140
|
+
block,\
|
|
141
|
+
capture,\
|
|
142
|
+
t:none,\
|
|
143
|
+
msg:'firebird SQL Information Leakage',\
|
|
144
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
145
|
+
tag:'application-multi',\
|
|
146
|
+
tag:'language-multi',\
|
|
147
|
+
tag:'platform-firebird',\
|
|
148
|
+
tag:'attack-disclosure',\
|
|
149
|
+
tag:'paranoia-level/1',\
|
|
150
|
+
tag:'OWASP_CRS',\
|
|
151
|
+
tag:'capec/1000/118/116/54',\
|
|
152
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
153
|
+
severity:'CRITICAL',\
|
|
154
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
155
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
156
|
+
|
|
157
|
+
SecRule RESPONSE_BODY "@rx (?i)Exception (?:condition )?\d+\. Transaction rollback\." \
|
|
158
|
+
"id:951160,\
|
|
159
|
+
phase:4,\
|
|
160
|
+
block,\
|
|
161
|
+
capture,\
|
|
162
|
+
t:none,\
|
|
163
|
+
msg:'Frontbase SQL Information Leakage',\
|
|
164
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
165
|
+
tag:'application-multi',\
|
|
166
|
+
tag:'language-multi',\
|
|
167
|
+
tag:'platform-frontbase',\
|
|
168
|
+
tag:'attack-disclosure',\
|
|
169
|
+
tag:'paranoia-level/1',\
|
|
170
|
+
tag:'OWASP_CRS',\
|
|
171
|
+
tag:'capec/1000/118/116/54',\
|
|
172
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
173
|
+
severity:'CRITICAL',\
|
|
174
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
175
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
176
|
+
|
|
177
|
+
SecRule RESPONSE_BODY "@rx (?i)org\.hsqldb\.jdbc" \
|
|
178
|
+
"id:951170,\
|
|
179
|
+
phase:4,\
|
|
180
|
+
block,\
|
|
181
|
+
capture,\
|
|
182
|
+
t:none,\
|
|
183
|
+
msg:'hsqldb SQL Information Leakage',\
|
|
184
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
185
|
+
tag:'application-multi',\
|
|
186
|
+
tag:'language-multi',\
|
|
187
|
+
tag:'platform-hsqldb',\
|
|
188
|
+
tag:'attack-disclosure',\
|
|
189
|
+
tag:'paranoia-level/1',\
|
|
190
|
+
tag:'OWASP_CRS',\
|
|
191
|
+
tag:'capec/1000/118/116/54',\
|
|
192
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
193
|
+
severity:'CRITICAL',\
|
|
194
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
195
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
196
|
+
|
|
197
|
+
SecRule RESPONSE_BODY "@rx (?i:An illegal character has been found in the statement|com\.informix\.jdbc|Exception.*Informix)" \
|
|
198
|
+
"id:951180,\
|
|
199
|
+
phase:4,\
|
|
200
|
+
block,\
|
|
201
|
+
capture,\
|
|
202
|
+
t:none,\
|
|
203
|
+
msg:'informix SQL Information Leakage',\
|
|
204
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
205
|
+
tag:'application-multi',\
|
|
206
|
+
tag:'language-multi',\
|
|
207
|
+
tag:'platform-informix',\
|
|
208
|
+
tag:'attack-disclosure',\
|
|
209
|
+
tag:'paranoia-level/1',\
|
|
210
|
+
tag:'OWASP_CRS',\
|
|
211
|
+
tag:'capec/1000/118/116/54',\
|
|
212
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
213
|
+
severity:'CRITICAL',\
|
|
214
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
215
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
216
|
+
|
|
217
|
+
SecRule RESPONSE_BODY "@rx (?i:Warning.*ingres_|Ingres SQLSTATE|Ingres\W.*Driver)" \
|
|
218
|
+
"id:951190,\
|
|
219
|
+
phase:4,\
|
|
220
|
+
block,\
|
|
221
|
+
capture,\
|
|
222
|
+
t:none,\
|
|
223
|
+
msg:'ingres SQL Information Leakage',\
|
|
224
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
225
|
+
tag:'application-multi',\
|
|
226
|
+
tag:'language-multi',\
|
|
227
|
+
tag:'platform-ingres',\
|
|
228
|
+
tag:'attack-disclosure',\
|
|
229
|
+
tag:'paranoia-level/1',\
|
|
230
|
+
tag:'OWASP_CRS',\
|
|
231
|
+
tag:'capec/1000/118/116/54',\
|
|
232
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
233
|
+
severity:'CRITICAL',\
|
|
234
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
235
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
236
|
+
|
|
237
|
+
SecRule RESPONSE_BODY "@rx (?i:<b>Warning</b>: ibase_|Unexpected end of command in statement)" \
|
|
238
|
+
"id:951200,\
|
|
239
|
+
phase:4,\
|
|
240
|
+
block,\
|
|
241
|
+
capture,\
|
|
242
|
+
t:none,\
|
|
243
|
+
msg:'interbase SQL Information Leakage',\
|
|
244
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
245
|
+
tag:'application-multi',\
|
|
246
|
+
tag:'language-multi',\
|
|
247
|
+
tag:'platform-interbase',\
|
|
248
|
+
tag:'attack-disclosure',\
|
|
249
|
+
tag:'paranoia-level/1',\
|
|
250
|
+
tag:'OWASP_CRS',\
|
|
251
|
+
tag:'capec/1000/118/116/54',\
|
|
252
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
253
|
+
severity:'CRITICAL',\
|
|
254
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
255
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
256
|
+
|
|
257
|
+
SecRule RESPONSE_BODY "@rx (?i:SQL error.*POS[0-9]+.*|Warning.*maxdb.*)" \
|
|
258
|
+
"id:951210,\
|
|
259
|
+
phase:4,\
|
|
260
|
+
block,\
|
|
261
|
+
capture,\
|
|
262
|
+
t:none,\
|
|
263
|
+
msg:'maxDB SQL Information Leakage',\
|
|
264
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
265
|
+
tag:'application-multi',\
|
|
266
|
+
tag:'language-multi',\
|
|
267
|
+
tag:'platform-maxdb',\
|
|
268
|
+
tag:'attack-disclosure',\
|
|
269
|
+
tag:'paranoia-level/1',\
|
|
270
|
+
tag:'OWASP_CRS',\
|
|
271
|
+
tag:'capec/1000/118/116/54',\
|
|
272
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
273
|
+
severity:'CRITICAL',\
|
|
274
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
275
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
276
|
+
|
|
277
|
+
SecRule RESPONSE_BODY "@rx (?i)(?:System\.Data\.OleDb\.OleDbException|\[Microsoft\]\[ODBC SQL Server Driver\]|\[Macromedia\]\[SQLServer JDBC Driver\]|\[SqlException|System\.Data\.SqlClient\.SqlException|Unclosed quotation mark after the character string|'80040e14'|mssql_query\(\)|Microsoft OLE DB Provider for ODBC Drivers|Microsoft OLE DB Provider for SQL Server|Incorrect syntax near|Sintaxis incorrecta cerca de|Syntax error in string in query expression|Procedure or function .* expects parameter|Unclosed quotation mark before the character string|Syntax error .* in query expression|Data type mismatch in criteria expression\.|ADODB\.Field \(0x800A0BCD\)|the used select statements have different number of columns|OLE DB.*SQL Server|Warning.*mssql_.*|Driver.*SQL[ _-]*Server|SQL Server.*Driver|SQL Server.*[0-9a-fA-F]{8}|Exception.*\WSystem\.Data\.SqlClient\.|Conversion failed when converting the varchar value .*? to data type int\.)" \
|
|
278
|
+
"id:951220,\
|
|
279
|
+
phase:4,\
|
|
280
|
+
block,\
|
|
281
|
+
capture,\
|
|
282
|
+
t:none,\
|
|
283
|
+
msg:'mssql SQL Information Leakage',\
|
|
284
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
285
|
+
tag:'application-multi',\
|
|
286
|
+
tag:'language-multi',\
|
|
287
|
+
tag:'platform-mssql',\
|
|
288
|
+
tag:'attack-disclosure',\
|
|
289
|
+
tag:'paranoia-level/1',\
|
|
290
|
+
tag:'OWASP_CRS',\
|
|
291
|
+
tag:'capec/1000/118/116/54',\
|
|
292
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
293
|
+
severity:'CRITICAL',\
|
|
294
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
295
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
296
|
+
|
|
297
|
+
# Regular expression generated from regex-assembly/951230.ra.
|
|
298
|
+
# To update the regular expression run the following shell script
|
|
299
|
+
# (consult https://coreruleset.org/docs/development/regex_assembly/ for details):
|
|
300
|
+
# crs-toolchain regex update 951230
|
|
301
|
+
#
|
|
302
|
+
SecRule RESPONSE_BODY "@rx (?i)(?:supplied argument is not a valid |SQL syntax.*)MySQL|Column count doesn't match(?: value count at row)?|mysql_fetch_array\(\)|on MySQL result index|You have an error in your SQL syntax(?:;| near)|MyS(?:QL server version for the right syntax to use|qlClient\.)|\[MySQL\]\[ODBC|(?:Table '[^']+' doesn't exis|valid MySQL resul)t|Warning.{1,10}mysql_(?:[\(\)_a-z]{1,26})?|(?:ERROR [0-9]{4} \([0-9a-z]{5}\)|XPATH syntax error):" \
|
|
303
|
+
"id:951230,\
|
|
304
|
+
phase:4,\
|
|
305
|
+
block,\
|
|
306
|
+
capture,\
|
|
307
|
+
t:none,\
|
|
308
|
+
msg:'mysql SQL Information Leakage',\
|
|
309
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
310
|
+
tag:'application-multi',\
|
|
311
|
+
tag:'language-multi',\
|
|
312
|
+
tag:'platform-mysql',\
|
|
313
|
+
tag:'attack-disclosure',\
|
|
314
|
+
tag:'paranoia-level/1',\
|
|
315
|
+
tag:'OWASP_CRS',\
|
|
316
|
+
tag:'capec/1000/118/116/54',\
|
|
317
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
318
|
+
severity:'CRITICAL',\
|
|
319
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
320
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
321
|
+
|
|
322
|
+
# Regular expression generated from regex-assembly/951240.ra.
|
|
323
|
+
# To update the regular expression run the following shell script
|
|
324
|
+
# (consult https://coreruleset.org/docs/development/regex_assembly/ for details):
|
|
325
|
+
# crs-toolchain regex update 951240
|
|
326
|
+
#
|
|
327
|
+
SecRule RESPONSE_BODY "@rx (?i)P(?:ostgreSQL(?: query failed:|.{1,20}ERROR)|G::[a-z]*Error)|(?:pg_(?:query|exec)\(\) \[|org\.postgresql\.util\.PSQLException):|Warning.{1,20}\bpg_.*|valid PostgreSQL result|Npgsql\.|Supplied argument is not a valid PostgreSQL .*? resource|(?:Unable to connect to PostgreSQL serv|invalid input syntax for integ)er" \
|
|
328
|
+
"id:951240,\
|
|
329
|
+
phase:4,\
|
|
330
|
+
block,\
|
|
331
|
+
capture,\
|
|
332
|
+
t:none,\
|
|
333
|
+
msg:'postgres SQL Information Leakage',\
|
|
334
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
335
|
+
tag:'application-multi',\
|
|
336
|
+
tag:'language-multi',\
|
|
337
|
+
tag:'platform-pgsql',\
|
|
338
|
+
tag:'attack-disclosure',\
|
|
339
|
+
tag:'paranoia-level/1',\
|
|
340
|
+
tag:'OWASP_CRS',\
|
|
341
|
+
tag:'capec/1000/118/116/54',\
|
|
342
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
343
|
+
severity:'CRITICAL',\
|
|
344
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
345
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
346
|
+
|
|
347
|
+
SecRule RESPONSE_BODY "@rx (?i)(?:Warning.*sqlite_.*|Warning.*SQLite3::|SQLite/JDBCDriver|SQLite\.Exception|System\.Data\.SQLite\.SQLiteException)" \
|
|
348
|
+
"id:951250,\
|
|
349
|
+
phase:4,\
|
|
350
|
+
block,\
|
|
351
|
+
capture,\
|
|
352
|
+
t:none,\
|
|
353
|
+
msg:'sqlite SQL Information Leakage',\
|
|
354
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
355
|
+
tag:'application-multi',\
|
|
356
|
+
tag:'language-multi',\
|
|
357
|
+
tag:'platform-sqlite',\
|
|
358
|
+
tag:'attack-disclosure',\
|
|
359
|
+
tag:'paranoia-level/1',\
|
|
360
|
+
tag:'OWASP_CRS',\
|
|
361
|
+
tag:'capec/1000/118/116/54',\
|
|
362
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
363
|
+
severity:'CRITICAL',\
|
|
364
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
365
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
366
|
+
|
|
367
|
+
SecRule RESPONSE_BODY "@rx (?i)(?:Sybase message:|Warning.{2,20}sybase|Sybase.*Server message.*)" \
|
|
368
|
+
"id:951260,\
|
|
369
|
+
phase:4,\
|
|
370
|
+
block,\
|
|
371
|
+
capture,\
|
|
372
|
+
t:none,\
|
|
373
|
+
msg:'Sybase SQL Information Leakage',\
|
|
374
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
375
|
+
tag:'application-multi',\
|
|
376
|
+
tag:'language-multi',\
|
|
377
|
+
tag:'platform-sybase',\
|
|
378
|
+
tag:'attack-disclosure',\
|
|
379
|
+
tag:'paranoia-level/1',\
|
|
380
|
+
tag:'OWASP_CRS',\
|
|
381
|
+
tag:'capec/1000/118/116/54',\
|
|
382
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
383
|
+
severity:'CRITICAL',\
|
|
384
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
|
|
385
|
+
setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}'"
|
|
386
|
+
|
|
387
|
+
SecMarker "END-SQL-ERROR-MATCH-PL1"
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 2" "id:951013,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
391
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 2" "id:951014,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
392
|
+
#
|
|
393
|
+
# -= Paranoia Level 2 =- (apply only when tx.detection_paranoia_level is sufficiently high: 2 or higher)
|
|
394
|
+
#
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 3" "id:951015,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
399
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 3" "id:951016,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
400
|
+
#
|
|
401
|
+
# -= Paranoia Level 3 =- (apply only when tx.detection_paranoia_level is sufficiently high: 3 or higher)
|
|
402
|
+
#
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 4" "id:951017,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
407
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 4" "id:951018,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
408
|
+
#
|
|
409
|
+
# -= Paranoia Level 4 =- (apply only when tx.detection_paranoia_level is sufficiently high: 4 or higher)
|
|
410
|
+
#
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
#
|
|
415
|
+
# -= Paranoia Levels Finished =-
|
|
416
|
+
#
|
|
417
|
+
SecMarker "END-RESPONSE-951-DATA-LEAKAGES-SQL"
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# ------------------------------------------------------------------------
|
|
2
|
+
# OWASP CRS ver.4.9.0
|
|
3
|
+
# Copyright (c) 2006-2020 Trustwave and contributors. All rights reserved.
|
|
4
|
+
# Copyright (c) 2021-2024 CRS project. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# The OWASP CRS is distributed under
|
|
7
|
+
# Apache Software License (ASL) version 2
|
|
8
|
+
# Please see the enclosed LICENSE file for full details.
|
|
9
|
+
# ------------------------------------------------------------------------
|
|
10
|
+
|
|
11
|
+
#
|
|
12
|
+
# -= Paranoia Level 0 (empty) =- (apply unconditionally)
|
|
13
|
+
#
|
|
14
|
+
|
|
15
|
+
# Skip all rules if RESPONSE_BODY is compressed.
|
|
16
|
+
SecRule RESPONSE_HEADERS:Content-Encoding "@pm gzip compress deflate br zstd" \
|
|
17
|
+
"id:952010,\
|
|
18
|
+
phase:4,\
|
|
19
|
+
pass,\
|
|
20
|
+
nolog,\
|
|
21
|
+
tag:'OWASP_CRS',\
|
|
22
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
23
|
+
skipAfter:END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
24
|
+
|
|
25
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 1" "id:952011,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
26
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 1" "id:952012,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
27
|
+
#
|
|
28
|
+
# -= Paranoia Level 1 (default) =- (apply only when tx.detection_paranoia_level is sufficiently high: 1 or higher)
|
|
29
|
+
#
|
|
30
|
+
|
|
31
|
+
#
|
|
32
|
+
# -=[ Java Source Code Leakages ]=-
|
|
33
|
+
#
|
|
34
|
+
SecRule RESPONSE_BODY "@pmFromFile java-code-leakages.data" \
|
|
35
|
+
"id:952100,\
|
|
36
|
+
phase:4,\
|
|
37
|
+
block,\
|
|
38
|
+
capture,\
|
|
39
|
+
t:none,\
|
|
40
|
+
msg:'Java Source Code Leakage',\
|
|
41
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
42
|
+
tag:'application-multi',\
|
|
43
|
+
tag:'language-java',\
|
|
44
|
+
tag:'platform-multi',\
|
|
45
|
+
tag:'attack-disclosure',\
|
|
46
|
+
tag:'paranoia-level/1',\
|
|
47
|
+
tag:'OWASP_CRS',\
|
|
48
|
+
tag:'capec/1000/118/116',\
|
|
49
|
+
tag:'PCI/6.5.6',\
|
|
50
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
51
|
+
severity:'ERROR',\
|
|
52
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.error_anomaly_score}'"
|
|
53
|
+
|
|
54
|
+
#
|
|
55
|
+
# -=[ Java Errors ]=-
|
|
56
|
+
#
|
|
57
|
+
# Ref: https://github.com/andresriancho/w3af/blob/master/w3af/plugins/grep/error_pages.py
|
|
58
|
+
#
|
|
59
|
+
SecRule RESPONSE_BODY "@pmFromFile java-errors.data" \
|
|
60
|
+
"id:952110,\
|
|
61
|
+
phase:4,\
|
|
62
|
+
block,\
|
|
63
|
+
capture,\
|
|
64
|
+
t:none,\
|
|
65
|
+
msg:'Java Errors',\
|
|
66
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
67
|
+
tag:'application-multi',\
|
|
68
|
+
tag:'language-java',\
|
|
69
|
+
tag:'platform-multi',\
|
|
70
|
+
tag:'attack-disclosure',\
|
|
71
|
+
tag:'paranoia-level/1',\
|
|
72
|
+
tag:'OWASP_CRS',\
|
|
73
|
+
tag:'capec/1000/118/116',\
|
|
74
|
+
tag:'PCI/6.5.6',\
|
|
75
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
76
|
+
severity:'ERROR',\
|
|
77
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.error_anomaly_score}'"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 2" "id:952013,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
82
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 2" "id:952014,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
83
|
+
#
|
|
84
|
+
# -= Paranoia Level 2 =- (apply only when tx.detection_paranoia_level is sufficiently high: 2 or higher)
|
|
85
|
+
#
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 3" "id:952015,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
90
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 3" "id:952016,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
91
|
+
#
|
|
92
|
+
# -= Paranoia Level 3 =- (apply only when tx.detection_paranoia_level is sufficiently high: 3 or higher)
|
|
93
|
+
#
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 4" "id:952017,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
98
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 4" "id:952018,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
99
|
+
#
|
|
100
|
+
# -= Paranoia Level 4 =- (apply only when tx.detection_paranoia_level is sufficiently high: 4 or higher)
|
|
101
|
+
#
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
#
|
|
106
|
+
# -= Paranoia Levels Finished =-
|
|
107
|
+
#
|
|
108
|
+
SecMarker "END-RESPONSE-952-DATA-LEAKAGES-JAVA"
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# ------------------------------------------------------------------------
|
|
2
|
+
# OWASP CRS ver.4.9.0
|
|
3
|
+
# Copyright (c) 2006-2020 Trustwave and contributors. All rights reserved.
|
|
4
|
+
# Copyright (c) 2021-2024 CRS project. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# The OWASP CRS is distributed under
|
|
7
|
+
# Apache Software License (ASL) version 2
|
|
8
|
+
# Please see the enclosed LICENSE file for full details.
|
|
9
|
+
# ------------------------------------------------------------------------
|
|
10
|
+
|
|
11
|
+
#
|
|
12
|
+
# -= Paranoia Level 0 (empty) =- (apply unconditionally)
|
|
13
|
+
#
|
|
14
|
+
|
|
15
|
+
# Skip all rules if RESPONSE_BODY is compressed.
|
|
16
|
+
SecRule RESPONSE_HEADERS:Content-Encoding "@pm gzip compress deflate br zstd" \
|
|
17
|
+
"id:953010,\
|
|
18
|
+
phase:4,\
|
|
19
|
+
pass,\
|
|
20
|
+
nolog,\
|
|
21
|
+
tag:'OWASP_CRS',\
|
|
22
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
23
|
+
skipAfter:END-RESPONSE-953-DATA-LEAKAGES-PHP"
|
|
24
|
+
|
|
25
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 1" "id:953011,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-953-DATA-LEAKAGES-PHP"
|
|
26
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 1" "id:953012,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-953-DATA-LEAKAGES-PHP"
|
|
27
|
+
#
|
|
28
|
+
# -= Paranoia Level 1 (default) =- (apply only when tx.detection_paranoia_level is sufficiently high: 1 or higher)
|
|
29
|
+
#
|
|
30
|
+
|
|
31
|
+
#
|
|
32
|
+
# -=[ PHP Error Message Leakage ]=-
|
|
33
|
+
#
|
|
34
|
+
SecRule RESPONSE_BODY "@pmFromFile php-errors.data" \
|
|
35
|
+
"id:953100,\
|
|
36
|
+
phase:4,\
|
|
37
|
+
block,\
|
|
38
|
+
capture,\
|
|
39
|
+
t:none,\
|
|
40
|
+
msg:'PHP Information Leakage',\
|
|
41
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
42
|
+
tag:'application-multi',\
|
|
43
|
+
tag:'language-php',\
|
|
44
|
+
tag:'platform-multi',\
|
|
45
|
+
tag:'attack-disclosure',\
|
|
46
|
+
tag:'paranoia-level/1',\
|
|
47
|
+
tag:'OWASP_CRS',\
|
|
48
|
+
tag:'capec/1000/118/116',\
|
|
49
|
+
tag:'PCI/6.5.6',\
|
|
50
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
51
|
+
severity:'ERROR',\
|
|
52
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.error_anomaly_score}'"
|
|
53
|
+
|
|
54
|
+
#
|
|
55
|
+
# -=[ PHP source code leakage ]=-
|
|
56
|
+
#
|
|
57
|
+
# Detect some common PHP keywords in output.
|
|
58
|
+
#
|
|
59
|
+
SecRule RESPONSE_BODY "@rx (?:\b(?:f(?:tp_(?:nb_)?f?(?:ge|pu)t|get(?:s?s|c)|scanf|write|open|read)|gz(?:(?:encod|writ)e|compress|open|read)|s(?:ession_start|candir)|read(?:(?:gz)?file|dir)|move_uploaded_file|(?:proc_|bz)open|call_user_func)|\$_(?:(?:pos|ge)t|session))\b" \
|
|
60
|
+
"id:953110,\
|
|
61
|
+
phase:4,\
|
|
62
|
+
block,\
|
|
63
|
+
capture,\
|
|
64
|
+
t:none,\
|
|
65
|
+
msg:'PHP source code leakage',\
|
|
66
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
67
|
+
tag:'application-multi',\
|
|
68
|
+
tag:'language-php',\
|
|
69
|
+
tag:'platform-multi',\
|
|
70
|
+
tag:'attack-disclosure',\
|
|
71
|
+
tag:'paranoia-level/1',\
|
|
72
|
+
tag:'OWASP_CRS',\
|
|
73
|
+
tag:'capec/1000/118/116',\
|
|
74
|
+
tag:'PCI/6.5.6',\
|
|
75
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
76
|
+
severity:'ERROR',\
|
|
77
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.error_anomaly_score}'"
|
|
78
|
+
|
|
79
|
+
# Detect the presence of the PHP open tag "<? ", "<?= " or "<?php " in output.
|
|
80
|
+
#
|
|
81
|
+
# To prevent false positives (due to the short "<?" sequences), we also include,
|
|
82
|
+
# the space after it in an attempt to stop alerts in binary output.
|
|
83
|
+
# And we make it case insensitive.
|
|
84
|
+
#
|
|
85
|
+
SecRule RESPONSE_BODY "@rx (?i)<\?(?:=|php)?\s+" \
|
|
86
|
+
"id:953120,\
|
|
87
|
+
phase:4,\
|
|
88
|
+
block,\
|
|
89
|
+
capture,\
|
|
90
|
+
t:none,\
|
|
91
|
+
msg:'PHP source code leakage',\
|
|
92
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
93
|
+
tag:'application-multi',\
|
|
94
|
+
tag:'language-php',\
|
|
95
|
+
tag:'platform-multi',\
|
|
96
|
+
tag:'attack-disclosure',\
|
|
97
|
+
tag:'paranoia-level/1',\
|
|
98
|
+
tag:'OWASP_CRS',\
|
|
99
|
+
tag:'capec/1000/118/116',\
|
|
100
|
+
tag:'PCI/6.5.6',\
|
|
101
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
102
|
+
severity:'ERROR',\
|
|
103
|
+
setvar:'tx.outbound_anomaly_score_pl1=+%{tx.error_anomaly_score}'"
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 2" "id:953013,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-953-DATA-LEAKAGES-PHP"
|
|
107
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 2" "id:953014,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-953-DATA-LEAKAGES-PHP"
|
|
108
|
+
#
|
|
109
|
+
# -= Paranoia Level 2 =- (apply only when tx.detection_paranoia_level is sufficiently high: 2 or higher)
|
|
110
|
+
#
|
|
111
|
+
|
|
112
|
+
#
|
|
113
|
+
# -=[ PHP Error Message Leakage ]=-
|
|
114
|
+
#
|
|
115
|
+
# This is a stricter sibling of rule 953100.
|
|
116
|
+
# This stricter sibling checks for additional error messages which has a higher chance to appear in common language.
|
|
117
|
+
#
|
|
118
|
+
SecRule RESPONSE_BODY "@pmFromFile php-errors-pl2.data" \
|
|
119
|
+
"id:953101,\
|
|
120
|
+
phase:4,\
|
|
121
|
+
block,\
|
|
122
|
+
capture,\
|
|
123
|
+
t:none,\
|
|
124
|
+
msg:'PHP Information Leakage',\
|
|
125
|
+
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
|
|
126
|
+
tag:'application-multi',\
|
|
127
|
+
tag:'language-php',\
|
|
128
|
+
tag:'platform-multi',\
|
|
129
|
+
tag:'attack-disclosure',\
|
|
130
|
+
tag:'paranoia-level/2',\
|
|
131
|
+
tag:'OWASP_CRS',\
|
|
132
|
+
tag:'capec/1000/118/116',\
|
|
133
|
+
tag:'PCI/6.5.6',\
|
|
134
|
+
ver:'OWASP_CRS/4.9.0',\
|
|
135
|
+
severity:'ERROR',\
|
|
136
|
+
setvar:'tx.outbound_anomaly_score_pl2=+%{tx.error_anomaly_score}'"
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 3" "id:953015,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-953-DATA-LEAKAGES-PHP"
|
|
140
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 3" "id:953016,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-953-DATA-LEAKAGES-PHP"
|
|
141
|
+
#
|
|
142
|
+
# -= Paranoia Level 3 =- (apply only when tx.detection_paranoia_level is sufficiently high: 3 or higher)
|
|
143
|
+
#
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 4" "id:953017,phase:3,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-953-DATA-LEAKAGES-PHP"
|
|
148
|
+
SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 4" "id:953018,phase:4,pass,nolog,tag:'OWASP_CRS',ver:'OWASP_CRS/4.9.0',skipAfter:END-RESPONSE-953-DATA-LEAKAGES-PHP"
|
|
149
|
+
#
|
|
150
|
+
# -= Paranoia Level 4 =- (apply only when tx.detection_paranoia_level is sufficiently high: 4 or higher)
|
|
151
|
+
#
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
#
|
|
156
|
+
# -= Paranoia Levels Finished =-
|
|
157
|
+
#
|
|
158
|
+
SecMarker "END-RESPONSE-953-DATA-LEAKAGES-PHP"
|