1[
2  {
3    "enabled":1,
4    "version_min":300000,
5    "title":"Testing Variables :: MULTIPART_STRICT_ERROR",
6    "client":{
7      "ip":"200.249.12.31",
8      "port":123
9    },
10    "server":{
11      "ip":"200.249.12.31",
12      "port":80
13    },
14    "request":{
15      "headers":{
16        "Host":"localhost",
17        "User-Agent":"curl/7.38.0",
18        "Accept":"*/*",
19        "Content-Length":"330",
20        "Content-Type":"multipart/form-data; boundary= --------------------------756b6d74fa1a8ee2",
21        "Expect":"100-continue"
22      },
23      "uri":"/",
24      "method":"POST",
25      "body":[
26        "--------------------------756b6d74fa1a8ee2",
27        "Content-Disposition: form-data; name=\"name\"",
28        "",
29        "test",
30        "--------------------------756b6d74fa1a8ee2",
31        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
32        "Content-Type: text/plain",
33        "",
34        "This is a very small test file..",
35        "--------------------------756b6d74fa1a8ee2",
36        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
37        "Content-Type: text/plain",
38        "",
39        "This is another very small test file..",
40        "--------------------------756b6d74fa1a8ee2--"
41      ]
42    },
43    "response":{
44      "headers":{
45        "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
46        "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
47        "Content-Type":"text/html"
48      },
49      "body":[
50        "no need."
51      ]
52    },
53    "expected":{
54      "debug_log":"Multipart: Warning: boundary whitespace in C-T header"
55    },
56    "rules":[
57      "SecRuleEngine On",
58      "SecRule MULTIPART_STRICT_ERROR \"@contains 0\" \"id:1,phase:3,pass,t:trim\""
59    ]
60  },
61  {
62    "enabled":1,
63    "version_min":300000,
64    "title":"Testing Variables :: MULTIPART_STRICT_ERROR",
65    "client":{
66      "ip":"200.249.12.31",
67      "port":123
68    },
69    "server":{
70      "ip":"200.249.12.31",
71      "port":80
72    },
73    "request":{
74      "headers":{
75        "Host":"localhost",
76        "User-Agent":"curl/7.38.0",
77        "Accept":"*/*",
78        "Content-Length":"330",
79        "Content-Type":"multipart/form-data; boundary=\"--------------------------756b6d74fa1a8ee2\"",
80        "Expect":"100-continue"
81      },
82      "uri":"/",
83      "method":"POST",
84      "body":[
85        "--------------------------756b6d74fa1a8ee2",
86        "Content-Disposition: form-data; name=\"name\"",
87        "",
88        "test",
89        "--------------------------756b6d74fa1a8ee2",
90        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
91        "Content-Type: text/plain",
92        "",
93        "This is a very small test file..",
94        "--------------------------756b6d74fa1a8ee2",
95        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
96        "Content-Type: text/plain",
97        "",
98        "This is another very small test file..",
99        "--------------------------756b6d74fa1a8ee2--"
100      ]
101    },
102    "response":{
103      "headers":{
104        "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
105        "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
106        "Content-Type":"text/html"
107      },
108      "body":[
109        "no need."
110      ]
111    },
112    "expected":{
113      "debug_log":"Multipart: Warning: boundary was quoted."
114    },
115    "rules":[
116      "SecRuleEngine On",
117      "SecRule MULTIPART_STRICT_ERROR \"@contains 0\" \"id:1,phase:3,pass,t:trim\""
118    ]
119  },
120  {
121    "enabled":1,
122    "version_min":300000,
123    "title":"Testing Variables :: MULTIPART_STRICT_ERROR",
124    "client":{
125      "ip":"200.249.12.31",
126      "port":123
127    },
128    "server":{
129      "ip":"200.249.12.31",
130      "port":80
131    },
132    "request":{
133      "headers":{
134        "Host":"localhost",
135        "User-Agent":"curl/7.38.0",
136        "Accept":"*/*",
137        "Content-Length":"330",
138        "Content-Type":"multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
139        "Expect":"100-continue"
140      },
141      "uri":"/",
142      "method":"POST",
143      "body":[
144        "--------------------------756b6d74fa1a8ee2",
145        "Content-Disposition: form-data; name=\"name\"",
146        "",
147        "test",
148        "--------------------------756b6d74fa1a8ee2",
149        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
150        "Content-Type: text/plain",
151        "",
152        "This is a very small test file..",
153        "--------------------------756b6d74fa1a8ee2",
154        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
155        "Content-Type: text/plain",
156        "",
157        "This is another very small test file..",
158        "--------------------------756b6d74fa1a8ee2--whee."
159      ]
160    },
161    "response":{
162      "headers":{
163        "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
164        "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
165        "Content-Type":"text/html"
166      },
167      "body":[
168        "no need."
169      ]
170    },
171    "expected":{
172      "debug_log":"Multipart: Warning: seen data before first boundary"
173    },
174    "rules":[
175      "SecRuleEngine On",
176      "SecRule MULTIPART_STRICT_ERROR \"@contains 0\" \"id:1,phase:3,pass,t:trim\""
177    ]
178  },
179  {
180    "enabled":1,
181    "version_min":300000,
182    "title":"Testing Variables :: MULTIPART_STRICT_ERROR",
183    "client":{
184      "ip":"200.249.12.31",
185      "port":123
186    },
187    "server":{
188      "ip":"200.249.12.31",
189      "port":80
190    },
191    "request":{
192      "headers":{
193        "Host":"localhost",
194        "User-Agent":"curl/7.38.0",
195        "Accept":"*/*",
196        "Content-Length":"330",
197        "Content-Type":"multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
198        "Expect":"100-continue"
199      },
200      "uri":"/",
201      "method":"POST",
202      "body":[
203        "----------------------------756b6d74fa1a8ee2",
204        "Content-Disposition: form-data; name=\"name\"",
205        "",
206        "test",
207        "----------------------------756b6d74fa1a8ee2",
208        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
209        "Content-Type: text/plain",
210        "",
211        "This is a very small test file..",
212        "----------------------------756b6d74fa1a8ee2",
213        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
214        "Content-Type: text/plain",
215        "",
216        "This is another very small test file..",
217        "----------------------------756b6d74fa1a8ee2--"
218      ]
219    },
220    "response":{
221      "headers":{
222        "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
223        "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
224        "Content-Type":"text/html"
225      },
226      "body":[
227        "no need."
228      ]
229    },
230    "expected":{
231      "debug_log":"Warning: incorrect line endings used \\(LF\\)"
232    },
233    "rules":[
234      "SecRuleEngine On",
235      "SecRule MULTIPART_STRICT_ERROR \"@contains 0\" \"id:1,phase:3,pass,t:trim\""
236    ]
237  },
238  {
239    "enabled":1,
240    "version_min":300000,
241    "title":"Testing Variables :: MULTIPART_STRICT_ERROR",
242    "client":{
243      "ip":"200.249.12.31",
244      "port":123
245    },
246    "server":{
247      "ip":"200.249.12.31",
248      "port":80
249    },
250    "request":{
251      "headers":{
252        "Host":"localhost",
253        "User-Agent":"curl/7.38.0",
254        "Accept":"*/*",
255        "Content-Length":"330",
256        "Content-Type":"multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
257        "Expect":"100-continue"
258      },
259      "uri":"/",
260      "method":"POST",
261      "body":[
262        "--------------------------756b6d74fa1a8ee2",
263        "Content-Disposition: form-data; name=\"name\"",
264        "",
265        "test",
266        "--------------------------756b6d74fa1a8ee2",
267        "Content-Disposition: form-data; name='filedata'; filename=\"small_text_file.txt\"",
268        "Content-Type: text/plain",
269        "",
270        "This is a very small test file..",
271        "--------------------------756b6d74fa1a8ee2",
272        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
273        "Content-Type: text/plain",
274        "",
275        "This is another very small test file..",
276        "--------------------------756b6d74fa1a8ee2--"
277      ]
278    },
279    "response":{
280      "headers":{
281        "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
282        "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
283        "Content-Type":"text/html"
284      },
285      "body":[
286        "no need."
287      ]
288    },
289    "expected":{
290      "debug_log":"Multipart: Warning: seen data before first boundary"
291    },
292    "rules":[
293      "SecRuleEngine On",
294      "SecRule MULTIPART_STRICT_ERROR \"@contains 0\" \"id:1,phase:3,pass,t:trim\""
295    ]
296  },
297  {
298    "enabled":1,
299    "version_min":300000,
300    "title":"Testing Variables :: MULTIPART_STRICT_ERROR - RFC2046",
301    "client":{
302      "ip":"200.249.12.31",
303      "port":123
304    },
305    "server":{
306      "ip":"200.249.12.31",
307      "port":80
308    },
309    "request":{
310      "headers":{
311        "Host":"localhost",
312        "User-Agent":"curl/7.38.0",
313        "Accept":"*/*",
314        "Content-Length":"330",
315        "Content-Type":"multipart/form-data; boundary=0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz '()+_,-./:=?",
316        "Expect":"100-continue"
317      },
318      "uri":"/",
319      "method":"POST",
320      "body":[
321        "--0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz '()+_,-./:=?",
322        "Content-Disposition: form-data; name=\"name\"",
323        "",
324        "1",
325        "--0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz '()+_,-./:=?--"
326      ]
327    },
328    "response":{
329      "headers":{
330        "Date":"Mon, 13 Jul 2015 20:02:41 GMT",
331        "Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
332        "Content-Type":"text/html"
333      },
334      "body":[
335        "no need."
336      ]
337    },
338    "expected":{
339      "debug_log":"Target value: \"0\" \\(Variable: REQBODY_ERROR\\)"
340    },
341    "rules":[
342      "SecRuleEngine On",
343      "SecRule REQBODY_ERROR \"@contains 0\" \"id:1,phase:3,pass,t:trim\""
344    ]
345  }
346]
347
348