Skip to content

Commit c951265

Browse files
committed
Test target MATCHED_VARS_NAMES - Positive & Negative
Signed-off-by: Sebitosh <[email protected]>
1 parent c1071b7 commit c951265

29 files changed

+895
-15
lines changed

config_tests/CONF_000_GLOBAL.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ global:
1313
log,\
1414
msg:'%{MATCHED_VAR_NAME} was caught in phase:${PHASE}$',\
1515
ver:'${VERSION}$'"
16+
- name: "Non-disruptive SecRule for TARGETS"
17+
template: |
18+
SecRule ${TARGET}$ "${OPERATOR}$ ${OPARG}$" \
19+
"id:${CURRID}$,\
20+
phase:${PHASE}$,\
21+
t:none,\
22+
log,\
23+
msg:'%{MATCHED_VAR_NAME} was caught in phase:${PHASE}$',\
24+
ver:'${VERSION}$'"
1625
default_tests_phase_methods:
1726
- 1: get
1827
- 2: post
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
target: MATCHED_VARS_NAMES
2+
rulefile: MRTS_026_MATCHED_VARS_NAMES-NEG.conf
3+
testfile: MRTS_026_MATCHED_VARS_NAMES-NEG.yaml
4+
templates:
5+
- Non-disruptive SecRule for TARGETS
6+
colkey:
7+
- - ''
8+
operator:
9+
- '@contains'
10+
oparg:
11+
- ARGS:matched_vars_names_negative_test
12+
generation:
13+
before_each: |
14+
SecRule ARGS "@rx matched_vars_names_negative_test" "id:${CURRID}$, phase:${PHASE}$, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
15+
SecRule ARGS "@rx matched_vars_names_test" "id:${CURRID}$, phase:${PHASE}$, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
16+
phase:
17+
- 1
18+
- 2
19+
- 3
20+
- 4
21+
- 5
22+
testdata:
23+
phase_methods:
24+
1: get
25+
2: post
26+
3: post
27+
4: post
28+
5: post
29+
targets:
30+
- target: ''
31+
test:
32+
data:
33+
matched_vars_names_test: matched_vars_names_test
34+
matched_vars_names_negative_test: matched_vars_names_negative_test
35+
output:
36+
log:
37+
no_expect_ids: []
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
target: MATCHED_VARS_NAMES
2+
rulefile: MRTS_026_MATCHED_VARS_NAMES.conf
3+
testfile: MRTS_026_MATCHED_VARS_NAMES.yaml
4+
templates:
5+
- Non-disruptive SecRule for TARGETS
6+
colkey:
7+
- - ''
8+
operator:
9+
- '@contains'
10+
oparg:
11+
- ARGS:matched_vars_names_test
12+
- ARGS_NAMES:matched_vars_names_test
13+
- REQUEST_COOKIES:matched_vars_names_test
14+
generation:
15+
before_each: |
16+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:${CURRID}$, phase:${PHASE}$, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
17+
phase:
18+
- 1
19+
- 2
20+
- 3
21+
- 4
22+
- 5
23+
testdata:
24+
phase_methods:
25+
1: get
26+
2: post
27+
3: post
28+
4: post
29+
5: post
30+
targets:
31+
- target: ''
32+
test:
33+
data:
34+
matched_vars_names_test: matched_vars_names_test
35+
input:
36+
headers:
37+
- name: Cookie
38+
value: matched_vars_names_test=matched_vars_names_test
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
SecRule ARGS "@rx matched_vars_names_negative_test" "id:100092, phase:1, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
2+
SecRule ARGS "@rx matched_vars_names_test" "id:100093, phase:1, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
3+
4+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_negative_test" \
5+
"id:100094,\
6+
phase:1,\
7+
t:none,\
8+
log,\
9+
msg:'%{MATCHED_VAR_NAME} was caught in phase:1',\
10+
ver:'MRTS/0.1'"
11+
12+
SecRule ARGS "@rx matched_vars_names_negative_test" "id:100095, phase:2, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
13+
SecRule ARGS "@rx matched_vars_names_test" "id:100096, phase:2, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
14+
15+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_negative_test" \
16+
"id:100097,\
17+
phase:2,\
18+
t:none,\
19+
log,\
20+
msg:'%{MATCHED_VAR_NAME} was caught in phase:2',\
21+
ver:'MRTS/0.1'"
22+
23+
SecRule ARGS "@rx matched_vars_names_negative_test" "id:100098, phase:3, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
24+
SecRule ARGS "@rx matched_vars_names_test" "id:100099, phase:3, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
25+
26+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_negative_test" \
27+
"id:100100,\
28+
phase:3,\
29+
t:none,\
30+
log,\
31+
msg:'%{MATCHED_VAR_NAME} was caught in phase:3',\
32+
ver:'MRTS/0.1'"
33+
34+
SecRule ARGS "@rx matched_vars_names_negative_test" "id:100101, phase:4, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
35+
SecRule ARGS "@rx matched_vars_names_test" "id:100102, phase:4, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
36+
37+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_negative_test" \
38+
"id:100103,\
39+
phase:4,\
40+
t:none,\
41+
log,\
42+
msg:'%{MATCHED_VAR_NAME} was caught in phase:4',\
43+
ver:'MRTS/0.1'"
44+
45+
SecRule ARGS "@rx matched_vars_names_negative_test" "id:100104, phase:5, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
46+
SecRule ARGS "@rx matched_vars_names_test" "id:100105, phase:5, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
47+
48+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_negative_test" \
49+
"id:100106,\
50+
phase:5,\
51+
t:none,\
52+
log,\
53+
msg:'%{MATCHED_VAR_NAME} was caught in phase:5',\
54+
ver:'MRTS/0.1'"
55+
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100107, phase:1, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
2+
3+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_test" \
4+
"id:100108,\
5+
phase:1,\
6+
t:none,\
7+
log,\
8+
msg:'%{MATCHED_VAR_NAME} was caught in phase:1',\
9+
ver:'MRTS/0.1'"
10+
11+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100109, phase:2, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
12+
13+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_test" \
14+
"id:100110,\
15+
phase:2,\
16+
t:none,\
17+
log,\
18+
msg:'%{MATCHED_VAR_NAME} was caught in phase:2',\
19+
ver:'MRTS/0.1'"
20+
21+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100111, phase:3, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
22+
23+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_test" \
24+
"id:100112,\
25+
phase:3,\
26+
t:none,\
27+
log,\
28+
msg:'%{MATCHED_VAR_NAME} was caught in phase:3',\
29+
ver:'MRTS/0.1'"
30+
31+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100113, phase:4, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
32+
33+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_test" \
34+
"id:100114,\
35+
phase:4,\
36+
t:none,\
37+
log,\
38+
msg:'%{MATCHED_VAR_NAME} was caught in phase:4',\
39+
ver:'MRTS/0.1'"
40+
41+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100115, phase:5, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
42+
43+
SecRule MATCHED_VARS_NAMES "@contains ARGS:matched_vars_names_test" \
44+
"id:100116,\
45+
phase:5,\
46+
t:none,\
47+
log,\
48+
msg:'%{MATCHED_VAR_NAME} was caught in phase:5',\
49+
ver:'MRTS/0.1'"
50+
51+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100117, phase:1, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
52+
53+
SecRule MATCHED_VARS_NAMES "@contains ARGS_NAMES:matched_vars_names_test" \
54+
"id:100118,\
55+
phase:1,\
56+
t:none,\
57+
log,\
58+
msg:'%{MATCHED_VAR_NAME} was caught in phase:1',\
59+
ver:'MRTS/0.1'"
60+
61+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100119, phase:2, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
62+
63+
SecRule MATCHED_VARS_NAMES "@contains ARGS_NAMES:matched_vars_names_test" \
64+
"id:100120,\
65+
phase:2,\
66+
t:none,\
67+
log,\
68+
msg:'%{MATCHED_VAR_NAME} was caught in phase:2',\
69+
ver:'MRTS/0.1'"
70+
71+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100121, phase:3, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
72+
73+
SecRule MATCHED_VARS_NAMES "@contains ARGS_NAMES:matched_vars_names_test" \
74+
"id:100122,\
75+
phase:3,\
76+
t:none,\
77+
log,\
78+
msg:'%{MATCHED_VAR_NAME} was caught in phase:3',\
79+
ver:'MRTS/0.1'"
80+
81+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100123, phase:4, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
82+
83+
SecRule MATCHED_VARS_NAMES "@contains ARGS_NAMES:matched_vars_names_test" \
84+
"id:100124,\
85+
phase:4,\
86+
t:none,\
87+
log,\
88+
msg:'%{MATCHED_VAR_NAME} was caught in phase:4',\
89+
ver:'MRTS/0.1'"
90+
91+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100125, phase:5, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
92+
93+
SecRule MATCHED_VARS_NAMES "@contains ARGS_NAMES:matched_vars_names_test" \
94+
"id:100126,\
95+
phase:5,\
96+
t:none,\
97+
log,\
98+
msg:'%{MATCHED_VAR_NAME} was caught in phase:5',\
99+
ver:'MRTS/0.1'"
100+
101+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100127, phase:1, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
102+
103+
SecRule MATCHED_VARS_NAMES "@contains REQUEST_COOKIES:matched_vars_names_test" \
104+
"id:100128,\
105+
phase:1,\
106+
t:none,\
107+
log,\
108+
msg:'%{MATCHED_VAR_NAME} was caught in phase:1',\
109+
ver:'MRTS/0.1'"
110+
111+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100129, phase:2, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
112+
113+
SecRule MATCHED_VARS_NAMES "@contains REQUEST_COOKIES:matched_vars_names_test" \
114+
"id:100130,\
115+
phase:2,\
116+
t:none,\
117+
log,\
118+
msg:'%{MATCHED_VAR_NAME} was caught in phase:2',\
119+
ver:'MRTS/0.1'"
120+
121+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100131, phase:3, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
122+
123+
SecRule MATCHED_VARS_NAMES "@contains REQUEST_COOKIES:matched_vars_names_test" \
124+
"id:100132,\
125+
phase:3,\
126+
t:none,\
127+
log,\
128+
msg:'%{MATCHED_VAR_NAME} was caught in phase:3',\
129+
ver:'MRTS/0.1'"
130+
131+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100133, phase:4, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
132+
133+
SecRule MATCHED_VARS_NAMES "@contains REQUEST_COOKIES:matched_vars_names_test" \
134+
"id:100134,\
135+
phase:4,\
136+
t:none,\
137+
log,\
138+
msg:'%{MATCHED_VAR_NAME} was caught in phase:4',\
139+
ver:'MRTS/0.1'"
140+
141+
SecRule ARGS|ARGS_NAMES|REQUEST_COOKIES "@rx matched_vars_names_test" "id:100135, phase:5, pass, log, msg:'matched vars is: %{MATCHED_VARS_NAMES}'"
142+
143+
SecRule MATCHED_VARS_NAMES "@contains REQUEST_COOKIES:matched_vars_names_test" \
144+
"id:100136,\
145+
phase:5,\
146+
t:none,\
147+
log,\
148+
msg:'%{MATCHED_VAR_NAME} was caught in phase:5',\
149+
ver:'MRTS/0.1'"
150+

generated/rules/MRTS_110_XML.conf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
SecRule XML:/* "@beginsWith foo" \
2-
"id:100092,\
2+
"id:100137,\
33
phase:2,\
44
deny,\
55
t:none,\
@@ -8,7 +8,7 @@ SecRule XML:/* "@beginsWith foo" \
88
ver:'MRTS/0.1'"
99

1010
SecRule XML:/* "@beginsWith foo" \
11-
"id:100093,\
11+
"id:100138,\
1212
phase:3,\
1313
deny,\
1414
t:none,\
@@ -17,7 +17,7 @@ SecRule XML:/* "@beginsWith foo" \
1717
ver:'MRTS/0.1'"
1818

1919
SecRule XML:/* "@beginsWith foo" \
20-
"id:100094,\
20+
"id:100139,\
2121
phase:4,\
2222
deny,\
2323
t:none,\
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
meta:
3+
author: MRTS generate-rules.py
4+
enabled: true
5+
name: MRTS_026_MATCHED_VARS_NAMES-NEG.yaml
6+
description: Desc
7+
tests:
8+
- test_title: 100094-1
9+
ruleid: 100094
10+
test_id: 1
11+
desc: 'Test case for rule 100094, #1'
12+
stages:
13+
- description: Send request
14+
input:
15+
dest_addr: 127.0.0.1
16+
port: 80
17+
protocol: http
18+
method: GET
19+
headers:
20+
User-Agent: OWASP MRTS test agent
21+
Host: localhost
22+
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
23+
uri: /?matched_vars_names_test=matched_vars_names_test&matched_vars_names_negative_test=matched_vars_names_negative_test
24+
version: HTTP/1.1
25+
output:
26+
log:
27+
no_expect_ids:
28+
- 100094
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
meta:
3+
author: MRTS generate-rules.py
4+
enabled: true
5+
name: MRTS_026_MATCHED_VARS_NAMES-NEG.yaml
6+
description: Desc
7+
tests:
8+
- test_title: 100097-1
9+
ruleid: 100097
10+
test_id: 1
11+
desc: 'Test case for rule 100097, #1'
12+
stages:
13+
- description: Send request
14+
input:
15+
dest_addr: 127.0.0.1
16+
port: 80
17+
protocol: http
18+
method: POST
19+
headers:
20+
User-Agent: OWASP MRTS test agent
21+
Host: localhost
22+
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
23+
uri: /post
24+
version: HTTP/1.1
25+
data: matched_vars_names_test=matched_vars_names_test&matched_vars_names_negative_test=matched_vars_names_negative_test
26+
output:
27+
log:
28+
no_expect_ids:
29+
- 100097

0 commit comments

Comments
 (0)