diff --git a/.editorconfig b/.editorconfig index 037ae5e38..42cf352b8 100644 --- a/.editorconfig +++ b/.editorconfig @@ -21,4 +21,3 @@ indent_size = 4 [tests/regression/tests/**/*.yaml] indent_style = space indent_size = 2 - diff --git a/.github/ISSUE_TEMPLATE/04_feature.md b/.github/ISSUE_TEMPLATE/04_feature.md index 04939383a..00aa211d9 100644 --- a/.github/ISSUE_TEMPLATE/04_feature.md +++ b/.github/ISSUE_TEMPLATE/04_feature.md @@ -5,7 +5,7 @@ title: '' labels: ':+1: Feature Request' assignees: '' --- -" # -SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|REQUEST_FILENAME|XML:/* "@pm document.cookie document.domain document.write .parentnode .innerhtml window.location -moz-binding '-->`-->" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941180] @@ -121,3 +121,37 @@ tests: output: log: no_expect_ids: [941180] + - test_id: 8 + desc: Node-validator deny list keywords + stages: + - input: + dest_addr: 127.0.0.1 + method: POST + port: 80 + uri: "/post/bar" + headers: + User-Agent: "OWASP CRS test agent" + Host: localhost + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + data: 'foo=document.querySelector("p").textContent="XSS"' + version: "HTTP/1.1" + output: + log: + expect_ids: [941180] + - test_id: 9 + desc: Node-validator deny list keywords + stages: + - input: + dest_addr: 127.0.0.1 + method: POST + port: 80 + uri: "/post/bar" + headers: + User-Agent: "OWASP CRS test agent" + Host: localhost + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + data: 'foo=document.body.appendChild(document.createElement("h1")).textContent = "XSS"' + version: "HTTP/1.1" + output: + log: + expect_ids: [941180] diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941220.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941220.yaml index 1b54be604..939def1a5 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941220.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941220.yaml @@ -16,7 +16,7 @@ tests: uri: "/post" port: 80 data: "var=v%26newline;b%26tab;s%26newline;c%26newline;r%26tab;i%26tab;p%26newline;t%26colon;:&var2=whatever" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941220] @@ -33,7 +33,7 @@ tests: uri: "/post" port: 80 data: "payload=XSS" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941220] diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941230.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941230.yaml index b6725448e..6e1c70c95 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941230.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941230.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "var=&var2=whatever" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941230] @@ -33,7 +33,7 @@ tests: port: 80 uri: "/post" data: "payload=" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941230] diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941240.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941240.yaml index 6bd84e2c9..ac0827af0 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941240.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941240.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?var=%3c%3fimport%20implementation%20%3d" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941240] @@ -31,7 +31,7 @@ tests: method: GET port: 80 uri: "/get?test=" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941250] diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941260.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941260.yaml index 1cc0cb1dd..1ce5f812f 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941260.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941260.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "var=&var2=whatever" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941260] @@ -33,7 +33,7 @@ tests: port: 80 uri: "/post" data: "payload= +ADw-script+AD4-alert(1)+ADw-/script+AD4-" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941260] diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941270.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941270.yaml index dec041596..24746da90 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941270.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941270.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?var=%3clink%20%2f%20asdf%20href%20%20%2f%3d%20" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941270] @@ -31,7 +31,7 @@ tests: method: POST port: 80 uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: 'payload=' output: log: diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941280.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941280.yaml index 8d2fa94a2..2f8673342 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941280.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941280.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?var=%3cBASE%20dsfds%20HREF%20%2f%20%3d" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941280] @@ -33,7 +33,7 @@ tests: method: POST port: 80 uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: 'payload=xss&var=whatever" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941290] @@ -33,7 +33,7 @@ tests: port: 80 uri: "/post" data: "payload=" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941290] diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941300.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941300.yaml index 14f42f240..e7015e068 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941300.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941300.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?%3cOBJECT%20data%20%3d=sdffdsa" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941300] @@ -31,7 +31,7 @@ tests: method: POST port: 80 uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "payload=" output: log: diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941320.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941320.yaml index 65c280f54..0660b93c1 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941320.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941320.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "var=\">" output: log: diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941340.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941340.yaml index b75576c73..174778fb8 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941340.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941340.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "var=' infoo.bar=&var2=whatever" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941340] @@ -33,7 +33,7 @@ tests: port: 80 uri: "/post" data: "payload=XSS" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [941340] diff --git a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941390.yaml b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941390.yaml index 0de1e929e..4985495b4 100644 --- a/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941390.yaml +++ b/tests/regression/tests/REQUEST-941-APPLICATION-ATTACK-XSS/941390.yaml @@ -1,6 +1,6 @@ --- meta: - author: "Franziska Buehler, Xhoenix, azurit" + author: "Franziska Buehler, Xhoenix, azurit, Esad Cetiner" rule_id: 941390 tests: - test_id: 1 @@ -147,3 +147,43 @@ tests: output: log: expect_ids: [941390] + - test_id: 10 + desc: | + Known False positive: + Matching `import (` in `if you’re willing to import (and perhaps wait around` + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.>" + User-Agent: "OWASP CRS test agent" + method: POST + port: 80 + uri: "/post" + data: |- + fp=If you’re looking for a personal recommendation, if you’re willing to import (and perhaps wait around, as they often sell out line has been consistently excellent so far. + version: HTTP/1.1 + output: + log: + expect_ids: [941390] + - test_id: 11 + desc: | + True Positive: + Detect import method with curly brackets + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.>" + User-Agent: "OWASP CRS test agent" + method: POST + port: 80 + uri: "/post" + data: |- + code=import { sayHi, sayBye } from "./greeting.js"; + version: HTTP/1.1 + output: + log: + expect_ids: [941390] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942100.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942100.yaml index e7c61638c..e9d130d16 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942100.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942100.yaml @@ -17,7 +17,7 @@ tests: port: 80 uri: "/post" data: "var=1234 OR 1=1" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -34,7 +34,7 @@ tests: port: 80 uri: "/post" data: "var=-1839' or '1'='1" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -51,7 +51,7 @@ tests: port: 80 uri: "/post" data: "var=-1839\" or \"1\"=\"2" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -68,7 +68,7 @@ tests: port: 80 uri: "/post" data: "var=2010-01-01'+sleep(20.to_i)+'" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -85,7 +85,7 @@ tests: port: 80 uri: "/post" data: "var=EmptyValue' and 526=527" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -102,7 +102,7 @@ tests: port: 80 uri: "/post" data: "var=foo') UNION ALL select NULL --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -119,7 +119,7 @@ tests: port: 80 uri: "/post" data: "var=foo')waitfor%20delay'5%3a0%3a20'--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -136,7 +136,7 @@ tests: port: 80 uri: "/post" data: "var=JKGHUKGDI8TDHLFJH72FZLFJSKFH' and sleep(12) --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -153,7 +153,7 @@ tests: port: 80 uri: "/post" data: "var=/path/to/file/unitests.txt') UNION ALL select NULL --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -170,7 +170,7 @@ tests: port: 80 uri: "/post" data: "1'||(select extractvalue(xmltype('%toyop;" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -187,7 +187,7 @@ tests: port: 80 uri: "/post" data: "var=sleep(20)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -204,7 +204,7 @@ tests: port: 80 uri: "/post" data: "var=unittests@coreruleset.org\" sleep(10.to_i) \"" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -221,7 +221,7 @@ tests: port: 80 uri: "/post" data: "var=\" | type %SystemDrive%\\\\config.ini | \"" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] @@ -238,7 +238,7 @@ tests: port: 80 uri: "/post" data: "var=\"unittests@coreruleset.org\"')) and (select*from(select(sleep(5)))x) --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942100] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942101.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942101.yaml index 5af7502c1..c41682194 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942101.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942101.yaml @@ -16,7 +16,7 @@ tests: method: POST port: 80 uri: "/post/1234%20OR%201=1" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942101] @@ -32,7 +32,7 @@ tests: method: POST port: 80 uri: "/post/2010-01-01'+sleep(20.to_i)+'" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942101] @@ -48,7 +48,7 @@ tests: method: POST port: 80 uri: "/post/EmptyValue'%20and%20526=527" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942101] @@ -64,7 +64,7 @@ tests: method: POST port: 80 uri: "/post/foo')waitfor%20delay'5%3a0%3a20'--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942101] @@ -80,7 +80,7 @@ tests: method: POST port: 80 uri: "/post/sleep(20)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942101] @@ -96,7 +96,7 @@ tests: method: POST port: 80 uri: "/post/unittests@coreruleset.org\"%20sleep(10.to_i)%20\"" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942101] @@ -112,7 +112,7 @@ tests: method: POST port: 80 uri: "/post/foo/24'union+all+select+1,2,3+from+aa" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942101] @@ -128,7 +128,7 @@ tests: method: POST port: 80 uri: "/post/foo/24'union+all+select+1,2,3+from+aa/bar" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942101] @@ -144,7 +144,7 @@ tests: method: POST port: 80 uri: "/post/%2A/%2A/2+union+all/bar" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942101] @@ -160,7 +160,7 @@ tests: method: POST port: 80 uri: "/post/foo/9'union+all/bar" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942101] @@ -176,7 +176,7 @@ tests: method: POST port: 80 uri: "/post/foo/24+union+all+select+1,2,3+from+aa/bar" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942101] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942120.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942120.yaml index 39094ed08..40cb54747 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942120.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942120.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?var=blahblah&var2=LIKE%20NULL" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -32,7 +32,7 @@ tests: port: 80 uri: "/post" data: "pay=RegExp" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -49,7 +49,7 @@ tests: port: 80 uri: "/post" data: ">>" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -66,7 +66,7 @@ tests: port: 80 uri: "/post" data: "pay=%26%26" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -83,7 +83,7 @@ tests: port: 80 uri: "/post" data: "<<" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -100,7 +100,7 @@ tests: port: 80 uri: "/post" data: "%21%3D" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -117,7 +117,7 @@ tests: port: 80 uri: "/post" data: "||" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -134,7 +134,7 @@ tests: port: 80 uri: "/post" data: "XOR" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -151,7 +151,7 @@ tests: port: 80 uri: "/post" data: "pay=%3C%3D" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -168,7 +168,7 @@ tests: port: 80 uri: "/post" data: "IS NULL" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -185,7 +185,7 @@ tests: port: 80 uri: "/post" data: "in (0,1)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -202,7 +202,7 @@ tests: port: 80 uri: "/post" data: "in (2147483647,-1)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -219,7 +219,7 @@ tests: port: 80 uri: "/post" data: "pay=%3C%3D%3E" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -236,7 +236,7 @@ tests: port: 80 uri: "/post" data: "regexp" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -253,7 +253,7 @@ tests: port: 80 uri: "/post" data: "RLIKE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -270,7 +270,7 @@ tests: port: 80 uri: "/post" data: "<>" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -287,7 +287,7 @@ tests: port: 80 uri: "/post" data: "+in+%28++select+anfrage_id+from+erkenntnisse+where+id+is++not++null++%29%0A" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -304,7 +304,7 @@ tests: port: 80 uri: "/post" data: "+IN+%28815914%2C+815913%29%0A" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -321,7 +321,7 @@ tests: port: 80 uri: "/post" data: "+IN+%28815919%2C+815920%2C+815921%2C+815922%2C+815923%2C+815924%2C+815925%2C+815926%2C+815927%2C+815928%2C+815929%2C+815930%2C+815932%2C+815933%2C+815934%2C+815935%2C+815936%2C+815937%2C+815917%2C+815918%29%0A" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -338,7 +338,7 @@ tests: port: 80 uri: "/post" data: "pay= in ( Aa,- Ab-, and Ac)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -355,7 +355,7 @@ tests: port: 80 uri: "/post" data: "%3E%3D" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -372,7 +372,7 @@ tests: port: 80 uri: "/post" data: "select%20*%20from%20user%20where%20password_last_changed%20not%20between%20'2021-04-11'%20and%20'2021-04-11'" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -389,7 +389,7 @@ tests: port: 80 uri: "/post" data: "email=z'or%20email%20notnull--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -406,7 +406,7 @@ tests: port: 80 uri: "/post" data: "email=x'%20or%20username%20like%20totpSecret%20escape%20'x';" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -423,7 +423,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40juice-sh.op'%20and%20email%20ilike%20email--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -440,7 +440,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40juice-sh.op'%20and%20email%20%3d%20all%20(select%20email)--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -457,7 +457,7 @@ tests: port: 80 uri: "/post" data: "var=user'collate%20nocase--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -474,7 +474,7 @@ tests: port: 80 uri: "/post" data: "var=user'collate%20nocase--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -491,7 +491,7 @@ tests: port: 80 uri: "/post" data: "var=user'collate%60nocase%60--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -508,7 +508,7 @@ tests: port: 80 uri: "/post" data: "var=user'collate%20foo--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942120] @@ -526,7 +526,7 @@ tests: uri: "/post" # collate`utf8mb4_general_ci` data: "var=user'collate%60utf8mb4_general_ci%60--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -544,7 +544,7 @@ tests: uri: "/post" # collate"\utf8mb4_general_ci" data: "var=user'collate%22%5Cutf8mb4_general_ci%22--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -562,7 +562,7 @@ tests: uri: "/post" # collate U&"\0441\043B\043E\043D" data: "var=user'collate U%26%22%241%23B%23E%23D%22--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -579,7 +579,7 @@ tests: port: 80 uri: "/post" data: "email=%27%20notnull%20--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -596,7 +596,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40juice-sh.op'and%20unlikely%20(id)--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942120] @@ -613,7 +613,7 @@ tests: port: 80 uri: "/post" data: text=It is highly unlikely this is going to be a false positive - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942120] @@ -665,7 +665,75 @@ tests: Accept: "*/*" method: POST uri: "/post/catalogue/rest/products/2499999||this.product/reviews" - version: HTTP/1.0 + version: HTTP/1.1 + output: + log: + expect_ids: [942120] + - test_id: 40 + desc: "SQL Injection Attack: SQL Operator == Detected" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "%3D%3D" + version: HTTP/1.1 + output: + log: + expect_ids: [942120] + - test_id: 41 + desc: "SQL Injection Attack: SQL Operator ! all Detected" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "email=admin%40juice-sh.op'%20and%20email%20%21%20all%20(select%20email)--" + version: HTTP/1.1 + output: + log: + expect_ids: [942120] + - test_id: 42 + desc: "SQL Injection Attack: SQL Operator >= Detected" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: ">%3D" + version: HTTP/1.1 + output: + log: + expect_ids: [942120] + - test_id: 43 + desc: "SQL Injection Attack: SQL Operator -> Detected" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "->" + version: HTTP/1.1 output: log: expect_ids: [942120] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942130.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942130.yaml index c4d4e9983..14b725618 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942130.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942130.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "var=%221%22%20sSOUNDS%20LIKE%20%22SOUNDS%20LIKE%201&other_var=test" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942130] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942140.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942140.yaml index 421fedd10..9e573ecd0 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942140.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942140.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?sql_table=pg_catalog" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -32,7 +32,7 @@ tests: port: 80 uri: "/post" data: "INFORMATION_SCHEMA" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -49,7 +49,7 @@ tests: port: 80 uri: "/post" data: "database(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -66,7 +66,7 @@ tests: port: 80 uri: "/post" data: "db_name(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -83,7 +83,7 @@ tests: port: 80 uri: "/post" data: "DaTaBasE(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -100,7 +100,7 @@ tests: port: 80 uri: "/post" data: "InFoRmaTioN_ScHemA" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -117,7 +117,7 @@ tests: port: 80 uri: "/post" data: "DB_NAME(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -134,7 +134,7 @@ tests: port: 80 uri: "/post" data: "tempdb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -151,7 +151,7 @@ tests: port: 80 uri: "/post" data: "msdb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -168,7 +168,7 @@ tests: port: 80 uri: "/post" data: "mysql.db" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -185,7 +185,7 @@ tests: port: 80 uri: "/post" data: "MSysAccessObjects" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -202,7 +202,7 @@ tests: port: 80 uri: "/post" data: "Northwind" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -219,7 +219,7 @@ tests: port: 80 uri: "/post" data: "northwind" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -236,7 +236,7 @@ tests: port: 80 uri: "/post" data: "SCHEMA_NAME" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -253,7 +253,7 @@ tests: port: 80 uri: "/post" data: "DATABASE(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -270,7 +270,7 @@ tests: port: 80 uri: "/post" data: "schema_name" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] @@ -287,7 +287,7 @@ tests: port: 80 uri: "/post" data: "information_schema" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942140] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942150.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942150.yaml index 9f3347554..3593083b9 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942150.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942150.yaml @@ -17,7 +17,7 @@ tests: port: 80 uri: "/post" data: "var=SKLJDRTZWS89E450W49NQB0W45BN\"=sleep(12)=\"" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -34,7 +34,7 @@ tests: port: 80 uri: "/post" data: "var=1' and sleep(9) #" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -51,7 +51,7 @@ tests: port: 80 uri: "/post" data: "var=1(select*from(select(sleep(5)))d)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -68,7 +68,7 @@ tests: port: 80 uri: "/post" data: "var=unittests@coreruleset.org' (function(){if(typeof foo===\"undefined\"){var a=new Date();do{var b=new Date();}while(b-a<20000);foo=1;}}()) '" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -84,7 +84,7 @@ tests: port: 80 uri: "/post" data: "var=test')and (select*from(select(sleep(10)))d)--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -101,7 +101,7 @@ tests: port: 80 uri: "/post" data: "var=config.ini' and sleep(91) #" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -118,7 +118,7 @@ tests: port: 80 uri: "/post" data: "var=None')and (select*from(select(sleep(10)))a)--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -135,7 +135,7 @@ tests: port: 80 uri: "/post" data: "var=eval(compile('for x in range(1):\\n import time\\n time.sleep(12)','a','single'))" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -152,7 +152,7 @@ tests: port: 80 uri: "/post" data: "var=file:/init.ini'.sleep(12).'" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -169,7 +169,7 @@ tests: port: 80 uri: "/post" data: "var=1)and (select*from(select(sleep(12)))a)-- : 1)and (select*from(select(sleep(12)))a)--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -186,7 +186,7 @@ tests: port: 80 uri: "/post" data: "var=/path/to/file/config.ini')and (select*from(select(sleep(12)))a)--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -203,7 +203,7 @@ tests: port: 80 uri: "/post" data: "var=${@print(chr(122).chr(97).chr(112).chr(95).chr(116).chr(111).chr(107).chr(101).chr(110))}" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -220,7 +220,7 @@ tests: port: 80 uri: "/post" data: "var=test{${sleep(12)}}" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -237,7 +237,7 @@ tests: port: 80 uri: "/post" data: "var=test\"+eval(compile('for x in range(1):\\n import time\\n time.sleep(12)','a','single'))+\"" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -254,7 +254,7 @@ tests: port: 80 uri: "/post" data: "var=test\"+(function(){if(typeof gs78r==='undefined'){var a=new Date();do{var b=new Date();}while(b-a<20000);gs78r=1;}}())+\"" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -271,7 +271,7 @@ tests: port: 80 uri: "/post" data: "var=\\foobar.txt\" or sleep(4) #" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -288,7 +288,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40juice-sh.op%5C'%20or%20json%20(id);" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -305,7 +305,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40juice-sh.op%5C'%20or%20json_valid%20(id);" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] @@ -322,7 +322,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40juice-sh.op%5C'%20or%20glob%20(id,id);" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942150] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942151.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942151.yaml index cd940dd78..4a20df3e1 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942151.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942151.yaml @@ -1,6 +1,6 @@ --- meta: - author: "Christian Folini, azurit" + author: "Christian Folini, azurit, Franziska BΓΌhler" description: Various SQL injection tests rule_id: 942151 tests: @@ -17,7 +17,7 @@ tests: port: 80 uri: "/post" data: "var=foo'||(select extractvalue(xmltype('%tocob;" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] @@ -34,7 +34,7 @@ tests: port: 80 uri: "/post" data: "var=/config.txt' (select load_file('\\\\\\\\unittests.coreruleset.org\\\\zow')) '" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] @@ -51,7 +51,7 @@ tests: port: 80 uri: "/post" data: "var=(select load_file('\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\unitests.corerule'||'set.org\\\\\\\\\\\\\\\\hvs'))" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] @@ -68,12 +68,12 @@ tests: port: 80 uri: "/post" data: "var=, FIND_IN_SET('22', Category )" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] - test_id: 5 - desc: "SQL injection using 'likelihood' function" + desc: "SQL injection using 'substring' function" stages: - input: dest_addr: 127.0.0.1 @@ -84,8 +84,8 @@ tests: method: POST port: 80 uri: "/post" - data: "email=1'%20%2B%201%20is%20likelihood(0.0%2C0.0)%20is%201--" - version: HTTP/1.0 + data: "email=%27%20AND%20SUBSTRING%28%28SELECT%20Password%20FROM%20Users%20WHERE%20Username%20%3D%20%27Administrator%27%29%2C%201%2C%201%29%20%3E%20%27m" + version: HTTP/1.1 output: log: expect_ids: [942151] @@ -102,7 +102,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40example.com'%20or%20sqlite_compileoption_used%20(id)--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] @@ -119,7 +119,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40example.com'and%20not%20sqlite_compileoption_get%20(id)--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] @@ -135,7 +135,7 @@ tests: method: GET port: 80 uri: "/get/index.php?id=starts_with(password,'a')::int" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] @@ -151,7 +151,7 @@ tests: method: GET port: 80 uri: "/get/index.php?id=jsonb_pretty(...(1,password)::jsonb)::int" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] @@ -167,7 +167,7 @@ tests: method: GET port: 80 uri: "/get/index.php?id=...(json_build_object(1,password)::jsonb)::int" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] @@ -183,7 +183,194 @@ tests: method: GET port: 80 uri: "/get/index.php?id=unistr(password)::int" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942151] + - test_id: 12 + desc: "False positive with elt (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=Weitere ΓΌberlieferte Bezeichnungen sind Harsle (1319), Crucesignati in Herslo (1475) und Haßelt (1599)." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 13 + desc: "False positive with left (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=Left (WA, RR), following wood edge south (β€˜Restrictive Byway’/RB) for Β½ mile to Pangfield Farm (564719)." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 14 + desc: "False positive with quarter (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=One quarter (24%) of people have had an affair and cheated on a partner at some point in their lives, according to results released today." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 15 + desc: "False positive with space (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=You can choose between front up to maximise space (ideal for art and drawing), left up (for right handed users) and right up (for left handed users)." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 16 + desc: "False positive with likelihood (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: 'payload=A maximum of the likelihood function occurs at the same parameter-value as a maximum of the logarithm of the likelihood (the "log likelihood"), because the logarithm is an increasing function.' + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 17 + desc: "False positive with lower (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=Below the rank of species he sometimes recognized taxa of a lower (unnamed) rank ; these have since acquired standardised names such as variety in botany and subspecies in zoology." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 18 + desc: "False positive with convert (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=Grasshopper v1.0 made its eighth, and final, test flight on October 7, 2013, flying to an altitude of convert (0.46 miles) before making its eighth successful VTVL landing." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 19 + desc: "False positive with position (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=In older texts printed down to c. 1630, v was used in initial position (even when it represented a vowel, e.g. in vt, later printed ut) and u was used elsewhere, e.g. in nouus, later printed novus." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 20 + desc: "False positive with degrees (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=The measures of the interior angles of the triangle always add up to 180 degrees (same color to point out they are equal)." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 21 + desc: "False positive with unlikely (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=There are numerous causes of asystole that may be reversible if determined quickly enough, however, survival is very unlikely (~2% if not in a hospital)." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] + - test_id: 22 + desc: "False positive with left, (" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "payload=The script is written from right to left, (Lal 1966) and sometimes follows a boustrophedonic style." + version: HTTP/1.1 + output: + log: + no_expect_ids: [942151] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942152.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942152.yaml index 80057834e..097b310ce 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942152.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942152.yaml @@ -16,7 +16,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942152] @@ -32,7 +32,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942152] @@ -48,7 +48,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942152] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942160.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942160.yaml index a409e5662..9fc85c1c8 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942160.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942160.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?sql_table=sleep%28534543%29" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] @@ -32,7 +32,7 @@ tests: port: 80 uri: "/post" data: "sleEP(3)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] @@ -49,7 +49,7 @@ tests: port: 80 uri: "/post" data: "sleep(5000)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] @@ -66,7 +66,7 @@ tests: port: 80 uri: "/post" data: "BENChmARk(2999/**/999,Md5(NoW()" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] @@ -83,7 +83,7 @@ tests: port: 80 uri: "/post" data: "BEncHMARk(2999999,Md5(NoW('')" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] @@ -100,7 +100,7 @@ tests: port: 80 uri: "/post" data: "BENCHMARK(5000000,MD5(0x48416166)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] @@ -117,7 +117,7 @@ tests: port: 80 uri: "/post" data: "benchmark(3000000,M%445(4)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] @@ -134,7 +134,7 @@ tests: port: 80 uri: "/post" data: "pay=BENCHMARK(1000000, md5\" AND 1883=1883-- GSCC('')" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] @@ -151,7 +151,7 @@ tests: port: 80 uri: "/post" data: "pay=BeNChMaRK(1000000, md5 AND 9796=4706('')" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] @@ -167,7 +167,7 @@ tests: method: GET port: 80 uri: "/get/if(now()=sysdate(),sleep(12),0)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942160] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942170.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942170.yaml index 44ce44bdd..07c9bd4e4 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942170.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942170.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?var=SELECT%20BENCHMARK%281000000%2C1%2B1%29%3B" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942170] @@ -31,7 +31,7 @@ tests: method: GET port: 80 uri: "/get?var=%3B%20sleep%280%29" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942170] @@ -47,7 +47,7 @@ tests: method: GET port: 80 uri: "/get?var=I%20sleep%20well%21" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942170] @@ -63,7 +63,7 @@ tests: method: GET port: 80 uri: "/get?test=select+if(x" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942170] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942180.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942180.yaml index 8b96a08c5..2b6f491b7 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942180.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942180.yaml @@ -16,7 +16,7 @@ tests: port: 80 # something simple like 3' ' 1 uri: "/get?var=3%27%20%27%201" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942180] @@ -32,7 +32,7 @@ tests: method: POST port: 80 uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "javascript:\"/*'/*`/*-->foo##'." - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942370] @@ -192,7 +192,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942370] @@ -208,7 +208,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942370] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942380.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942380.yaml index c3445da07..815d768b9 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942380.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942380.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "from `db_miwf`.`sys_refindex` limit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -33,7 +33,7 @@ tests: port: 80 uri: "/post" data: "from(select count(*),concat((select (select (select concat(0x53,0x65,0x61,0x72,0x63,0x68,0x43,0x6F,0x6C,0x6C,0x65,0x63,0x74,0x6F,0x72) from `information_schema`.tables limit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -50,7 +50,7 @@ tests: port: 80 uri: "/post" data: "from `information_schema`.tables limit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -67,7 +67,7 @@ tests: port: 80 uri: "/post" data: "ORder by" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -84,7 +84,7 @@ tests: port: 80 uri: "/post" data: "ordeR by" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -101,7 +101,7 @@ tests: port: 80 uri: "/post" data: "SELECT (CASE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -118,7 +118,7 @@ tests: port: 80 uri: "/post" data: "pay=FROM+termine+GROUP+BY+tag1%26sql_delimit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -135,7 +135,7 @@ tests: port: 80 uri: "/post" data: "SELECT 6229 FROM(SELECT COUNT(*),CONCAT(0x717a786a71,(SELECT (CASE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -152,7 +152,7 @@ tests: port: 80 uri: "/post" data: "SELECT CHAR(113)+CHAR(122)+CHAR(120)+CHAR(106)+CHAR(113)+(SELECT (CASE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -169,7 +169,7 @@ tests: port: 80 uri: "/post" data: "SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(122)||CHR(120)||CHR(106)||CHR(113)||(SELECT (CASE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -186,7 +186,7 @@ tests: port: 80 uri: "/post" data: "SELECT CONCAT(0x717a786a71,(SELECT (CASE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -203,7 +203,7 @@ tests: port: 80 uri: "/post" data: "SELECT (CHR(113)||CHR(122)||CHR(120)||CHR(106)||CHR(113))||(SELECT (CASE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -220,7 +220,7 @@ tests: port: 80 uri: "/post" data: "SELECT CHR(113)||CHR(122)||CHR(120)||CHR(106)||CHR(113)||(SELECT (CASE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -237,7 +237,7 @@ tests: port: 80 uri: "/post" data: "SELECT 'qzxjq'||(SELECT (CASE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -254,7 +254,7 @@ tests: port: 80 uri: "/post" data: "execute php" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -271,7 +271,7 @@ tests: port: 80 uri: "/post" data: "from(select count(*),concat((select (select (SELECT concat(user_name,0x7c,password) FROM ecs_admin_user desc limit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -288,7 +288,7 @@ tests: port: 80 uri: "/post" data: "Execute(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -305,7 +305,7 @@ tests: port: 80 uri: "/post" data: "from+information_schema.tables+where+BINARY+LEFT%28table_name%2C+1%29+%3D+%27nnn%27+LIMIT" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -322,7 +322,7 @@ tests: port: 80 uri: "/post" data: "from+information_schema.tables+where+table_schema%3Ddatabase%28%29+and+table_name+REGEXP+0x6d656d6265727324+limit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -339,7 +339,7 @@ tests: port: 80 uri: "/post" data: "fromtype%3DvBForum%3ASocialGroupMessage%26do%3Dprocess%26contenttypeid%3D5%26categoryid%5B%5D%3D-99%29+union+select+salt+from+user+where+userid%3D1+and+row%281%2C1%29%3E%28select+count%28%2A%29%2Cconcat%28+%28select+user.salt%29+%2C0x3a%2Cfloor%28rand%280%29%2A2%29%29+x+from+%28select+1+union+select+2+union+select+3%29a+group+by+x+limit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -356,7 +356,7 @@ tests: port: 80 uri: "/post" data: "from%2F%2A%2A%2F%28select%2F%2A%2A%2Fcount%28%2A%29%2Cconcat%28floor%28rand%280%29%2A2%29%2C0x3a%2C%28select%2F%2A%2A%2Fconcat%28user%2C0x3a%2Cpassword%29%2F%2A%2A%2Ffrom%2F%2A%2A%2Fpwn_base_admin%2F%2A%2A%2Flimit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -373,7 +373,7 @@ tests: port: 80 uri: "/post" data: "HAVING+1%3D" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -390,7 +390,7 @@ tests: port: 80 uri: "/post" data: "execute+elysi" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -407,7 +407,7 @@ tests: port: 80 uri: "/post" data: "FROM%28SELECT+COUNT%28%2A%29%2CCONCAT%280x716a766b71%2C%28SELECT+%28ELT%283419%3D3419%2C1%29%29%29%2C0x7171717071%2CFLOOR%28RAND%280%29%2A2%29%29x+FROM+INFORMATION_SCHEMA.PLUGINS+GROUP+BY+x%29a%29%26limit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -424,7 +424,7 @@ tests: port: 80 uri: "/post" data: "FROM%28SELECT+COUNT%28%2A%29%2CCONCAT%280x716a766b71%2C%28SELECT+%28ELT%289184%3D9184%2C1%29%29%29%2C0x7171717071%2CFLOOR%28RAND%280%29%2A2%29%29x+FROM+INFORMATION_SCHEMA.PLUGINS+GROUP+BY+x%29a%29+AND+%27%25%27%3D%27%26limit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -441,7 +441,7 @@ tests: port: 80 uri: "/post" data: "from%28select%28sleep%2820%29%29%29a%29%27%26data%5BJob%5D%5Blimit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -458,7 +458,7 @@ tests: port: 80 uri: "/post" data: "from%28select%28sleep%2820%29%29%29a%29%2B%27%26data%5BJob%5D%5Blimit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -475,7 +475,7 @@ tests: port: 80 uri: "/post" data: "from%28select%28sleep%2820%29%29%29a%29--+%26data%5BJob%5D%5Blimit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -492,7 +492,7 @@ tests: port: 80 uri: "/post" data: "from%28select%28sleep%2820%29%29%29a%29%26data%5BJob%5D%5Blimit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -509,7 +509,7 @@ tests: port: 80 uri: "/post" data: "FROM+ack_variable+WHERE+name%3D%22cron_last%22%3B%26sql_delimit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -526,7 +526,7 @@ tests: port: 80 uri: "/post" data: "execute node_" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -543,7 +543,7 @@ tests: port: 80 uri: "/post" data: "execute scald" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -560,7 +560,7 @@ tests: port: 80 uri: "/post" data: "execute system" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -577,7 +577,7 @@ tests: port: 80 uri: "/post" data: "execute user_" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -594,7 +594,7 @@ tests: port: 80 uri: "/post" data: "execute views" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -611,7 +611,7 @@ tests: port: 80 uri: "/post" data: "execute patha" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -628,7 +628,7 @@ tests: port: 80 uri: "/post" data: "execute workb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -645,7 +645,7 @@ tests: port: 80 uri: "/post" data: "execute panel" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -662,7 +662,7 @@ tests: port: 80 uri: "/post" data: "pay=from+information_schema.tables+where+1%3D2+limit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -679,7 +679,7 @@ tests: port: 80 uri: "/post" data: "pay=FROM%2B%2560oxattribute%2560%2BWHERE%2BCONVERT%2528%2560oxattribute%2560.%2560OXID%2560%2BUSING%2Butf8%2529%2B%253D%2B%2527n550a1cee455b9ce585343d75d112b77%2527%2BLIMIT" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -696,7 +696,7 @@ tests: port: 80 uri: "/post" data: "pay=FROM%28select+count%28%2A%29%2Cconcat%28%28select+%28select+concat%28session_id%29%29+FROM+jml_session+LIMIT" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -713,7 +713,7 @@ tests: port: 80 uri: "/post" data: "pay=SELECT+dDJq+WHERE+9896%3D9896%3BSELECT+%28CASE" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -730,7 +730,7 @@ tests: port: 80 uri: "/post" data: "pay=FROM+%60we_tblErrorLog%60+WHERE+%60we_tblErrorLog%60.%60ID%60+%3D+25251+LIMIT" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -747,7 +747,7 @@ tests: port: 80 uri: "/post" data: "pay=FROM+%60dates%60+order+by+%60uname%60%2C+%60date%60%2C+%60load%60%26dummy%3D%60uname%60%26dummy%3D%60datum%60%26dummy%3D%60laden%60%26sql_delimit" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] @@ -764,7 +764,7 @@ tests: port: 80 uri: "/post" data: "pay=IF%20EXISTS%20(SELECT%20*%20FROM%20users%20WHERE%20username%20%3D%20'root')%20BENCHMARK(1000000000%2CMD5(1))" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942380] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942390.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942390.yaml index 05ce6b989..d9e615643 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942390.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942390.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?var=sdfsd%27or%201%20%3e%201" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942390] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942400.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942400.yaml index 2de63c416..f7fce2945 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942400.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942400.yaml @@ -17,7 +17,7 @@ tests: uri: "/post" # variable name boundary attacks data: "and '5'orig_var_datavarname=whatever" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942400] @@ -35,7 +35,7 @@ tests: uri: "/post" # variable name boundary attacks data: "and 7 oranges" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942400] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942410.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942410.yaml index a3ee7e847..bd4d64ded 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942410.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942410.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "ABS(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -33,7 +33,7 @@ tests: port: 80 uri: "/post" data: "benchmark(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -50,7 +50,7 @@ tests: port: 80 uri: "/post" data: "BENChmARk(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -67,7 +67,7 @@ tests: port: 80 uri: "/post" data: "cast(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -84,7 +84,7 @@ tests: port: 80 uri: "/post" data: "CAST(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -101,7 +101,7 @@ tests: port: 80 uri: "/post" data: "char(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -118,7 +118,7 @@ tests: port: 80 uri: "/post" data: "chaR(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -135,7 +135,7 @@ tests: port: 80 uri: "/post" data: "chr(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -152,7 +152,7 @@ tests: port: 80 uri: "/post" data: "CHR(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -169,7 +169,7 @@ tests: port: 80 uri: "/post" data: "COALESCE(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -186,7 +186,7 @@ tests: port: 80 uri: "/post" data: "Compress (" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -203,7 +203,7 @@ tests: port: 80 uri: "/post" data: "concat (" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -220,7 +220,7 @@ tests: port: 80 uri: "/post" data: "cOnCaT(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -237,7 +237,7 @@ tests: port: 80 uri: "/post" data: "concat_ws(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -254,7 +254,7 @@ tests: port: 80 uri: "/post" data: "convert(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -271,7 +271,7 @@ tests: port: 80 uri: "/post" data: "cOnVeRt(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -288,7 +288,7 @@ tests: port: 80 uri: "/post" data: "COS(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -305,7 +305,7 @@ tests: port: 80 uri: "/post" data: "COUNT(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -322,7 +322,7 @@ tests: port: 80 uri: "/post" data: "CURRENT_USER(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -339,7 +339,7 @@ tests: port: 80 uri: "/post" data: "database (" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -356,7 +356,7 @@ tests: port: 80 uri: "/post" data: "date(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -373,7 +373,7 @@ tests: port: 80 uri: "/post" data: "pay=date%5D%3D%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -390,7 +390,7 @@ tests: port: 80 uri: "/post" data: "pay=day.+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -407,7 +407,7 @@ tests: port: 80 uri: "/post" data: "pay=day%26%27%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -424,7 +424,7 @@ tests: port: 80 uri: "/post" data: "pay=decode%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -441,7 +441,7 @@ tests: port: 80 uri: "/post" data: "pay=default%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -458,7 +458,7 @@ tests: port: 80 uri: "/post" data: "pay=ELT%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -475,7 +475,7 @@ tests: port: 80 uri: "/post" data: "pay=encode%3D%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -492,7 +492,7 @@ tests: port: 80 uri: "/post" data: "pay=ExtractValue%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -509,7 +509,7 @@ tests: port: 80 uri: "/post" data: "pay=EXTRACTVALUE%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -526,7 +526,7 @@ tests: port: 80 uri: "/post" data: "pay=floor%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -543,7 +543,7 @@ tests: port: 80 uri: "/post" data: "pay=FLOOR+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -560,7 +560,7 @@ tests: port: 80 uri: "/post" data: "pay=format%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -577,7 +577,7 @@ tests: port: 80 uri: "/post" data: "pay=GROUP_CONCAT%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -594,7 +594,7 @@ tests: port: 80 uri: "/post" data: "pay=hex%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -611,7 +611,7 @@ tests: port: 80 uri: "/post" data: "pay=hEx%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -628,7 +628,7 @@ tests: port: 80 uri: "/post" data: "pay=if+%21%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -645,7 +645,7 @@ tests: port: 80 uri: "/post" data: "pay=if+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -662,7 +662,7 @@ tests: port: 80 uri: "/post" data: "pay=if%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -679,7 +679,7 @@ tests: port: 80 uri: "/post" data: "pay=if%5C%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -696,7 +696,7 @@ tests: port: 80 uri: "/post" data: "pay=IFNULL%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -713,7 +713,7 @@ tests: port: 80 uri: "/post" data: "pay=in+%27%24%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -730,7 +730,7 @@ tests: port: 80 uri: "/post" data: "pay=IN+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -747,7 +747,7 @@ tests: port: 80 uri: "/post" data: "pay=IN%2F%2A%2A%2F%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -764,7 +764,7 @@ tests: port: 80 uri: "/post" data: "pay=insert%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -781,7 +781,7 @@ tests: port: 80 uri: "/post" data: "pay=left%27%29%3F%24%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -798,7 +798,7 @@ tests: port: 80 uri: "/post" data: "pay=LEFT%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -815,7 +815,7 @@ tests: port: 80 uri: "/post" data: "pay=length%7C%7C%21%21%24%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -832,7 +832,7 @@ tests: port: 80 uri: "/post" data: "pay=length%7C%7C%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -849,7 +849,7 @@ tests: port: 80 uri: "/post" data: "pay=length%3F%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -866,7 +866,7 @@ tests: port: 80 uri: "/post" data: "pay=length%26%26%21%21%21%24%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -883,7 +883,7 @@ tests: port: 80 uri: "/post" data: "pay=length%26%26%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -900,7 +900,7 @@ tests: port: 80 uri: "/post" data: "pay=LENGTH%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -917,7 +917,7 @@ tests: port: 80 uri: "/post" data: "pay=ln+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -934,7 +934,7 @@ tests: port: 80 uri: "/post" data: "pay=ln%29+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -951,7 +951,7 @@ tests: port: 80 uri: "/post" data: "pay=load_file%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -968,7 +968,7 @@ tests: port: 80 uri: "/post" data: "pay=local%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -985,7 +985,7 @@ tests: port: 80 uri: "/post" data: "pay=log%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1002,7 +1002,7 @@ tests: port: 80 uri: "/post" data: "pay=log%26%26%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1019,7 +1019,7 @@ tests: port: 80 uri: "/post" data: "pay=lower%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1036,7 +1036,7 @@ tests: port: 80 uri: "/post" data: "pay=MAKE_SET%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1053,7 +1053,7 @@ tests: port: 80 uri: "/post" data: "pay=MAX%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1070,7 +1070,7 @@ tests: port: 80 uri: "/post" data: "pay=md5%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1087,7 +1087,7 @@ tests: port: 80 uri: "/post" data: "pay=md5%5C%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1104,7 +1104,7 @@ tests: port: 80 uri: "/post" data: "pay=MID%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1121,7 +1121,7 @@ tests: port: 80 uri: "/post" data: "pay=minute+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1138,7 +1138,7 @@ tests: port: 80 uri: "/post" data: "pay=month%3D%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1155,7 +1155,7 @@ tests: port: 80 uri: "/post" data: "name_const(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1172,7 +1172,7 @@ tests: port: 80 uri: "/post" data: "now(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1189,7 +1189,7 @@ tests: port: 80 uri: "/post" data: "nOW(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1206,7 +1206,7 @@ tests: port: 80 uri: "/post" data: "ord(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1223,7 +1223,7 @@ tests: port: 80 uri: "/post" data: "password?(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1240,7 +1240,7 @@ tests: port: 80 uri: "/post" data: "password/?(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1257,7 +1257,7 @@ tests: port: 80 uri: "/post" data: "Password>$(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1274,7 +1274,7 @@ tests: port: 80 uri: "/post" data: "pg_sleep(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1291,7 +1291,7 @@ tests: port: 80 uri: "/post" data: "pi(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1308,7 +1308,7 @@ tests: port: 80 uri: "/post" data: "PI(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1325,7 +1325,7 @@ tests: port: 80 uri: "/post" data: "pow(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1342,7 +1342,7 @@ tests: port: 80 uri: "/post" data: "POW(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1359,7 +1359,7 @@ tests: port: 80 uri: "/post" data: "quarter. (" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1376,7 +1376,7 @@ tests: port: 80 uri: "/post" data: "rand(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1393,7 +1393,7 @@ tests: port: 80 uri: "/post" data: "Rand (" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1410,7 +1410,7 @@ tests: port: 80 uri: "/post" data: "RAND(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1427,7 +1427,7 @@ tests: port: 80 uri: "/post" data: "replace(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1444,7 +1444,7 @@ tests: port: 80 uri: "/post" data: "REPLACE(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1461,7 +1461,7 @@ tests: port: 80 uri: "/post" data: "round (" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1478,7 +1478,7 @@ tests: port: 80 uri: "/post" data: "round(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1495,7 +1495,7 @@ tests: port: 80 uri: "/post" data: "rtrim(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1512,7 +1512,7 @@ tests: port: 80 uri: "/post" data: "RTRIM(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1529,7 +1529,7 @@ tests: port: 80 uri: "/post" data: "pay=sin (" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1546,7 +1546,7 @@ tests: port: 80 uri: "/post" data: "SIN(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1563,7 +1563,7 @@ tests: port: 80 uri: "/post" data: "pay=sleep(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1580,7 +1580,7 @@ tests: port: 80 uri: "/post" data: "SLEEP (" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1597,7 +1597,7 @@ tests: port: 80 uri: "/post" data: "pay=strcmp(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1614,7 +1614,7 @@ tests: port: 80 uri: "/post" data: "pay=substr(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1631,7 +1631,7 @@ tests: port: 80 uri: "/post" data: "SUBSTR(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1648,7 +1648,7 @@ tests: port: 80 uri: "/post" data: "pay=substring(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1665,7 +1665,7 @@ tests: port: 80 uri: "/post" data: "SUBSTRING(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1682,7 +1682,7 @@ tests: port: 80 uri: "/post" data: "pay=sysdate(" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1699,7 +1699,7 @@ tests: port: 80 uri: "/post" data: "time (" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1716,7 +1716,7 @@ tests: port: 80 uri: "/post" data: "pay=time%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1733,7 +1733,7 @@ tests: port: 80 uri: "/post" data: "pay=trim%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1750,7 +1750,7 @@ tests: port: 80 uri: "/post" data: "pay=Uncompress+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1767,7 +1767,7 @@ tests: port: 80 uri: "/post" data: "pay=unhex%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1784,7 +1784,7 @@ tests: port: 80 uri: "/post" data: "pay=uNhEx%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1801,7 +1801,7 @@ tests: port: 80 uri: "/post" data: "pay=updatexml%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1818,7 +1818,7 @@ tests: port: 80 uri: "/post" data: "pay=UpdateXML%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1835,7 +1835,7 @@ tests: port: 80 uri: "/post" data: "pay=UPPER%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1852,7 +1852,7 @@ tests: port: 80 uri: "/post" data: "pay=user+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1869,7 +1869,7 @@ tests: port: 80 uri: "/post" data: "pay=user%2F%3F%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1886,7 +1886,7 @@ tests: port: 80 uri: "/post" data: "pay=user%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1903,7 +1903,7 @@ tests: port: 80 uri: "/post" data: "pay=values+%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1920,7 +1920,7 @@ tests: port: 80 uri: "/post" data: "pay=VALUES%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1937,7 +1937,7 @@ tests: port: 80 uri: "/post" data: "pay=version%3D%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1954,7 +1954,7 @@ tests: port: 80 uri: "/post" data: "pay=version%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1971,7 +1971,7 @@ tests: port: 80 uri: "/post" data: "pay=xmltype%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -1988,7 +1988,7 @@ tests: port: 80 uri: "/post" data: "pay=XMLType%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] @@ -2005,7 +2005,7 @@ tests: port: 80 uri: "/post" data: "pay=year%5D%3D%28" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942410] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942420.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942420.yaml index b0d3ee0e6..92940a8a8 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942420.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942420.yaml @@ -16,7 +16,7 @@ tests: method: POST port: 80 uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942420] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942421.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942421.yaml index 4b71697ff..db7114909 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942421.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942421.yaml @@ -16,7 +16,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942421] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942430.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942430.yaml index b8e732451..1638692a3 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942430.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942430.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "var=(((((())))))&var2=whatever" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942430] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942431.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942431.yaml index 0254f2112..89bb3b273 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942431.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942431.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "var=-------------------&var2=whatever" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942431] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942432.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942432.yaml index 0a34adce1..87b75ece2 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942432.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942432.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "var=;;dd foo bar" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942432] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942440.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942440.yaml index 7af45734d..5aa27383d 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942440.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942440.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?var=DROP%20sampletable%3b--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942440] @@ -30,7 +30,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=' or 1=1;%00" output: @@ -47,7 +47,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=OR 1# " output: @@ -64,7 +64,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=admin'--" output: @@ -81,7 +81,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=DROP/*comment*/sampletable" output: @@ -98,7 +98,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=DR/**/OP/*bypass deny listing*/sampletable" output: @@ -115,7 +115,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=SELECT/*avoid-spaces*/password/**/FROM/**/Members" output: @@ -132,7 +132,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=SELECT /*!32302 1/0, */ 1 FROM tablename" output: @@ -149,7 +149,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=' or 1=1# " output: @@ -166,7 +166,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=β€˜ or 1=1-- -" output: @@ -183,7 +183,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=β€˜ or 1=1/*" output: @@ -200,7 +200,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=1='1' or-- -" output: @@ -217,7 +217,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=' /*!50000or*/1='1" output: @@ -234,7 +234,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=' /*!or*/1='1" output: @@ -251,7 +251,7 @@ tests: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 method: "POST" port: 80 - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "test=0/**/union/*!50000select*/table_name`foo`/**/" output: diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942450.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942450.yaml index bf0f304cd..51520c847 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942450.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942450.yaml @@ -16,7 +16,7 @@ tests: method: POST uri: "/post" data: "var=%5c0xf00dsdfdsa" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942450] @@ -33,7 +33,7 @@ tests: method: POST uri: "/post" data: "var=concat%280x223e3c62723e%2Cversion%28%29%2C0x3c696d67207372633d22%29" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942450] @@ -50,7 +50,7 @@ tests: method: POST uri: "/post" data: "var=select%200x616263" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942450] @@ -67,7 +67,7 @@ tests: method: POST uri: "/post" data: "var=IHRlc3Q0xAcF" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942450] @@ -84,7 +84,7 @@ tests: method: POST uri: "/post" data: "var=9F86D081884C7D659A2FEAA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942450] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942470.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942470.yaml index 3496a13e4..46ef15a2c 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942470.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942470.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "pay=nvarchar" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -33,7 +33,7 @@ tests: port: 80 uri: "/post" data: "pay=xp_cmdshell" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -50,7 +50,7 @@ tests: port: 80 uri: "/post" data: "pay=varchar" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -67,7 +67,7 @@ tests: port: 80 uri: "/post" data: "pay=xp_dirtree" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -84,7 +84,7 @@ tests: port: 80 uri: "/post" data: "pay=xp_regread" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -101,7 +101,7 @@ tests: port: 80 uri: "/post" data: "pay=sp_password" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -118,7 +118,7 @@ tests: port: 80 uri: "/post" data: "pay=UTL_HTTP" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -135,7 +135,7 @@ tests: port: 80 uri: "/post" data: "pay=OPENROWSET" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -152,7 +152,7 @@ tests: port: 80 uri: "/post" data: "pay=sp_executesql" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -169,7 +169,7 @@ tests: port: 80 uri: "/post" data: "sp_executesql" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] @@ -185,7 +185,7 @@ tests: method: GET port: 80 uri: "/get/index.php?id=1%2bcurrent_user::int" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942470] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942480.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942480.yaml index cf93c29b3..c774ba459 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942480.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942480.yaml @@ -17,7 +17,7 @@ tests: port: 80 # variable name boundary attacks uri: "/get?'msdasql'" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -36,7 +36,7 @@ tests: method: POST port: 80 uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -53,7 +53,7 @@ tests: port: 80 uri: "/post" data: "var=EmptyValue into outfile '\\\\\\\\jviw6aoxefbjk0luyi6oiwjv5unittests.coreruleset.org\\\\xct'; --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -70,7 +70,7 @@ tests: port: 80 uri: "/post" data: "var=/config.ini' into outfile '\\\\\\\\il7vw9ew4e1iazbtohwn8v9uvl1hunitetests.coreruleset.org\\\\yxq'; --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -87,7 +87,7 @@ tests: port: 80 uri: "/post" data: "var=0.3480567293179807' UNION ALL select NULL --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -104,7 +104,7 @@ tests: port: 80 uri: "/post" data: "var=config.ini\") UNION ALL select NULL --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -121,7 +121,7 @@ tests: port: 80 uri: "/post" data: "var=CRS) UNION ALL select NULL --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -138,7 +138,7 @@ tests: port: 80 uri: "/post" data: "var=CRS3\") UNION ALL select NULL --" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -154,7 +154,7 @@ tests: method: GET port: 80 uri: "/get/index.php?id=overlay(password%20placing%20%27%27%20from%201%20for%200)::int" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -170,7 +170,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -187,7 +187,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] @@ -203,7 +203,7 @@ tests: method: GET port: 80 uri: "/get/index.php?id=overlay(password%0aplacing%0a%27%27%0afrom%201%20for%200)::int" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942480] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942490.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942490.yaml index 910071cd0..c7b1d3635 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942490.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942490.yaml @@ -16,7 +16,7 @@ tests: port: 80 uri: "/post" data: "var=%22%60%20%2A%20123" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -33,7 +33,7 @@ tests: port: 80 uri: "/post" data: "' ', 10" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -50,7 +50,7 @@ tests: port: 80 uri: "/post" data: "'', '', '', '', '', '', '', '', 13" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -67,7 +67,7 @@ tests: port: 80 uri: "/post" data: "`>65" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -84,7 +84,7 @@ tests: port: 80 uri: "/post" data: "pay='1001'='10" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -101,7 +101,7 @@ tests: port: 80 uri: "/post" data: "\"2562*23" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -118,7 +118,7 @@ tests: port: 80 uri: "/post" data: "pay=\":[\"00" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -135,7 +135,7 @@ tests: port: 80 uri: "/post" data: "pay=`>6fbdec2" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -152,7 +152,7 @@ tests: port: 80 uri: "/post" data: "pay='][0]]), strtolower($b[$GLOBALS['" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -169,7 +169,7 @@ tests: port: 80 uri: "/post" data: "pay=', 2, 1" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -186,7 +186,7 @@ tests: port: 80 uri: "/post" data: "`>9e7" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -203,7 +203,7 @@ tests: port: 80 uri: "/post" data: "pay=\":\"65" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -220,7 +220,7 @@ tests: port: 80 uri: "/post" data: "pay='\\2nq5" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -237,7 +237,7 @@ tests: port: 80 uri: "/post" data: "pay=` < 0) AND `" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -254,7 +254,7 @@ tests: port: 80 uri: "/post" data: "pay='0:0:6" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -271,7 +271,7 @@ tests: port: 80 uri: "/post" data: "\":60" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -288,7 +288,7 @@ tests: port: 80 uri: "/post" data: "pay=\">%5 - type_submit_reset_5" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -305,7 +305,7 @@ tests: port: 80 uri: "/post" data: "\":35" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -322,7 +322,7 @@ tests: port: 80 uri: "/post" data: "pay='3085'='30" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -339,7 +339,7 @@ tests: port: 80 uri: "/post" data: "\":\"[0,\\x22" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -356,7 +356,7 @@ tests: port: 80 uri: "/post" data: "pay='16/17" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] @@ -373,7 +373,7 @@ tests: port: 80 uri: "/post" data: "\";}7b6" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942490] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942500.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942500.yaml index 54e148077..510b076e4 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942500.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942500.yaml @@ -16,7 +16,7 @@ tests: method: GET port: 80 uri: "/get?id=9999+or+{if+length((/*!5000select+username/*!50000from*/user+where+id=1))>0}" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942500] @@ -32,7 +32,7 @@ tests: method: GET port: 80 uri: "/get?id=9999+or+{if+length((/*+!5000select+username/*!50000from*/user+where+id=1))>0}" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942500] @@ -80,7 +80,7 @@ tests: method: GET port: 80 uri: "/get?test=9999+or+{if+length((/*!5000select+username/*!comment*/" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942500] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942510.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942510.yaml index 622884924..cdf7d6573 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942510.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942510.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?`bla`" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942510] @@ -31,7 +31,7 @@ tests: method: GET port: 80 uri: "/get?'bla'" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942510] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942511.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942511.yaml index a2096ccbe..3e20cc009 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942511.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942511.yaml @@ -15,7 +15,7 @@ tests: method: GET port: 80 uri: "/get?`bla`" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942511] @@ -31,7 +31,7 @@ tests: method: GET port: 80 uri: "/get?'bla'" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942511] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942520.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942520.yaml index be7dd030a..8e1a5dad2 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942520.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942520.yaml @@ -17,7 +17,7 @@ tests: port: 80 uri: "/post" data: "var=id'is%20not-id--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -34,7 +34,7 @@ tests: port: 80 uri: "/post" data: "var=id'is%20notes" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942520] @@ -51,7 +51,7 @@ tests: port: 80 uri: "/post" data: "var=id'not%20like%20id--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -68,7 +68,7 @@ tests: port: 80 uri: "/post" data: "var=id'not%20glob-id--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -85,7 +85,7 @@ tests: port: 80 uri: "/post" data: "var=id'not%20glob-id--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -103,7 +103,7 @@ tests: uri: "/post" # x'|email-- data: "var=x'%7Cemail--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -121,7 +121,7 @@ tests: uri: "/post" # x'-email-- data: "var=x'-email--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -139,7 +139,7 @@ tests: uri: "/post" # x'+email-- (there seem to be a bug with double encoding in tests) data: "var=x'%252Bemail--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -157,7 +157,7 @@ tests: uri: "/post" # x'^email-- data: "var=x'%5Eemail--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -175,7 +175,7 @@ tests: uri: "/post" # x'@email-- data: "var=x'%40email--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942520] @@ -193,7 +193,7 @@ tests: uri: "/post" # x'&email-- data: "var=x'%26email--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -211,7 +211,7 @@ tests: uri: "/post" # x'email-- data: "var=x'%3Eemail--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -247,7 +247,7 @@ tests: uri: "/post" # x'=email-- data: "var=x'%3Demail--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -265,7 +265,7 @@ tests: uri: "/post" # x'/email-- data: "var=x'%2Femail--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -283,7 +283,7 @@ tests: uri: "/post" # x'%email-- data: "var=x'%25email--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -301,7 +301,7 @@ tests: uri: "/post" # x'~email-- data: "var=x'~email--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942520] @@ -318,7 +318,7 @@ tests: port: 80 uri: "/post" data: "var=x'%20mod%20id--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -335,7 +335,7 @@ tests: port: 80 uri: "/post" data: "var='sounds%20like%20rowid--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] @@ -352,45 +352,11 @@ tests: port: 80 uri: "/post" data: "var='%2F**%2F*2--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] - test_id: 21 - desc: "Integration test: 942521 blocks foo'or'oof" - stages: - - input: - dest_addr: 127.0.0.1 - headers: - Host: localhost - User-Agent: "OWASP CRS test agent" - Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 - method: POST - port: 80 - uri: "/post" - data: "var=foo'or'oof" - version: HTTP/1.0 - output: - log: - expect_ids: [942521] - - test_id: 22 - desc: "Integration test: 942522 blocks foo\\''or'oof" - stages: - - input: - dest_addr: 127.0.0.1 - headers: - Host: localhost - User-Agent: "OWASP CRS test agent" - Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 - method: POST - port: 80 - uri: "/post" - data: "var=foo%5c''or'oof" - version: HTTP/1.0 - output: - log: - expect_ids: [942522] - - test_id: 23 desc: "Detect auth bypass email=' is not?--" stages: - input: @@ -403,7 +369,7 @@ tests: port: 80 uri: "/post" data: "email=%27%20is%20not%3F--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942520] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942521.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942521.yaml index 29eec3976..7aacbd033 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942521.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942521.yaml @@ -17,7 +17,7 @@ tests: port: 80 uri: "/post" data: "var=a'or'a" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -34,7 +34,7 @@ tests: port: 80 uri: "/post" data: "var=a'or?--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -51,7 +51,7 @@ tests: port: 80 uri: "/post" data: "var=is%20this%20your%20parents'%20or%20yours?" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -68,7 +68,7 @@ tests: port: 80 uri: "/post" data: "var=user'and%20id%20is%20not?--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -85,7 +85,7 @@ tests: port: 80 uri: "/post" data: "var=it%20is%20your%20parents'%20and%20yours" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -102,7 +102,7 @@ tests: port: 80 uri: "/post" data: "var=bob's%20or%20alice's" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -119,7 +119,7 @@ tests: port: 80 uri: "/post" data: "var=mother%20or%20daughter" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -136,7 +136,7 @@ tests: port: 80 uri: "/post" data: "var='oreo" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -153,7 +153,7 @@ tests: port: 80 uri: "/post" data: "var='fork" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -170,7 +170,7 @@ tests: port: 80 uri: "/post" data: "var='%20for" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -187,7 +187,7 @@ tests: port: 80 uri: "/post" data: "var=''or" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -204,7 +204,7 @@ tests: port: 80 uri: "/post" data: "var=''or" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -221,7 +221,7 @@ tests: port: 80 uri: "/post" data: "var=''or" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -238,7 +238,7 @@ tests: port: 80 uri: "/post" data: "var='''or%201" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -255,7 +255,7 @@ tests: port: 80 uri: "/post" data: "var=%5C'lol'%20or%20'1" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -272,7 +272,7 @@ tests: port: 80 uri: "/post" data: "var=Incorrectly%20constructed%20SQL%20statements%0AThis%20form%20of%20injection%20relies%20on%20the%20fact%20that%20SQL%20statements%20consist%20of%20both%20data%20used%20by%20the%20SQL%20statement%20and%20commands%20that%20control%20how%20the%20SQL%20statement%20is%20executed.%20For%20example%2C%20in%20the%20SQL%20statement%20select%20*%20from%20person%20where%20name%20%3D%20'susan'%20and%20age%20%3D%202%20the%20string%20'susan'%20is%20data%20and%20the%20fragment%20and%20age%20%3D%202%20is%20an%20example%20of%20a%20command%20(the%20value%202%20is%20also%20data%20in%20this%20example).%0A%0ASQL%20injection%20occurs%20when%20specially%20crafted%20user%20input%20is%20processed%20by%20the%20receiving%20program%20in%20a%20way%20that%20allows%20the%20input%20to%20exit%20a%20data%20context%20and%20enter%20a%20command%20context.%20This%20allows%20the%20attacker%20to%20alter%20the%20structure%20of%20the%20SQL%20statement%20which%20is%20executed.%0A%0AAs%20a%20simple%20example%2C%20imagine%20that%20the%20data%20'susan'%20in%20the%20above%20statement%20was%20provided%20by%20user%20input.%20The%20user%20entered%20the%20string%20'susan'%20(without%20the%20apostrophes)%20in%20a%20web%20form%20text%20entry%20field%2C%20and%20the%20program%20used%20string%20concatenation%20statements%20to%20form%20the%20above%20SQL%20statement%20from%20the%20three%20fragments%20select%20*%20from%20person%20where%20name%3D'%2C%20the%20user%20input%20of%20'susan'%2C%20and%20'%20and%20age%20%3D%202.%0A%0ANow%20imagine%20that%20instead%20of%20entering%20'susan'%20the%20attacker%20entered%20'%20or%201%3D1%3B%20--.%0A%0AThe%20program%20will%20use%20the%20same%20string%20concatenation%20approach%20with%20the%203%20fragments%20of%20select%20*%20from%20person%20where%20name%3D'%2C%20the%20user%20input%20of%20'%20or%201%3D1%3B%20--%2C%20and%20'%20and%20age%20%3D%202%20and%20construct%20the%20statement%20select%20*%20from%20person%20where%20name%3D''%20or%201%3D1%3B%20--%20and%20age%20%3D%202.%20Many%20databases%20will%20ignore%20the%20text%20after%20the%20'--'%20string%20as%20this%20denotes%20a%20comment.%20The%20structure%20of%20the%20SQL%20command%20is%20now%20select%20*%20from%20person%20where%20name%3D''%20or%201%3D1%3B%20and%20this%20will%20select%20all%20person%20rows%20rather%20than%20just%20those%20named%20'susan'%20whose%20age%20is%202.%20The%20attacker%20has%20managed%20to%20craft%20a%20data%20string%20which%20exits%20the%20data%20context%20and%20entered%20a%20command%20context.%0A%0AA%20more%20complex%20example%20is%20now%20presented.%0A%0AImagine%20a%20program%20creates%20a%20SQL%20statement%20using%20the%20following%20string%20assignment%20command%20%3A%0A%0Avar%20statement%20%3D%20%22SELECT%20*%20FROM%20users%20WHERE%20name%20%3D%20'%22%20%2B%20userName%20%2B%20%22'%22%3B%0A%0AThis%20SQL%20code%20is%20designed%20to%20pull%20up%20the%20records%20of%20the%20specified%20username%20from%20its%20table%20of%20users.%20However%2C%20if%20the%20%22userName%22%20variable%20is%20crafted%20in%20a%20specific%20way%20by%20a%20malicious%20user%2C%20the%20SQL%20statement%20may%20do%20more%20than%20the%20code%20author%20intended.%20For%20example%2C%20setting%20the%20%22userName%22%20variable%20as%3A%0A%0A'%20OR%20'1'%3D'1%0Aor%20using%20comments%20to%20even%20block%20the%20rest%20of%20the%20query%20(there%20are%20three%20types%20of%20SQL%20comments%5B14%5D).%20All%20three%20lines%20have%20a%20space%20at%20the%20end%3A%0A%0A'%20OR%20'1'%3D'1'%20--%0A'%20OR%20'1'%3D'1'%20%7B%0A'%20OR%20'1'%3D'1'%20%2F*%20" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -289,7 +289,7 @@ tests: port: 80 uri: "/post" data: "var=%21%21%21%21%21%27...%22%21%21%27.%22.%60...%27.....%27%40%60%21%21%21%21%21%60....%22%40%40%40%40%40%60%21%21%21%21%21%27%40%60%40%40%40%40%40%27...%22%27%40%40%40%40%40%27%22...%27%21%21%21%60%21%21%60%40%40%22%27%40%40%60..%27%21%21%27%40%40%40%40%22%40%40%40%40%40%60%21%21%21%21%27%21%22%40%40%40%40%40%27%21%21%21%60%21%21%21%21%22%21%21%21%22%21%21%21%21%21%27....%27%27%40%27%22.%60%40%40%40%40%60%27%21%21%22%40%60%40%40%40%40%27%21%27%21%27.....%27%21%21%21%60%40%40%40%60.%27%21%21%60%21%27%21%21%21%60%21%21%21%21%21%60%22%40%60%40%40%40%60%21%21%21%27%40%60%40%40%40%40%22...%22%21%21%21%21%21%27%40%40%40%27%21%27.....%27%21%21%21%27....%60%40%40%40%60%40%22...%60...%27%40%40%40%40%40%60...%22%40%40%40%40%22..%22%40%40%40%60%60%21%22%40%40%40%22%40%40%40%22%40%40%40%22..%22%27....%60%21%21%27%40%22...%27%40%40%40%40%22%40%40%40%22%21%21%21%21%21%27...%60...%22%21%21%21%21%60%40%40%40%27%21%27%40%40%40%40%40%22%40%40%40%60.....%22....%22%27....%22%22%21%21%21%21%22%40%40%27%21%21%21%21%21%22....%27%21%21%21%21%21%22%21%21%21%60%40%40%40%40%22%40%22%40%40%40%27%40%40%40%40%40%22%21%21%21%21%21%22%60%21%21%21%21%22%40%40%40%40%27%60%60%60..%22...%22%21%21%21%27%21%60%22%40%40%40%60%21%21%21%60%22%40%40%40%40%27%27%60%40%40%40%40%22.....%27%27..%22%40%40%40%22%21%21%21%21%60%40%40%40%40%40%27%21%21%21%21%22.%60%40%40%40%40%40%60%60%21%21%60%21%21%21%21%22%21%21%22.%60%27%40%40%27%40%40%40%60%21%21%21%21%21%22%21%21%21%21%21%27%40%40%40%40%27%21%21%21%21%21%60%40%40%40%40%40%22.....%60%60.%22%40%40%22.%27%21%21%21%21%21%27%21%21%27%40%40%40%22%60.....%60%40%40%27%22%40%40%40%40%60%27%22%40%40%40%40%60%21%21%21%21%27%22%21%21%21%21%60%21%60%40%40%40%40%22%40%40%40%40%22%21%21%22%21%21%21%21%21%27%40%40%22...%60%22%27.%60%22%40%22%40%40%40%40%40%22%21%21%22%21%21%21%21%22%40%40%40%60%40%40%27%21%21%22.....%60%21%21%21%60%40%40%22%40%60%40%40%40%60%27....%27%40%40%40%22%60%40%40%40%40%40%60%60%21%21%22%40%22..%27%21%21%21%21%21%60%40%40%40%40%27....%22.....%27%60%21%21%21%27%21%22%40%60%60%27%60%27%40%27%40%40%40%40%27%21%21%27%40%40%60%21%22%60%21%21%21%27..%22%27%40%40%40%60%60.....%27.....%27%40%40%22%22%27.....%22.%60%21%60%40%40%60%21%60%40%40%40%40%27%40%40%40%27%22..%60%21%60%40%40%40%60%60%40%40%40%40%22%21%21%21%21%21%22.%60%21%21%27%60%40%40%40%40%60%40%40%40%40%40%27%22.%22...%27...%27.....%27%40%40%40%40%40%60.%27%40%40%40%27%21%21%21%21%21%22%40%22%40%60%27%21%21%21%27%40%27%40%40%40%40%60%40%40%40%40%60%27%40%40%40%40%40%60%21%21%21%60%40%40%22...%60..%27.....%27.%27%27%21%60.%22%22%21%21%21%27.....%22%40%40%40%22%40%40%40%40%40%60...%27.%60%22..%27%21%60%21%21%21%21%60..%60....%22%27%40%40%40%40%22..%27.%27....%27%40%40%60...%22%21%22%22%21%60%21%21%21%21%21%27%21%21%27%22%27....%27%22%21%21%21%27%40%40%40%27.....%22...%60..%60%40%40%40%40%40%60%22%40%40%60.%27%21%27%21%21%21%21%21%27....%60%21%21%21%27%21%27%40%60%60...%22%21%21%21%21%60%27%40%22%22%40%22...%60%40%40%27..%22%21%21%21%21%60..%27%40%40%27%40%40%27..%22%40%40%40%40%60....%60%40%40%40%60%40%40%40%40%60%22%21%21%21%60%21%60%40%40%40%22..%27%40%40%40%60%40%40%60%60%22%40%40%40%40%22%21%21%60%40%40%22%40%60%21%21%60%27.....%27%40%40%40%40%40%22.%60%21%21%21%21%60%21%21%60.....%22%21%21%27%27%21%22%40%40%40%27%27%22%40%40%40%40%60....%60%22.%27%21%21%21%27%40%40%40%40%60...%27..%60%21%21%60...%60%21%60%40%40%27.....%27%40%40%27%27%40%40%27..%27.%27%40%22%27%21%22%40%40%22%21%21%21%27%60.....%60.....%22.%60%40%60%40%40%40%60..%22.....%60%40%40%40%40%22%27%21%21%21%21%21%60%40%40%40%40%22%40%40%40%40%40%27....%60.%27....%27%21%21%21%60%21%21%21%21%21%60..%27.%27%40%40%22%60%40%40%40%60.....%27...%27%21%21%21%21%60..%60....%60%40%40%40%27%21%21%21%27%60%21%21%21%21%27...%60%40%40%40%60....%60%27%40%40%40%40%27%40%40%60..%27%40%40%27..%27%22%21%22%40%40%40%27...%22%21%21%21%21%21%60%40%40%40%40%40%22%40%40%40%40%22%60%21%27..%60%21%21%21%27%40%40%40%22%21%21%21%21%27%40%40%40%40%22%40%60%22.....%22.....%27%40%40%40%40%40%27%21%21%21%21%27%40%27%40%40%40%40%40%27%60%27%22%21%22%21%21%21%21%60%40%40%40%40%40%27..%22.%60%40%40%40%40%40%22.%60%60%21%21%21%21%21%60%21%21%21%22...%60%40%22%21%21%21%21%22%21%21%60%40%40%40%40%60%21%21%21%21%22%40%27%21%21%21%60%27%40%40%40%40%22.....%60....%22...%60%21%21%21%21%60%21%21%21%21%21%27%40%40%60%40%40%40%40%27%40%60%21%22.....%22%21%21%21%27%40%40%40%40%27....%22%40%40%40%40%40%60%40%27.....%22%21%21%21%60%40%40%60%21%21%21%21%21%22%60%40%40%40%40%27%21%21%21%22...%60%40%60...%27...%60%21%21%21%22%21%21%21%21%27%21%27%21%21%60.%60%21%21%60..%22..%60.....%22..%22....%27%21%21%21%21%27%60%40%40%40%40%40%22%21%21%21%21%22%40%40%40%40%40%27%40%40%40%40%40%60.%60....%60%60%40%40%40%40%22%27%40%27%40%60%21%21%21%21%21%27...%27%40%40%40%40%40%27.%27.....%60%21%21%60%21%21%21%21%21%22%22%40%40%40%27%40%60%21%21%21%22%21%21%21%21%21%27..%22....%27%21%21%21%21%21%27...%60.....%60%40%22%21%21%21%21%27%27%21%21%21%21%21%22%60%27%21%21%21%27..%60%40%60%21%21%21%21%21%27%60%27%21%21%27%21%21%21%60%21%21%21%21%27%40%60%22%21%60.....%27%40%40%40%40%40%27.....%60%21%21%60%40%40%40%27...%60%21%21%21%60%40%40%40%22%22%21%21%21%21%21%22%40%40%40%40%27%40%22.%22.%22%40%40%40%40%40%22%40%60....%60....%27%21%21%21%21%21%22%21%21%21%21%60%21%21%21%21%21%27....%27%21%21%21%21%60%22%60%40%40%40%40%40%60...%22%40%60%40%40%22%40%40%40%40%40%27%21%21%27%22%40%40%60%27%22%40%40%40%22%21%60%27%21%21%21%21%21%60...%27%40%40%22%21%21%21%27%21%27%21%21%21%60%21%21%21%21%21%60%22.....%22%21%21%21%21%27%40%40%40%40%60%21%21%27.....%22%21%21%21%22%21%21%22%21%21%22%40%40%27%21%21%21%21%22%40%40%40%40%27%40%40%40%40%27....%60%40%40%40%60%40%22...%27.....%27%40%40%22%40%40%40%22%21%21%21%21%21%22...%27..%22%21%22%40%40%40%40%40%27....%60%40%40%40%40%22%27%21%21%21%21%21%60%40%40%22%27%40%40%40%40%40%60%21%21%21%27%40%40%40%27%60.%27%21%21%21%22....%60%40%27.....%22%40%40%40%40%40%27%40%60%40%40%40%40%60%40%40%40%60%21%21%21%21%21%60%27%21%21%21%27....%22%22%21%21%27...%27%21%21%21%27...%27%40%22....%22%40%40%27%21%21%21%21%27.....%22%40%40%40%40%27%22....%22...%27%21%21%21%60....%22%40%40%40%22...%27%40%27..%60%21%21%27%40%40%40%40%40%60%40%60%21%21%21%21%21%27.....%60%27%22%22%27%27.%22%60%21%21%22%40%40%60%21%22%60%21%21%27..%60%21%21%21%21%60%21%21%21%21%21%60%40%40%22%21%21%21%21%21%60%40%40%60....%60%40%40%40%40%40%22%40%40%40%40%60.....%60%27%27...%27%22%22%40%40%60.....%22%22%27%40%60%27%27.....%22%40%27%60.....%60%40%22%40%40%40%40%27%21%21%21%21%60%40%40%40%27%40%40%40%40%40%22%21%21%21%21%60.%22%21%21%27%40%27%22%21%21%21%21%60%40%40%27%40%40%40%40%27%21%21%27%27..%27%27%21%21%21%21%21%27%40%27.%60%21%21%21%21%21%27%40%40%40%40%27%21%21%27%40%40%40%40%22...%22%60%27%40%40%40%22%40%40%40%22%22%21%21%21%22%21%21%60...%27.....%60%40%40%40%60%21%21%21%60%40%40%40%40%40%22%22%21%21%21%60%21%21%21%21%21%27%27%21%21%21%21%22....%27%21%21%21%21%21%27%21%21%21%22%21%21%21%21%21%27%22....%60%27%40%40%27%21%27.....%22%21%22%21%21%21%21%21%22%21%21%21%21%22...%27%22%40%40%40%60%40%40%40%40%40%27%27%21%21%27....%22.....%22%21%21%21%22%40%40%40%40%40%27%21%21%21%21%60%22.....%60..%60%22%21%21%21%22%22%27...%27%40%40%40%40%27.....%27%21%21%21%60...%27.%22%21%21%21%21%21%27%21%27%21%21%21%22%40%27.....%27%21%21%21%21%22%40%27...%27%21%21%27%40%40%22%40%40%40%40%40%60..%27%21%27.....%22%22%21%21%21%21%21%27%40%40%40%40%22%40%40%40%60.....%60%21%21%21%21%21%27....%27%27%40%40%40%40%27.....%27%21%60....%22...%22%21%21%21%21%27%21%21%22%40%27%40%40%40%40%40%27%21%21%21%22%21%21%21%21%27%21%21%21%21%60%27%27..%22%22%21%21%21%27%22%21%60..%22%27%27%60..%22%21%22%21%21%21%21%21%27..%27..%27.%27%27%21%21%21%21%60%27%21%21%21%21%60..%27%21%21%22.....%22%21%21%21%21%27%21%21%21%27....%60.....%22...%22%22%22.%22%27.%60%21%21%21%21%22%60%40%22.....%27%21%21%21%21%22%40%60...%22.%22.....%27%27..%22%27%21%21%21%21%21%60....%22%21%21%21%22..%60%21%21%21%21%60%21%21%21%21%27....%60%27%40%40%40%22%27.%27....%22%40%40%40%60%21%21%21%21%22%40%40%40%40%40%27%21%21%21%60%40%40%40%40%60.%22..%22%40%40%22%21%60%22%21%21%21%21%27%27%27.%27%22%40%40%40%22%40%40%40%27....%22%21%21%21%21%21%22%21%21%21%21%22%21%27%60%27%21%21%21%60%21%27...%60%21%21%21%21%27...%27%40%40%40%40%40%60%21%21%60%21%21%21%22%40%60%40%40%40%40%40%60%27%60..%22%22%21%21%27%22%40%40%27...%22..%22....%22%27%60%40%40%27....%27%40%40%40%40%22%60%21%21%60.%60%40%27%21%60%21%22...%27...%27.....%27%21%21%22..%22%22%40%27%21%21%21%27%40%40%22.%27%21%21%21%60%40%60%60%21%21%21%60%21%21%22...%27.%22%21%21%21%27...%22%21%21%21%21%60%40%40%40%40%60%22.%27%21%21%60.....%60%21%21%60%21%21%21%21%21%27.%27%40%40%40%40%40%22%21%21%21%60..%27%21%21%21%21%21%27%21%21%60%40%40%27%21%21%21%27.%22%21%21%21%21%22.%22%40%40%40%40%40%22%21%21%21%22%21%21%22%22%21%21%21%60%27%21%21%60%40%40%40%40%40%27..%27%40%60.....%22%21%21%21%27.%27%21%21%21%21%27%27....%22%40%40%27%40%40%40%40%40%60%60or" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -306,7 +306,7 @@ tests: port: 80 uri: "/post" data: "var='.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'or" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -323,7 +323,7 @@ tests: port: 80 uri: "/post" data: "var=.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'or" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942521] @@ -340,7 +340,7 @@ tests: port: 80 uri: "/post" data: "admin%2540juice-sh.op%5C%27and%2520likely%2520%28id%29--" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -356,7 +356,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -372,7 +372,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -388,7 +388,7 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942521] @@ -404,7 +404,24 @@ tests: method: GET port: 80 uri: "/get" - version: HTTP/1.0 + version: HTTP/1.1 + output: + log: + expect_ids: [942521] + - test_id: 25 + desc: "Integration test: 942521 blocks foo'or'oof" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "var=foo'or'oof" + version: HTTP/1.1 output: log: expect_ids: [942521] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942522.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942522.yaml index f81b8e311..bf85c50cf 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942522.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942522.yaml @@ -18,7 +18,7 @@ tests: uri: "/post" # \'or'1 data: "var=%5C'or'1" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942522] @@ -36,7 +36,7 @@ tests: uri: "/post" # \"or"1 data: "var=%5C%22or%221" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942522] @@ -54,7 +54,7 @@ tests: uri: "/post" # \`or`1 data: "var=%5C%60or%601" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942522] @@ -71,7 +71,7 @@ tests: port: 80 uri: "/post" data: "var=%5C'and" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942522] @@ -88,7 +88,7 @@ tests: port: 80 uri: "/post" data: "var='or'1" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942522] @@ -105,7 +105,7 @@ tests: port: 80 uri: "/post" data: "var=%5C' foo or" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942522] @@ -122,7 +122,7 @@ tests: port: 80 uri: "/post" data: "var=newline%0A%5C' and 1" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942522] @@ -139,7 +139,7 @@ tests: port: 80 uri: "/post" data: "var=Incorrectly%20constructed%20SQL%20statements%0AThis%20form%20of%20injection%20relies%20on%20the%20fact%20that%20SQL%20statements%20consist%20of%20both%20data%20used%20by%20the%20SQL%20statement%20and%20commands%20that%20control%20how%20the%20SQL%20statement%20is%20executed.%20For%20example%2C%20in%20the%20SQL%20statement%20select%20*%20from%20person%20where%20name%20%3D%20'susan'%20and%20age%20%3D%202%20the%20string%20'susan'%20is%20data%20and%20the%20fragment%20and%20age%20%3D%202%20is%20an%20example%20of%20a%20command%20(the%20value%202%20is%20also%20data%20in%20this%20example).%0A%0ASQL%20injection%20occurs%20when%20specially%20crafted%20user%20input%20is%20processed%20by%20the%20receiving%20program%20in%20a%20way%20that%20allows%20the%20input%20to%20exit%20a%20data%20context%20and%20enter%20a%20command%20context.%20This%20allows%20the%20attacker%20to%20alter%20the%20structure%20of%20the%20SQL%20statement%20which%20is%20executed.%0A%0AAs%20a%20simple%20example%2C%20imagine%20that%20the%20data%20'susan'%20in%20the%20above%20statement%20was%20provided%20by%20user%20input.%20The%20user%20entered%20the%20string%20'susan'%20(without%20the%20apostrophes)%20in%20a%20web%20form%20text%20entry%20field%2C%20and%20the%20program%20used%20string%20concatenation%20statements%20to%20form%20the%20above%20SQL%20statement%20from%20the%20three%20fragments%20select%20*%20from%20person%20where%20name%3D'%2C%20the%20user%20input%20of%20'susan'%2C%20and%20'%20and%20age%20%3D%202.%0A%0ANow%20imagine%20that%20instead%20of%20entering%20'susan'%20the%20attacker%20entered%20'%20or%201%3D1%3B%20--.%0A%0AThe%20program%20will%20use%20the%20same%20string%20concatenation%20approach%20with%20the%203%20fragments%20of%20select%20*%20from%20person%20where%20name%3D'%2C%20the%20user%20input%20of%20'%20or%201%3D1%3B%20--%2C%20and%20'%20and%20age%20%3D%202%20and%20construct%20the%20statement%20select%20*%20from%20person%20where%20name%3D''%20or%201%3D1%3B%20--%20and%20age%20%3D%202.%20Many%20databases%20will%20ignore%20the%20text%20after%20the%20'--'%20string%20as%20this%20denotes%20a%20comment.%20The%20structure%20of%20the%20SQL%20command%20is%20now%20select%20*%20from%20person%20where%20name%3D''%20or%201%3D1%3B%20and%20this%20will%20select%20all%20person%20rows%20rather%20than%20just%20those%20named%20'susan'%20whose%20age%20is%202.%20The%20attacker%20has%20managed%20to%20craft%20a%20data%20string%20which%20exits%20the%20data%20context%20and%20entered%20a%20command%20context.%0A%0AA%20more%20complex%20example%20is%20now%20presented.%0A%0AImagine%20a%20program%20creates%20a%20SQL%20statement%20using%20the%20following%20string%20assignment%20command%20%3A%0A%0Avar%20statement%20%3D%20%22SELECT%20*%20FROM%20users%20WHERE%20name%20%3D%20'%22%20%2B%20userName%20%2B%20%22'%22%3B%0A%0AThis%20SQL%20code%20is%20designed%20to%20pull%20up%20the%20records%20of%20the%20specified%20username%20from%20its%20table%20of%20users.%20However%2C%20if%20the%20%22userName%22%20variable%20is%20crafted%20in%20a%20specific%20way%20by%20a%20malicious%20user%2C%20the%20SQL%20statement%20may%20do%20more%20than%20the%20code%20author%20intended.%20For%20example%2C%20setting%20the%20%22userName%22%20variable%20as%3A%0A%0A'%20OR%20'1'%3D'1%0Aor%20using%20comments%20to%20even%20block%20the%20rest%20of%20the%20query%20(there%20are%20three%20types%20of%20SQL%20comments%5B14%5D).%20All%20three%20lines%20have%20a%20space%20at%20the%20end%3A%0A%0A'%20OR%20'1'%3D'1'%20--%0A'%20OR%20'1'%3D'1'%20%7B%0A'%20OR%20'1'%3D'1'%20%2F*%20" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942522] @@ -156,7 +156,24 @@ tests: port: 80 uri: "/post" data: "admin%2540juice-sh.op%5C%27and%2520likely%2520%28id%29--" - version: HTTP/1.0 + version: HTTP/1.1 + output: + log: + expect_ids: [942522] + - test_id: 10 + desc: "Integration test: 942522 blocks foo\\''or'oof" + stages: + - input: + dest_addr: 127.0.0.1 + headers: + Host: localhost + User-Agent: "OWASP CRS test agent" + Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 + method: POST + port: 80 + uri: "/post" + data: "var=foo%5c''or'oof" + version: HTTP/1.1 output: log: expect_ids: [942522] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942530.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942530.yaml index 0fc688711..a96fde431 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942530.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942530.yaml @@ -17,7 +17,7 @@ tests: port: 80 uri: "/post" data: "email=admin@juice-sh.op';&password=foo" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942530] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942540.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942540.yaml index ad78ed7d5..ecc097189 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942540.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942540.yaml @@ -17,7 +17,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40juice-sh.op';" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942540] @@ -34,7 +34,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40juice-sh.op\";" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942540] @@ -51,7 +51,7 @@ tests: port: 80 uri: "/post" data: "email=admin%40juice-sh.op`;" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942540] @@ -68,7 +68,7 @@ tests: port: 80 uri: "/post" data: "email='foo';'bar';'def'" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942540] @@ -85,7 +85,7 @@ tests: port: 80 uri: "/post" data: "email=`foo`;`bar`;`def`" - version: HTTP/1.0 + version: HTTP/1.1 output: log: no_expect_ids: [942540] @@ -129,7 +129,7 @@ tests: port: 80 uri: "/post" data: "email=root%40example.com%27%2F%2A%20comment%20%2A%2F%3B" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942540] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942550.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942550.yaml index f6691e602..78c315849 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942550.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942550.yaml @@ -19,7 +19,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -37,7 +37,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -56,7 +56,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -74,7 +74,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -93,7 +93,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22b%22%3A2%7D%27%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -111,7 +111,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22b%22%3A2%7D%27%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -130,7 +130,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajson%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -148,7 +148,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajson%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -167,7 +167,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22b%22%3A2%7D%27%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajson" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -185,7 +185,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22b%22%3A2%7D%27%20%3C%40%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajson" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -204,7 +204,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%40%3E%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -222,7 +222,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%40%3E%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -241,7 +241,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%3C%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -259,7 +259,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%3C%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -278,7 +278,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%3E%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -296,7 +296,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22b%22%3A2%7D%27%3A%3Ajsonb%20%3E%20%27%7B%22a%22%3A1%2C%20%22b%22%3A2%7D%27%3A%3Ajsonb" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -315,7 +315,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22a%22%3A2%2C%22c%22%3A%5B4%2C5%2C%7B%22f%22%3A7%7D%5D%7D%27%20-%3E%20%27%24.c%5B2%5D.f%27%20%3D%207" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -333,7 +333,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22a%22%3A2%2C%22c%22%3A%5B4%2C5%2C%7B%22f%22%3A7%7D%5D%7D%27%20-%3E%20%27%24.c%5B2%5D.f%27%20%3D%207" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -352,7 +352,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22a%22%3A2%2C%22c%22%3A%5B4%2C5%2C%7B%22f%22%3A7%7D%5D%7D%27%20%3C-%20%27%24.c%5B2%5D.f%27%20%3D%207" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -370,7 +370,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22a%22%3A2%2C%22c%22%3A%5B4%2C5%2C%7B%22f%22%3A7%7D%5D%7D%27%20%3C-%20%27%24.c%5B2%5D.f%27%20%3D%207" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -389,7 +389,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20json_extract%28%27%7B%22id%22%3A%2014%2C%20%22name%22%3A%20%22Aztalan%22%7D%27%2C%20%27%24.name%27%29%20%3D%20%27Aztalan%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -407,7 +407,7 @@ tests: method: GET port: 80 uri: "/get/OR%20json_extract%28%27%7B%22id%22%3A%2014%2C%20%22name%22%3A%20%22Aztalan%22%7D%27%2C%20%27%24.name%27%29%20%3D%20%27Aztalan%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -426,7 +426,7 @@ tests: port: 80 uri: "/post" data: "id=blah/%22%7D%27%20and%20data%20%40%3E%20%27%7B%22a%22%3A%22a%22%7D%27%20union%20select%20ASCII%28s.token%29%20from%20unnset%28string_to_array%28%28select%20cookie%20from%20cookie%20limit%201%20%29%2CNULL%29%29%20s%28token%29--/state" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -444,7 +444,7 @@ tests: method: GET port: 80 uri: "/get/blah/%22%7D%27%20and%20data%20%40%3E%20%27%7B%22a%22%3A%22a%22%7D%27%20union%20select%20ASCII%28s.token%29%20from%20unnset%28string_to_array%28%28select%20cookie%20from%20cookie%20limit%201%20%29%2CNULL%29%29%20s%28token%29--/state" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -463,7 +463,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22a%22%3A%22b%22%7D%27%20%3F%20%27a%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -481,7 +481,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22a%22%3A%22b%22%7D%27%20%3F%20%27a%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -500,7 +500,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%5B1%2C2%5D%27%20%3F%20%271%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -518,7 +518,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%5B1%2C2%5D%27%20%3F%20%271%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -537,7 +537,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22name%22%3A%22asd%22%7D%27%20%3F%7C%20array%5B%27a%27%2C%27name%27%5D" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -555,7 +555,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22name%22%3A%22asd%22%7D%27%20%3F%7C%20array%5B%27a%27%2C%27name%27%5D" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -574,7 +574,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22name%22%3A%22asd%22%7D%27%20%3F%26%20array%5B%27a%27%2C%27name%27%5D" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -592,7 +592,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22name%22%3A%22asd%22%7D%27%20%3F%26%20array%5B%27a%27%2C%27name%27%5D" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -611,7 +611,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%5B1%2C2%2C3%5D%27%3A%3Ajson%20-%3E%3E%202%3D%273%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -629,7 +629,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%5B1%2C2%2C3%5D%27%3A%3Ajson%20-%3E%3E%202%3D%273%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -648,7 +648,7 @@ tests: port: 80 uri: "/post" data: "id=OR%20%27%7B%22a%22%3A1%7D%27%3A%3Ajsonb%20%23%3E%20%27%7Ba%2Cb%7D%27%20%3F%20%27c%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] @@ -666,7 +666,7 @@ tests: method: GET port: 80 uri: "/get/OR%20%27%7B%22a%22%3A1%7D%27%3A%3Ajsonb%20%23%3E%20%27%7Ba%2Cb%7D%27%20%3F%20%27c%27" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942550] diff --git a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942560.yaml b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942560.yaml index 091b97236..67a8ccf78 100644 --- a/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942560.yaml +++ b/tests/regression/tests/REQUEST-942-APPLICATION-ATTACK-SQLI/942560.yaml @@ -17,7 +17,7 @@ tests: port: 80 uri: "/get" data: "email=1.e(ascii+1.e(substring(1.e(select+password+from+users+limit+1+1.e,1+1.e)+1.e,1+1.e,1+1.e)1.e)1.e)+=+70+or'1'='2" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942560] @@ -34,7 +34,7 @@ tests: port: 80 uri: "/post" data: "foo=1.e(ascii)" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [942560] diff --git a/tests/regression/tests/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION/943110.yaml b/tests/regression/tests/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION/943110.yaml index f0a02000d..0f108fe6f 100644 --- a/tests/regression/tests/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION/943110.yaml +++ b/tests/regression/tests/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION/943110.yaml @@ -38,7 +38,7 @@ tests: method: GET port: 80 uri: "/get?phpsessid=asdfdasfadsads" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [943110] @@ -55,7 +55,7 @@ tests: method: GET port: 80 uri: "/get?phpsessid=asdfdasfadsads" - version: HTTP/1.0 + version: HTTP/1.1 output: log: expect_ids: [943110] diff --git a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944000.yaml b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944000.yaml index 89a8f7567..a8885b74b 100644 --- a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944000.yaml +++ b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944000.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: en-us,en;q=0.5 Content-Type: "text/plain" method: POST - version: HTTP/1.0 + version: HTTP/1.1 uri: "/post" data: "test=value" output: diff --git a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944100.yaml b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944100.yaml index c1a60d1d6..1a4af67b7 100644 --- a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944100.yaml +++ b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944100.yaml @@ -18,7 +18,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=java.lang.Runtime" output: log: @@ -38,7 +38,7 @@ tests: Content-Type: "text/plain" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=java.lang.ProcessBuilder" output: log: @@ -58,7 +58,7 @@ tests: Content-Type: "text/plain" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "java.lang.Runtime=test" output: log: @@ -78,7 +78,7 @@ tests: Content-Type: "text/plain" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "java.lang.ProcessBuilder=test" output: log: @@ -99,7 +99,7 @@ tests: Cookie: test=java.lang.Runtime method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -120,7 +120,7 @@ tests: Cookie: test=java.lang.ProcessBuilder method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -141,7 +141,7 @@ tests: Cookie: java.lang.Runtime=test method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -162,7 +162,7 @@ tests: Cookie: java.lang.ProcessBuilder=test method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -183,7 +183,7 @@ tests: test: java.lang.Runtime method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -204,7 +204,7 @@ tests: test: java.lang.ProcessBuilder method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -224,7 +224,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "value" output: log: @@ -244,7 +244,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "element_value" output: log: @@ -264,7 +264,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "element_value" output: log: @@ -284,7 +284,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "java.lang.Runtime" output: log: @@ -304,7 +304,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "value" output: log: @@ -324,7 +324,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "element_value" output: log: @@ -344,7 +344,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "element_value" output: log: @@ -364,7 +364,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "java.lang.ProcessBuilder" output: log: diff --git a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944110.yaml b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944110.yaml index 7cf19d15c..05ead2869 100644 --- a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944110.yaml +++ b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944110.yaml @@ -18,7 +18,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=java.Runtime" output: log: @@ -38,7 +38,7 @@ tests: Content-Type: "text/plain" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=java.ProcessBuilder" output: log: @@ -58,7 +58,7 @@ tests: Content-Type: "text/plain" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "java.Runtime=test" output: log: @@ -78,7 +78,7 @@ tests: Content-Type: "text/plain" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "java.ProcessBuilder=test" output: log: @@ -99,7 +99,7 @@ tests: Cookie: test=java.Runtime method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -120,7 +120,7 @@ tests: Cookie: test=java.ProcessBuilder method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -141,7 +141,7 @@ tests: Cookie: java.Runtime=test method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -162,7 +162,7 @@ tests: Cookie: java.ProcessBuilder=test method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -183,7 +183,7 @@ tests: test: java.Runtime method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -204,7 +204,7 @@ tests: test: java.ProcessBuilder method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "test=value" output: log: @@ -224,7 +224,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "value" output: log: @@ -244,7 +244,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "element_value" output: log: @@ -264,7 +264,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "element_value" output: log: @@ -284,7 +284,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "java.Runtime" output: log: @@ -304,7 +304,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "value" output: log: @@ -324,7 +324,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "element_value" output: log: @@ -344,7 +344,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "element_value" output: log: @@ -364,7 +364,7 @@ tests: Content-Type: "application/xml" method: POST uri: "/post" - version: HTTP/1.0 + version: HTTP/1.1 data: "java.ProcessBuilder" output: log: diff --git a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944120.yaml b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944120.yaml index f4b8e75e1..406199ebe 100644 --- a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944120.yaml +++ b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944120.yaml @@ -19,7 +19,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.clonetransformer" output: log: @@ -39,7 +39,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.clonetransformer=test" output: log: @@ -60,7 +60,7 @@ tests: Cookie: test=ProcessBuilder.evil.clonetransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -81,7 +81,7 @@ tests: Cookie: ProcessBuilder.evil.clonetransformer=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -102,7 +102,7 @@ tests: test: ProcessBuilder.evil.clonetransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -122,7 +122,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -142,7 +142,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -162,7 +162,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -182,7 +182,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.clonetransformer" output: log: @@ -202,7 +202,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.clonetransformer" output: log: @@ -222,7 +222,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.clonetransformer" output: log: @@ -242,7 +242,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"ProcessBuilder.evil.clonetransformer\"}" output: log: @@ -262,7 +262,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"ProcessBuilder.evil.clonetransformer\": \"test\"}" output: log: @@ -282,7 +282,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -308,7 +308,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -334,7 +334,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -360,7 +360,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -386,7 +386,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.forclosure" output: log: @@ -406,7 +406,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.forclosure=test" output: log: @@ -427,7 +427,7 @@ tests: Cookie: test=ProcessBuilder.evil.forclosure method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -448,7 +448,7 @@ tests: Cookie: ProcessBuilder.evil.forclosure=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -469,7 +469,7 @@ tests: test: ProcessBuilder.evil.forclosure method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -489,7 +489,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -509,7 +509,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -529,7 +529,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -549,7 +549,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.forclosure" output: log: @@ -569,7 +569,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.forclosure" output: log: @@ -589,7 +589,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.forclosure" output: log: @@ -609,7 +609,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"ProcessBuilder.evil.forclosure\"}" output: log: @@ -629,7 +629,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"ProcessBuilder.evil.forclosure\": \"test\"}" output: log: @@ -649,7 +649,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -675,7 +675,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -701,7 +701,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -727,7 +727,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -753,7 +753,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.instantiatefactory" output: log: @@ -773,7 +773,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.instantiatefactory=test" output: log: @@ -794,7 +794,7 @@ tests: Cookie: test=ProcessBuilder.evil.instantiatefactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -815,7 +815,7 @@ tests: Cookie: ProcessBuilder.evil.instantiatefactory=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -836,7 +836,7 @@ tests: test: ProcessBuilder.evil.instantiatefactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -856,7 +856,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -876,7 +876,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -896,7 +896,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -916,7 +916,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.instantiatefactory" output: log: @@ -936,7 +936,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.instantiatefactory" output: log: @@ -956,7 +956,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.instantiatefactory" output: log: @@ -976,7 +976,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"ProcessBuilder.evil.instantiatefactory\"}" output: log: @@ -996,7 +996,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"ProcessBuilder.evil.instantiatefactory\": \"test\"}" output: log: @@ -1016,7 +1016,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1042,7 +1042,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1068,7 +1068,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1094,7 +1094,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1120,7 +1120,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.instantiatetransformer" output: log: @@ -1140,7 +1140,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.instantiatetransformer=test" output: log: @@ -1161,7 +1161,7 @@ tests: Cookie: test=ProcessBuilder.evil.instantiatetransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1182,7 +1182,7 @@ tests: Cookie: ProcessBuilder.evil.instantiatetransformer=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1203,7 +1203,7 @@ tests: test: ProcessBuilder.evil.instantiatetransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1223,7 +1223,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -1243,7 +1243,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1263,7 +1263,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1283,7 +1283,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.instantiatetransformer" output: log: @@ -1303,7 +1303,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.instantiatetransformer" output: log: @@ -1323,7 +1323,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.instantiatetransformer" output: log: @@ -1343,7 +1343,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"ProcessBuilder.evil.instantiatetransformer\"}" output: log: @@ -1363,7 +1363,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"ProcessBuilder.evil.instantiatetransformer\": \"test\"}" output: log: @@ -1383,7 +1383,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1409,7 +1409,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1435,7 +1435,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1461,7 +1461,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1487,7 +1487,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.invokertransformer" output: log: @@ -1507,7 +1507,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.invokertransformer=test" output: log: @@ -1528,7 +1528,7 @@ tests: Cookie: test=ProcessBuilder.evil.invokertransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1549,7 +1549,7 @@ tests: Cookie: ProcessBuilder.evil.invokertransformer=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1570,7 +1570,7 @@ tests: test: ProcessBuilder.evil.invokertransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1590,7 +1590,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -1610,7 +1610,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1630,7 +1630,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1650,7 +1650,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.invokertransformer" output: log: @@ -1670,7 +1670,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.invokertransformer" output: log: @@ -1690,7 +1690,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.invokertransformer" output: log: @@ -1710,7 +1710,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"ProcessBuilder.evil.invokertransformer\"}" output: log: @@ -1730,7 +1730,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"ProcessBuilder.evil.invokertransformer\": \"test\"}" output: log: @@ -1750,7 +1750,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1776,7 +1776,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1802,7 +1802,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1828,7 +1828,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1854,7 +1854,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.prototypeclonefactory" output: log: @@ -1874,7 +1874,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.prototypeclonefactory=test" output: log: @@ -1895,7 +1895,7 @@ tests: Cookie: test=ProcessBuilder.evil.prototypeclonefactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1916,7 +1916,7 @@ tests: Cookie: ProcessBuilder.evil.prototypeclonefactory=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1937,7 +1937,7 @@ tests: test: ProcessBuilder.evil.prototypeclonefactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1957,7 +1957,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -1977,7 +1977,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1997,7 +1997,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2017,7 +2017,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.prototypeclonefactory" output: log: @@ -2037,7 +2037,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.prototypeclonefactory" output: log: @@ -2057,7 +2057,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.prototypeclonefactory" output: log: @@ -2077,7 +2077,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"ProcessBuilder.evil.prototypeclonefactory\"}" output: log: @@ -2097,7 +2097,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"ProcessBuilder.evil.prototypeclonefactory\": \"test\"}" output: log: @@ -2117,7 +2117,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2143,7 +2143,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2169,7 +2169,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2195,7 +2195,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2221,7 +2221,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.prototypeserializationfactory" output: log: @@ -2241,7 +2241,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.prototypeserializationfactory=test" output: log: @@ -2262,7 +2262,7 @@ tests: Cookie: test=ProcessBuilder.evil.prototypeserializationfactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2283,7 +2283,7 @@ tests: Cookie: ProcessBuilder.evil.prototypeserializationfactory=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2304,7 +2304,7 @@ tests: test: ProcessBuilder.evil.prototypeserializationfactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2324,7 +2324,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -2344,7 +2344,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2364,7 +2364,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2384,7 +2384,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.prototypeserializationfactory" output: log: @@ -2404,7 +2404,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.prototypeserializationfactory" output: log: @@ -2424,7 +2424,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.prototypeserializationfactory" output: log: @@ -2444,7 +2444,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"ProcessBuilder.evil.prototypeserializationfactory\"}" output: log: @@ -2464,7 +2464,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"ProcessBuilder.evil.prototypeserializationfactory\": \"test\"}" output: log: @@ -2484,7 +2484,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2510,7 +2510,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2536,7 +2536,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2562,7 +2562,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2588,7 +2588,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.whileclosure" output: log: @@ -2608,7 +2608,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.whileclosure=test" output: log: @@ -2629,7 +2629,7 @@ tests: Cookie: test=ProcessBuilder.evil.whileclosure method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2650,7 +2650,7 @@ tests: Cookie: ProcessBuilder.evil.whileclosure=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2671,7 +2671,7 @@ tests: test: ProcessBuilder.evil.whileclosure method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2691,7 +2691,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -2711,7 +2711,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2731,7 +2731,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2751,7 +2751,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.whileclosure" output: log: @@ -2771,7 +2771,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "ProcessBuilder.evil.whileclosure" output: log: @@ -2791,7 +2791,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=ProcessBuilder.evil.whileclosure" output: log: @@ -2811,7 +2811,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | {"test": "ProcessBuilder.evil.whileclosure"} output: @@ -2832,7 +2832,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | {"ProcessBuilder.evil.whileclosure": "test"} output: @@ -2853,7 +2853,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2879,7 +2879,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2905,7 +2905,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -2931,7 +2931,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" diff --git a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944130.yaml b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944130.yaml index b08f7b265..0df6b9d7e 100644 --- a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944130.yaml +++ b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944130.yaml @@ -18,7 +18,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=com.opensymphony.xwork2" output: log: @@ -38,7 +38,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "com.opensymphony.xwork2=test" output: log: @@ -59,7 +59,7 @@ tests: Cookie: test=com.opensymphony.xwork2 method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -80,7 +80,7 @@ tests: Cookie: com.opensymphony.xwork2=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -101,7 +101,7 @@ tests: test: com.opensymphony.xwork2 method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -121,7 +121,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -141,7 +141,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "com.opensymphony.xwork2" output: log: @@ -161,7 +161,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "com.opensymphony.xwork2" output: log: @@ -181,7 +181,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=com.opensymphony.xwork2" output: log: @@ -201,7 +201,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"com.opensymphony.xwork2\"}" output: log: @@ -221,7 +221,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"com.opensymphony.xwork2\": \"test\"}" output: log: @@ -241,7 +241,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=com.sun.org.apache" output: log: @@ -261,7 +261,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "com.sun.org.apache=test" output: log: @@ -282,7 +282,7 @@ tests: Cookie: test=com.sun.org.apache method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -303,7 +303,7 @@ tests: Cookie: com.sun.org.apache=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -324,7 +324,7 @@ tests: test: com.sun.org.apache method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -344,7 +344,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -364,7 +364,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "com.sun.org.apache" output: log: @@ -384,7 +384,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "com.sun.org.apache" output: log: @@ -404,7 +404,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=com.sun.org.apache" output: log: @@ -424,7 +424,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"com.sun.org.apache\"}" output: log: @@ -444,7 +444,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"com.sun.org.apache\": \"test\"}" output: log: @@ -464,7 +464,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.BufferedInputStream" output: log: @@ -484,7 +484,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.BufferedInputStream=test" output: log: @@ -505,7 +505,7 @@ tests: Cookie: test=java.io.BufferedInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -526,7 +526,7 @@ tests: Cookie: java.io.BufferedInputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -547,7 +547,7 @@ tests: test: java.io.BufferedInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -567,7 +567,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -587,7 +587,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.BufferedInputStream" output: log: @@ -607,7 +607,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.BufferedInputStream" output: log: @@ -627,7 +627,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.BufferedInputStream" output: log: @@ -647,7 +647,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.BufferedInputStream\"}" output: log: @@ -667,7 +667,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.BufferedInputStream\": \"test\"}" output: log: @@ -687,7 +687,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.BufferedReader" output: log: @@ -707,7 +707,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.BufferedReader=test" output: log: @@ -728,7 +728,7 @@ tests: Cookie: test=java.io.BufferedReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -749,7 +749,7 @@ tests: Cookie: java.io.BufferedReader=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -770,7 +770,7 @@ tests: test: java.io.BufferedReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -790,7 +790,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -810,7 +810,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.BufferedReader" output: log: @@ -830,7 +830,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.BufferedReader" output: log: @@ -850,7 +850,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.BufferedReader" output: log: @@ -870,7 +870,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.BufferedReader\"}" output: log: @@ -890,7 +890,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.BufferedReader\": \"test\"}" output: log: @@ -910,7 +910,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.ByteArrayInputStream" output: log: @@ -930,7 +930,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.ByteArrayInputStream=test" output: log: @@ -951,7 +951,7 @@ tests: Cookie: test=java.io.ByteArrayInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -972,7 +972,7 @@ tests: Cookie: java.io.ByteArrayInputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -993,7 +993,7 @@ tests: test: java.io.ByteArrayInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1013,7 +1013,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1033,7 +1033,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.ByteArrayInputStream" output: log: @@ -1053,7 +1053,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.ByteArrayInputStream" output: log: @@ -1073,7 +1073,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.ByteArrayInputStream" output: log: @@ -1093,7 +1093,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.ByteArrayInputStream\"}" output: log: @@ -1113,7 +1113,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.ByteArrayInputStream\": \"test\"}" output: log: @@ -1133,7 +1133,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.ByteArrayOutputStream" output: log: @@ -1153,7 +1153,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.ByteArrayOutputStream=test" output: log: @@ -1174,7 +1174,7 @@ tests: Cookie: test=java.io.ByteArrayOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1195,7 +1195,7 @@ tests: Cookie: java.io.ByteArrayOutputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1216,7 +1216,7 @@ tests: test: java.io.ByteArrayOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1236,7 +1236,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1256,7 +1256,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.ByteArrayOutputStream" output: log: @@ -1276,7 +1276,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.ByteArrayOutputStream" output: log: @@ -1296,7 +1296,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.ByteArrayOutputStream" output: log: @@ -1316,7 +1316,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.ByteArrayOutputStream\"}" output: log: @@ -1336,7 +1336,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.ByteArrayOutputStream\": \"test\"}" output: log: @@ -1356,7 +1356,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.CharArrayReader" output: log: @@ -1376,7 +1376,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.CharArrayReader=test" output: log: @@ -1397,7 +1397,7 @@ tests: Cookie: test=java.io.CharArrayReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1418,7 +1418,7 @@ tests: Cookie: java.io.CharArrayReader=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1439,7 +1439,7 @@ tests: test: java.io.CharArrayReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1459,7 +1459,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1479,7 +1479,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.CharArrayReader" output: log: @@ -1499,7 +1499,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.CharArrayReader" output: log: @@ -1519,7 +1519,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.CharArrayReader" output: log: @@ -1539,7 +1539,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.CharArrayReader\"}" output: log: @@ -1559,7 +1559,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.CharArrayReader\": \"test\"}" output: log: @@ -1579,7 +1579,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.DataInputStream" output: log: @@ -1599,7 +1599,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.DataInputStream=test" output: log: @@ -1620,7 +1620,7 @@ tests: Cookie: test=java.io.DataInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1641,7 +1641,7 @@ tests: Cookie: java.io.DataInputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1662,7 +1662,7 @@ tests: test: java.io.DataInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1682,7 +1682,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1702,7 +1702,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.DataInputStream" output: log: @@ -1722,7 +1722,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.DataInputStream" output: log: @@ -1742,7 +1742,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.DataInputStream" output: log: @@ -1762,7 +1762,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.DataInputStream\"}" output: log: @@ -1782,7 +1782,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.DataInputStream\": \"test\"}" output: log: @@ -1802,7 +1802,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.File" output: log: @@ -1822,7 +1822,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.File=test" output: log: @@ -1843,7 +1843,7 @@ tests: Cookie: test=java.io.File method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1864,7 +1864,7 @@ tests: Cookie: java.io.File=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1885,7 +1885,7 @@ tests: test: java.io.File method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1905,7 +1905,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1925,7 +1925,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.File" output: log: @@ -1945,7 +1945,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.File" output: log: @@ -1965,7 +1965,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.File" output: log: @@ -1985,7 +1985,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.File\"}" output: log: @@ -2005,7 +2005,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.File\": \"test\"}" output: log: @@ -2025,7 +2025,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.FileOutputStream" output: log: @@ -2045,7 +2045,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FileOutputStream=test" output: log: @@ -2066,7 +2066,7 @@ tests: Cookie: test=java.io.FileOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2087,7 +2087,7 @@ tests: Cookie: java.io.FileOutputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2108,7 +2108,7 @@ tests: test: java.io.FileOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2128,7 +2128,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2148,7 +2148,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FileOutputStream" output: log: @@ -2168,7 +2168,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FileOutputStream" output: log: @@ -2188,7 +2188,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.FileOutputStream" output: log: @@ -2208,7 +2208,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.FileOutputStream\"}" output: log: @@ -2228,7 +2228,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.FileOutputStream\": \"test\"}" output: log: @@ -2248,7 +2248,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.FilterInputStream" output: log: @@ -2268,7 +2268,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FilterInputStream=test" output: log: @@ -2289,7 +2289,7 @@ tests: Cookie: test=java.io.FilterInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2310,7 +2310,7 @@ tests: Cookie: java.io.FilterInputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2331,7 +2331,7 @@ tests: test: java.io.FilterInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2351,7 +2351,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2371,7 +2371,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FilterInputStream" output: log: @@ -2391,7 +2391,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FilterInputStream" output: log: @@ -2411,7 +2411,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.FilterInputStream" output: log: @@ -2431,7 +2431,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.FilterInputStream\"}" output: log: @@ -2451,7 +2451,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.FilterInputStream\": \"test\"}" output: log: @@ -2471,7 +2471,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.FilterOutputStream" output: log: @@ -2491,7 +2491,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FilterOutputStream=test" output: log: @@ -2512,7 +2512,7 @@ tests: Cookie: test=java.io.FilterOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2533,7 +2533,7 @@ tests: Cookie: java.io.FilterOutputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2554,7 +2554,7 @@ tests: test: java.io.FilterOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2574,7 +2574,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2594,7 +2594,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FilterOutputStream" output: log: @@ -2614,7 +2614,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FilterOutputStream" output: log: @@ -2634,7 +2634,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.FilterOutputStream" output: log: @@ -2654,7 +2654,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.FilterOutputStream\"}" output: log: @@ -2674,7 +2674,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.FilterOutputStream\": \"test\"}" output: log: @@ -2694,7 +2694,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.FilterReader" output: log: @@ -2714,7 +2714,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FilterReader=test" output: log: @@ -2735,7 +2735,7 @@ tests: Cookie: test=java.io.FilterReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2756,7 +2756,7 @@ tests: Cookie: java.io.FilterReader=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2777,7 +2777,7 @@ tests: test: java.io.FilterReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2797,7 +2797,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2817,7 +2817,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FilterReader" output: log: @@ -2837,7 +2837,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.FilterReader" output: log: @@ -2857,7 +2857,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.FilterReader" output: log: @@ -2877,7 +2877,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.FilterReader\"}" output: log: @@ -2897,7 +2897,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.FilterReader\": \"test\"}" output: log: @@ -2917,7 +2917,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.InputStream" output: log: @@ -2937,7 +2937,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.InputStream=test" output: log: @@ -2958,7 +2958,7 @@ tests: Cookie: test=java.io.InputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -2979,7 +2979,7 @@ tests: Cookie: java.io.InputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3000,7 +3000,7 @@ tests: test: java.io.InputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3020,7 +3020,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -3040,7 +3040,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.InputStream" output: log: @@ -3060,7 +3060,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.InputStream" output: log: @@ -3080,7 +3080,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.InputStream" output: log: @@ -3100,7 +3100,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.InputStream\"}" output: log: @@ -3120,7 +3120,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.InputStream\": \"test\"}" output: log: @@ -3140,7 +3140,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.InputStreamReader" output: log: @@ -3160,7 +3160,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.InputStreamReader=test" output: log: @@ -3181,7 +3181,7 @@ tests: Cookie: test=java.io.InputStreamReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3202,7 +3202,7 @@ tests: Cookie: java.io.InputStreamReader=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3223,7 +3223,7 @@ tests: test: java.io.InputStreamReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3243,7 +3243,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -3263,7 +3263,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.InputStreamReader" output: log: @@ -3283,7 +3283,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.InputStreamReader" output: log: @@ -3303,7 +3303,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.InputStreamReader" output: log: @@ -3323,7 +3323,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.InputStreamReader\"}" output: log: @@ -3343,7 +3343,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.InputStreamReader\": \"test\"}" output: log: @@ -3363,7 +3363,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.LineNumberReader" output: log: @@ -3383,7 +3383,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.LineNumberReader=test" output: log: @@ -3404,7 +3404,7 @@ tests: Cookie: test=java.io.LineNumberReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3425,7 +3425,7 @@ tests: Cookie: java.io.LineNumberReader=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3446,7 +3446,7 @@ tests: test: java.io.LineNumberReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3466,7 +3466,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -3486,7 +3486,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.LineNumberReader" output: log: @@ -3506,7 +3506,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.LineNumberReader" output: log: @@ -3526,7 +3526,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.LineNumberReader" output: log: @@ -3546,7 +3546,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.LineNumberReader\"}" output: log: @@ -3566,7 +3566,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.LineNumberReader\": \"test\"}" output: log: @@ -3586,7 +3586,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.ObjectOutputStream" output: log: @@ -3606,7 +3606,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.ObjectOutputStream=test" output: log: @@ -3627,7 +3627,7 @@ tests: Cookie: test=java.io.ObjectOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3648,7 +3648,7 @@ tests: Cookie: java.io.ObjectOutputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3669,7 +3669,7 @@ tests: test: java.io.ObjectOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3689,7 +3689,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -3709,7 +3709,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.ObjectOutputStream" output: log: @@ -3729,7 +3729,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.ObjectOutputStream" output: log: @@ -3749,7 +3749,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.ObjectOutputStream" output: log: @@ -3769,7 +3769,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.ObjectOutputStream\"}" output: log: @@ -3789,7 +3789,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.ObjectOutputStream\": \"test\"}" output: log: @@ -3809,7 +3809,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.OutputStream" output: log: @@ -3829,7 +3829,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.OutputStream=test" output: log: @@ -3850,7 +3850,7 @@ tests: Cookie: test=java.io.OutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3871,7 +3871,7 @@ tests: Cookie: java.io.OutputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3892,7 +3892,7 @@ tests: test: java.io.OutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -3912,7 +3912,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -3932,7 +3932,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.OutputStream" output: log: @@ -3952,7 +3952,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.OutputStream" output: log: @@ -3972,7 +3972,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.OutputStream" output: log: @@ -3992,7 +3992,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.OutputStream\"}" output: log: @@ -4012,7 +4012,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.OutputStream\": \"test\"}" output: log: @@ -4032,7 +4032,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.PipedOutputStream" output: log: @@ -4052,7 +4052,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PipedOutputStream=test" output: log: @@ -4073,7 +4073,7 @@ tests: Cookie: test=java.io.PipedOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4094,7 +4094,7 @@ tests: Cookie: java.io.PipedOutputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4115,7 +4115,7 @@ tests: test: java.io.PipedOutputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4135,7 +4135,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -4155,7 +4155,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PipedOutputStream" output: log: @@ -4175,7 +4175,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PipedOutputStream" output: log: @@ -4195,7 +4195,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.PipedOutputStream" output: log: @@ -4215,7 +4215,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.PipedOutputStream\"}" output: log: @@ -4235,7 +4235,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.PipedOutputStream\": \"test\"}" output: log: @@ -4255,7 +4255,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.PipedReader" output: log: @@ -4275,7 +4275,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PipedReader=test" output: log: @@ -4296,7 +4296,7 @@ tests: Cookie: test=java.io.PipedReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4317,7 +4317,7 @@ tests: Cookie: java.io.PipedReader=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4338,7 +4338,7 @@ tests: test: java.io.PipedReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4358,7 +4358,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -4378,7 +4378,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PipedReader" output: log: @@ -4398,7 +4398,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PipedReader" output: log: @@ -4418,7 +4418,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.PipedReader" output: log: @@ -4438,7 +4438,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.PipedReader\"}" output: log: @@ -4458,7 +4458,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.PipedReader\": \"test\"}" output: log: @@ -4478,7 +4478,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.PrintStream" output: log: @@ -4498,7 +4498,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PrintStream=test" output: log: @@ -4519,7 +4519,7 @@ tests: Cookie: test=java.io.PrintStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4540,7 +4540,7 @@ tests: Cookie: java.io.PrintStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4561,7 +4561,7 @@ tests: test: java.io.PrintStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4581,7 +4581,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -4601,7 +4601,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PrintStream" output: log: @@ -4621,7 +4621,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PrintStream" output: log: @@ -4641,7 +4641,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.PrintStream" output: log: @@ -4661,7 +4661,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.PrintStream\"}" output: log: @@ -4681,7 +4681,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.PrintStream\": \"test\"}" output: log: @@ -4701,7 +4701,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.PushbackInputStream" output: log: @@ -4721,7 +4721,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PushbackInputStream=test" output: log: @@ -4742,7 +4742,7 @@ tests: Cookie: test=java.io.PushbackInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4763,7 +4763,7 @@ tests: Cookie: java.io.PushbackInputStream=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4784,7 +4784,7 @@ tests: test: java.io.PushbackInputStream method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4804,7 +4804,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -4824,7 +4824,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PushbackInputStream" output: log: @@ -4844,7 +4844,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.PushbackInputStream" output: log: @@ -4864,7 +4864,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.PushbackInputStream" output: log: @@ -4884,7 +4884,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.PushbackInputStream\"}" output: log: @@ -4904,7 +4904,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.PushbackInputStream\": \"test\"}" output: log: @@ -4924,7 +4924,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.Reader" output: log: @@ -4944,7 +4944,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.Reader=test" output: log: @@ -4965,7 +4965,7 @@ tests: Cookie: test=java.io.Reader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -4986,7 +4986,7 @@ tests: Cookie: java.io.Reader=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5007,7 +5007,7 @@ tests: test: java.io.Reader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5027,7 +5027,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -5047,7 +5047,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.Reader" output: log: @@ -5067,7 +5067,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.Reader" output: log: @@ -5087,7 +5087,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.Reader" output: log: @@ -5107,7 +5107,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.Reader\"}" output: log: @@ -5127,7 +5127,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.Reader\": \"test\"}" output: log: @@ -5147,7 +5147,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.StringReader" output: log: @@ -5167,7 +5167,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.StringReader=test" output: log: @@ -5188,7 +5188,7 @@ tests: Cookie: test=java.io.StringReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5209,7 +5209,7 @@ tests: Cookie: java.io.StringReader=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5230,7 +5230,7 @@ tests: test: java.io.StringReader method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5250,7 +5250,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -5270,7 +5270,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.StringReader" output: log: @@ -5290,7 +5290,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.io.StringReader" output: log: @@ -5310,7 +5310,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.io.StringReader" output: log: @@ -5330,7 +5330,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.io.StringReader\"}" output: log: @@ -5350,7 +5350,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.io.StringReader\": \"test\"}" output: log: @@ -5370,7 +5370,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Class" output: log: @@ -5390,7 +5390,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Class=test" output: log: @@ -5411,7 +5411,7 @@ tests: Cookie: test=java.lang.Class method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5432,7 +5432,7 @@ tests: Cookie: java.lang.Class=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5453,7 +5453,7 @@ tests: test: java.lang.Class method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5473,7 +5473,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -5493,7 +5493,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Class" output: log: @@ -5513,7 +5513,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Class" output: log: @@ -5533,7 +5533,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Class" output: log: @@ -5553,7 +5553,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.Class\"}" output: log: @@ -5573,7 +5573,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.Class\": \"test\"}" output: log: @@ -5593,7 +5593,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Integer" output: log: @@ -5613,7 +5613,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Integer=test" output: log: @@ -5634,7 +5634,7 @@ tests: Cookie: test=java.lang.Integer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5655,7 +5655,7 @@ tests: Cookie: java.lang.Integer=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5676,7 +5676,7 @@ tests: test: java.lang.Integer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5696,7 +5696,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -5716,7 +5716,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Integer" output: log: @@ -5736,7 +5736,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Integer" output: log: @@ -5756,7 +5756,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Integer" output: log: @@ -5776,7 +5776,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.Integer\"}" output: log: @@ -5796,7 +5796,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.Integer\": \"test\"}" output: log: @@ -5816,7 +5816,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Number" output: log: @@ -5836,7 +5836,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Number=test" output: log: @@ -5857,7 +5857,7 @@ tests: Cookie: test=java.lang.Number method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5878,7 +5878,7 @@ tests: Cookie: java.lang.Number=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5899,7 +5899,7 @@ tests: test: java.lang.Number method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -5919,7 +5919,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -5939,7 +5939,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Number" output: log: @@ -5959,7 +5959,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Number" output: log: @@ -5979,7 +5979,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Number" output: log: @@ -5999,7 +5999,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.Number\"}" output: log: @@ -6019,7 +6019,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.Number\": \"test\"}" output: log: @@ -6039,7 +6039,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Object" output: log: @@ -6059,7 +6059,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Object=test" output: log: @@ -6080,7 +6080,7 @@ tests: Cookie: test=java.lang.Object method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6101,7 +6101,7 @@ tests: Cookie: java.lang.Object=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6122,7 +6122,7 @@ tests: test: java.lang.Object method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6142,7 +6142,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -6162,7 +6162,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Object" output: log: @@ -6182,7 +6182,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Object" output: log: @@ -6202,7 +6202,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Object" output: log: @@ -6222,7 +6222,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.Object\"}" output: log: @@ -6242,7 +6242,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.Object\": \"test\"}" output: log: @@ -6262,7 +6262,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Process" output: log: @@ -6282,7 +6282,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Process=test" output: log: @@ -6303,7 +6303,7 @@ tests: Cookie: test=java.lang.Process method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6324,7 +6324,7 @@ tests: Cookie: java.lang.Process=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6345,7 +6345,7 @@ tests: test: java.lang.Process method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6365,7 +6365,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -6385,7 +6385,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Process" output: log: @@ -6405,7 +6405,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Process" output: log: @@ -6425,7 +6425,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Process" output: log: @@ -6445,7 +6445,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.Process\"}" output: log: @@ -6465,7 +6465,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.Process\": \"test\"}" output: log: @@ -6485,7 +6485,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.ProcessBuilder" output: log: @@ -6505,7 +6505,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.ProcessBuilder=test" output: log: @@ -6526,7 +6526,7 @@ tests: Cookie: test=java.lang.ProcessBuilder method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6547,7 +6547,7 @@ tests: Cookie: java.lang.ProcessBuilder=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6568,7 +6568,7 @@ tests: test: java.lang.ProcessBuilder method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6588,7 +6588,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -6608,7 +6608,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.ProcessBuilder" output: log: @@ -6628,7 +6628,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.ProcessBuilder" output: log: @@ -6648,7 +6648,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.ProcessBuilder" output: log: @@ -6668,7 +6668,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.ProcessBuilder\"}" output: log: @@ -6688,7 +6688,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.ProcessBuilder\": \"test\"}" output: log: @@ -6708,7 +6708,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.reflect" output: log: @@ -6728,7 +6728,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.reflect=test" output: log: @@ -6749,7 +6749,7 @@ tests: Cookie: test=java.lang.reflect method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6770,7 +6770,7 @@ tests: Cookie: java.lang.reflect=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6791,7 +6791,7 @@ tests: test: java.lang.reflect method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6811,7 +6811,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -6831,7 +6831,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.reflect" output: log: @@ -6851,7 +6851,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.reflect" output: log: @@ -6871,7 +6871,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.reflect" output: log: @@ -6891,7 +6891,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.reflect\"}" output: log: @@ -6911,7 +6911,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.reflect\": \"test\"}" output: log: @@ -6931,7 +6931,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Runtime" output: log: @@ -6951,7 +6951,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Runtime=test" output: log: @@ -6972,7 +6972,7 @@ tests: Cookie: test=java.lang.Runtime method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -6993,7 +6993,7 @@ tests: Cookie: java.lang.Runtime=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7014,7 +7014,7 @@ tests: test: java.lang.Runtime method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7034,7 +7034,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -7054,7 +7054,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Runtime" output: log: @@ -7074,7 +7074,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.Runtime" output: log: @@ -7094,7 +7094,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.Runtime" output: log: @@ -7114,7 +7114,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.Runtime\"}" output: log: @@ -7134,7 +7134,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.Runtime\": \"test\"}" output: log: @@ -7154,7 +7154,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.String" output: log: @@ -7174,7 +7174,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.String=test" output: log: @@ -7195,7 +7195,7 @@ tests: Cookie: test=java.lang.String method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7216,7 +7216,7 @@ tests: Cookie: java.lang.String=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7237,7 +7237,7 @@ tests: test: java.lang.String method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7257,7 +7257,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -7277,7 +7277,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.String" output: log: @@ -7297,7 +7297,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.String" output: log: @@ -7317,7 +7317,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.String" output: log: @@ -7337,7 +7337,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.String\"}" output: log: @@ -7357,7 +7357,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.String\": \"test\"}" output: log: @@ -7377,7 +7377,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.StringBuilder" output: log: @@ -7397,7 +7397,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.StringBuilder=test" output: log: @@ -7418,7 +7418,7 @@ tests: Cookie: test=java.lang.StringBuilder method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7439,7 +7439,7 @@ tests: Cookie: java.lang.StringBuilder=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7460,7 +7460,7 @@ tests: test: java.lang.StringBuilder method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7480,7 +7480,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -7500,7 +7500,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.StringBuilder" output: log: @@ -7520,7 +7520,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.StringBuilder" output: log: @@ -7540,7 +7540,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.StringBuilder" output: log: @@ -7560,7 +7560,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.StringBuilder\"}" output: log: @@ -7580,7 +7580,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.StringBuilder\": \"test\"}" output: log: @@ -7600,7 +7600,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.System" output: log: @@ -7620,7 +7620,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.System=test" output: log: @@ -7641,7 +7641,7 @@ tests: Cookie: test=java.lang.System method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7662,7 +7662,7 @@ tests: Cookie: java.lang.System=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7683,7 +7683,7 @@ tests: test: java.lang.System method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7703,7 +7703,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -7723,7 +7723,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.System" output: log: @@ -7743,7 +7743,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.lang.System" output: log: @@ -7763,7 +7763,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.lang.System" output: log: @@ -7783,7 +7783,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.lang.System\"}" output: log: @@ -7803,7 +7803,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.lang.System\": \"test\"}" output: log: @@ -7823,7 +7823,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=javax.script.ScriptEngineManager" output: log: @@ -7843,7 +7843,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "javax.script.ScriptEngineManager=test" output: log: @@ -7864,7 +7864,7 @@ tests: Cookie: test=javax.script.ScriptEngineManager method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7885,7 +7885,7 @@ tests: Cookie: javax.script.ScriptEngineManager=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7906,7 +7906,7 @@ tests: test: javax.script.ScriptEngineManager method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -7926,7 +7926,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -7946,7 +7946,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "javax.script.ScriptEngineManager" output: log: @@ -7966,7 +7966,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "javax.script.ScriptEngineManager" output: log: @@ -7986,7 +7986,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=javax.script.ScriptEngineManager" output: log: @@ -8006,7 +8006,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"javax.script.ScriptEngineManager\"}" output: log: @@ -8026,7 +8026,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"javax.script.ScriptEngineManager\": \"test\"}" output: log: @@ -8046,7 +8046,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=org.apache.commons" output: log: @@ -8066,7 +8066,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "org.apache.commons=test" output: log: @@ -8087,7 +8087,7 @@ tests: Cookie: test=org.apache.commons method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -8108,7 +8108,7 @@ tests: Cookie: org.apache.commons=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -8129,7 +8129,7 @@ tests: test: org.apache.commons method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -8149,7 +8149,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -8169,7 +8169,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "org.apache.commons" output: log: @@ -8189,7 +8189,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "org.apache.commons" output: log: @@ -8209,7 +8209,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=org.apache.commons" output: log: @@ -8229,7 +8229,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"org.apache.commons\"}" output: log: @@ -8249,7 +8249,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"org.apache.commons\": \"test\"}" output: log: @@ -8269,7 +8269,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=org.omg.CORBA" output: log: @@ -8289,7 +8289,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "org.omg.CORBA=test" output: log: @@ -8310,7 +8310,7 @@ tests: Cookie: test=org.omg.CORBA method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -8331,7 +8331,7 @@ tests: Cookie: org.omg.CORBA=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -8352,7 +8352,7 @@ tests: test: org.omg.CORBA method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -8372,7 +8372,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -8392,7 +8392,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "org.omg.CORBA" output: log: @@ -8412,7 +8412,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "org.omg.CORBA" output: log: @@ -8432,7 +8432,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=org.omg.CORBA" output: log: @@ -8452,7 +8452,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"org.omg.CORBA\"}" output: log: @@ -8472,7 +8472,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"org.omg.CORBA\": \"test\"}" output: log: diff --git a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944210.yaml b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944210.yaml index 8aa888914..8546f4614 100644 --- a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944210.yaml +++ b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944210.yaml @@ -18,7 +18,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=rO0ABQ" output: log: @@ -38,7 +38,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "rO0ABQ=test" output: log: @@ -59,7 +59,7 @@ tests: Cookie: test=rO0ABQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -80,7 +80,7 @@ tests: Cookie: rO0ABQ=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -101,7 +101,7 @@ tests: test: rO0ABQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -121,7 +121,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -141,7 +141,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -161,7 +161,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -181,7 +181,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "rO0ABQ" output: log: @@ -201,7 +201,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "rO0ABQ" output: log: @@ -221,7 +221,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=rO0ABQ" output: log: @@ -241,7 +241,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"rO0ABQ\"}" output: log: @@ -261,7 +261,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"rO0ABQ\": \"test\"}" output: log: @@ -281,7 +281,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -307,7 +307,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -333,7 +333,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -359,7 +359,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -385,7 +385,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=KztAAU" output: log: @@ -405,7 +405,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "KztAAU=test" output: log: @@ -426,7 +426,7 @@ tests: Cookie: test=KztAAU method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -447,7 +447,7 @@ tests: Cookie: KztAAU=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -468,7 +468,7 @@ tests: test: KztAAU method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -488,7 +488,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -508,7 +508,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -528,7 +528,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -548,7 +548,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "KztAAU" output: log: @@ -568,7 +568,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "KztAAU" output: log: @@ -588,7 +588,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=KztAAU" output: log: @@ -608,7 +608,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"KztAAU\"}" output: log: @@ -628,7 +628,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"KztAAU\": \"test\"}" output: log: @@ -648,7 +648,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -674,7 +674,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -700,7 +700,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -726,7 +726,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -752,7 +752,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Cs7QAF" output: log: @@ -772,7 +772,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Cs7QAF=test" output: log: @@ -793,7 +793,7 @@ tests: Cookie: test=Cs7QAF method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -814,7 +814,7 @@ tests: Cookie: Cs7QAF=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -835,7 +835,7 @@ tests: test: Cs7QAF method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -855,7 +855,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "value" output: log: @@ -875,7 +875,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -895,7 +895,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -915,7 +915,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Cs7QAF" output: log: @@ -935,7 +935,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Cs7QAF" output: log: @@ -955,7 +955,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Cs7QAF" output: log: @@ -975,7 +975,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Cs7QAF\"}" output: log: @@ -995,7 +995,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Cs7QAF\": \"test\"}" output: log: @@ -1015,7 +1015,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1041,7 +1041,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1067,7 +1067,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" @@ -1093,7 +1093,7 @@ tests: Content-Type: "multipart/form-data; boundary=---------------------------thisissparta" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: | -----------------------------thisissparta Content-Disposition: form-data; name="payload" diff --git a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944240.yaml b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944240.yaml index 7d5a2ef38..68dd37850 100644 --- a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944240.yaml +++ b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944240.yaml @@ -18,7 +18,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.clonetransformer" output: log: @@ -38,7 +38,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.clonetransformer=test" output: log: @@ -59,7 +59,7 @@ tests: Cookie: test=runtime.clonetransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -80,7 +80,7 @@ tests: Cookie: runtime.clonetransformer=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -101,7 +101,7 @@ tests: test: runtime.clonetransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -121,7 +121,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -141,7 +141,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.clonetransformer" output: log: @@ -161,7 +161,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.clonetransformer" output: log: @@ -181,7 +181,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.clonetransformer" output: log: @@ -201,7 +201,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"runtime.clonetransformer\"}" output: log: @@ -221,7 +221,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"runtime.clonetransformer\": \"test\"}" output: log: @@ -241,7 +241,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.forclosure" output: log: @@ -261,7 +261,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.forclosure=test" output: log: @@ -282,7 +282,7 @@ tests: Cookie: test=runtime.forclosure method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -303,7 +303,7 @@ tests: Cookie: runtime.forclosure=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -324,7 +324,7 @@ tests: test: runtime.forclosure method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -344,7 +344,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -364,7 +364,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.forclosure" output: log: @@ -384,7 +384,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.forclosure" output: log: @@ -404,7 +404,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.forclosure" output: log: @@ -424,7 +424,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"runtime.forclosure\"}" output: log: @@ -444,7 +444,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"runtime.forclosure\": \"test\"}" output: log: @@ -464,7 +464,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.instantiatefactory" output: log: @@ -484,7 +484,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.instantiatefactory=test" output: log: @@ -505,7 +505,7 @@ tests: Cookie: test=runtime.instantiatefactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -526,7 +526,7 @@ tests: Cookie: runtime.instantiatefactory=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -547,7 +547,7 @@ tests: test: runtime.instantiatefactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -567,7 +567,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -587,7 +587,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.instantiatefactory" output: log: @@ -607,7 +607,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.instantiatefactory" output: log: @@ -627,7 +627,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.instantiatefactory" output: log: @@ -647,7 +647,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"runtime.instantiatefactory\"}" output: log: @@ -667,7 +667,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"runtime.instantiatefactory\": \"test\"}" output: log: @@ -687,7 +687,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.instantiatetransformer" output: log: @@ -707,7 +707,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.instantiatetransformer=test" output: log: @@ -728,7 +728,7 @@ tests: Cookie: test=runtime.instantiatetransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -749,7 +749,7 @@ tests: Cookie: runtime.instantiatetransformer=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -770,7 +770,7 @@ tests: test: runtime.instantiatetransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -790,7 +790,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -810,7 +810,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.instantiatetransformer" output: log: @@ -830,7 +830,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.instantiatetransformer" output: log: @@ -850,7 +850,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.instantiatetransformer" output: log: @@ -870,7 +870,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"runtime.instantiatetransformer\"}" output: log: @@ -890,7 +890,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"runtime.instantiatetransformer\": \"test\"}" output: log: @@ -910,7 +910,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.invokertransformer" output: log: @@ -930,7 +930,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.invokertransformer=test" output: log: @@ -951,7 +951,7 @@ tests: Cookie: test=runtime.invokertransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -972,7 +972,7 @@ tests: Cookie: runtime.invokertransformer=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -993,7 +993,7 @@ tests: test: runtime.invokertransformer method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1013,7 +1013,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1033,7 +1033,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.invokertransformer" output: log: @@ -1053,7 +1053,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.invokertransformer" output: log: @@ -1073,7 +1073,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.invokertransformer" output: log: @@ -1093,7 +1093,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"runtime.invokertransformer\"}" output: log: @@ -1113,7 +1113,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"runtime.invokertransformer\": \"test\"}" output: log: @@ -1133,7 +1133,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.prototypeclonefactory" output: log: @@ -1153,7 +1153,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.prototypeclonefactory=test" output: log: @@ -1174,7 +1174,7 @@ tests: Cookie: test=runtime.prototypeclonefactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1195,7 +1195,7 @@ tests: Cookie: runtime.prototypeclonefactory=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1216,7 +1216,7 @@ tests: test: runtime.prototypeclonefactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1236,7 +1236,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1256,7 +1256,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.prototypeclonefactory" output: log: @@ -1276,7 +1276,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.prototypeclonefactory" output: log: @@ -1296,7 +1296,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.prototypeclonefactory" output: log: @@ -1316,7 +1316,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"runtime.prototypeclonefactory\"}" output: log: @@ -1336,7 +1336,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"runtime.prototypeclonefactory\": \"test\"}" output: log: @@ -1356,7 +1356,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.prototypeserializationfactory" output: log: @@ -1376,7 +1376,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.prototypeserializationfactory=test" output: log: @@ -1397,7 +1397,7 @@ tests: Cookie: test=runtime.prototypeserializationfactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1418,7 +1418,7 @@ tests: Cookie: runtime.prototypeserializationfactory=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1439,7 +1439,7 @@ tests: test: runtime.prototypeserializationfactory method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1459,7 +1459,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1479,7 +1479,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.prototypeserializationfactory" output: log: @@ -1499,7 +1499,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.prototypeserializationfactory" output: log: @@ -1519,7 +1519,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.prototypeserializationfactory" output: log: @@ -1539,7 +1539,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"runtime.prototypeserializationfactory\"}" output: log: @@ -1559,7 +1559,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"runtime.prototypeserializationfactory\": \"test\"}" output: log: @@ -1579,7 +1579,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.whileclosure" output: log: @@ -1599,7 +1599,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.whileclosure=test" output: log: @@ -1620,7 +1620,7 @@ tests: Cookie: test=runtime.whileclosure method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1641,7 +1641,7 @@ tests: Cookie: runtime.whileclosure=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1662,7 +1662,7 @@ tests: test: runtime.whileclosure method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -1682,7 +1682,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1702,7 +1702,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.whileclosure" output: log: @@ -1722,7 +1722,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "runtime.whileclosure" output: log: @@ -1742,7 +1742,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=runtime.whileclosure" output: log: @@ -1762,7 +1762,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"runtime.whileclosure\"}" output: log: @@ -1782,7 +1782,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"runtime.whileclosure\": \"test\"}" output: log: diff --git a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944250.yaml b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944250.yaml index b9aa24729..4b2d387e4 100644 --- a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944250.yaml +++ b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944250.yaml @@ -18,7 +18,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.evil.runtime" output: log: @@ -38,7 +38,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.evil.runtime=test" output: log: @@ -59,7 +59,7 @@ tests: Cookie: test=java.evil.runtime method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -80,7 +80,7 @@ tests: Cookie: java.evil.runtime=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -101,7 +101,7 @@ tests: test: java.evil.runtime method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -121,7 +121,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -141,7 +141,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.evil.runtime" output: log: @@ -161,7 +161,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.evil.runtime" output: log: @@ -181,7 +181,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.evil.runtime" output: log: @@ -201,7 +201,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.evil.runtime\"}" output: log: @@ -221,7 +221,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.evil.runtime\": \"test\"}" output: log: @@ -241,7 +241,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.evil.processbuilder" output: log: @@ -261,7 +261,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.evil.processbuilder=test" output: log: @@ -282,7 +282,7 @@ tests: Cookie: test=java.evil.processbuilder method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -303,7 +303,7 @@ tests: Cookie: java.evil.processbuilder=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -324,7 +324,7 @@ tests: test: java.evil.processbuilder method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=value" output: log: @@ -344,7 +344,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -364,7 +364,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.evil.processbuilder" output: log: @@ -384,7 +384,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "java.evil.processbuilder" output: log: @@ -404,7 +404,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=java.evil.processbuilder" output: log: @@ -424,7 +424,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"java.evil.processbuilder\"}" output: log: @@ -444,7 +444,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"java.evil.processbuilder\": \"test\"}" output: log: diff --git a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944300.yaml b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944300.yaml index 9ab732eb5..c49f7c84b 100644 --- a/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944300.yaml +++ b/tests/regression/tests/REQUEST-944-APPLICATION-ATTACK-JAVA/944300.yaml @@ -18,7 +18,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=cnVudGltZQ" output: log: @@ -38,7 +38,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cnVudGltZQ=test" output: log: @@ -59,7 +59,7 @@ tests: Cookie: test=cnVudGltZQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -79,7 +79,7 @@ tests: Cookie: cnVudGltZQ=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -99,7 +99,7 @@ tests: test: cnVudGltZQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -118,7 +118,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -138,7 +138,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cnVudGltZQ" output: log: @@ -158,7 +158,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cnVudGltZQ" output: log: @@ -178,7 +178,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=cnVudGltZQ" output: log: @@ -198,7 +198,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"cnVudGltZQ\"}" output: log: @@ -218,7 +218,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"cnVudGltZQ\": \"test\"}" output: log: @@ -238,7 +238,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HJ1bnRpbWU" output: log: @@ -258,7 +258,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HJ1bnRpbWU=test" output: log: @@ -279,7 +279,7 @@ tests: Cookie: test=HJ1bnRpbWU method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -299,7 +299,7 @@ tests: Cookie: HJ1bnRpbWU=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -319,7 +319,7 @@ tests: test: HJ1bnRpbWU method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -338,7 +338,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -358,7 +358,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HJ1bnRpbWU" output: log: @@ -378,7 +378,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HJ1bnRpbWU" output: log: @@ -398,7 +398,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HJ1bnRpbWU" output: log: @@ -418,7 +418,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"HJ1bnRpbWU\"}" output: log: @@ -438,7 +438,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"HJ1bnRpbWU\": \"test\"}" output: log: @@ -458,7 +458,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BydW50aW1l" output: log: @@ -478,7 +478,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BydW50aW1l=test" output: log: @@ -499,7 +499,7 @@ tests: Cookie: test=BydW50aW1l method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -519,7 +519,7 @@ tests: Cookie: BydW50aW1l=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -539,7 +539,7 @@ tests: test: BydW50aW1l method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -558,7 +558,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -578,7 +578,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BydW50aW1l" output: log: @@ -598,7 +598,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BydW50aW1l" output: log: @@ -618,7 +618,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BydW50aW1l" output: log: @@ -638,7 +638,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"BydW50aW1l\"}" output: log: @@ -658,7 +658,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"BydW50aW1l\": \"test\"}" output: log: @@ -678,7 +678,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=cHJvY2Vzc2J1aWxkZXI" output: log: @@ -698,7 +698,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cHJvY2Vzc2J1aWxkZXI=test" output: log: @@ -719,7 +719,7 @@ tests: Cookie: test=cHJvY2Vzc2J1aWxkZXI method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -739,7 +739,7 @@ tests: Cookie: cHJvY2Vzc2J1aWxkZXI=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -759,7 +759,7 @@ tests: test: cHJvY2Vzc2J1aWxkZXI method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -778,7 +778,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -798,7 +798,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cHJvY2Vzc2J1aWxkZXI" output: log: @@ -818,7 +818,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cHJvY2Vzc2J1aWxkZXI" output: log: @@ -838,7 +838,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=cHJvY2Vzc2J1aWxkZXI" output: log: @@ -858,7 +858,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"cHJvY2Vzc2J1aWxkZXI\"}" output: log: @@ -878,7 +878,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"cHJvY2Vzc2J1aWxkZXI\": \"test\"}" output: log: @@ -898,7 +898,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HByb2Nlc3NidWlsZGVy" output: log: @@ -918,7 +918,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HByb2Nlc3NidWlsZGVy=test" output: log: @@ -939,7 +939,7 @@ tests: Cookie: test=HByb2Nlc3NidWlsZGVy method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -959,7 +959,7 @@ tests: Cookie: HByb2Nlc3NidWlsZGVy=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -979,7 +979,7 @@ tests: test: HByb2Nlc3NidWlsZGVy method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -998,7 +998,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1018,7 +1018,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HByb2Nlc3NidWlsZGVy" output: log: @@ -1038,7 +1038,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HByb2Nlc3NidWlsZGVy" output: log: @@ -1058,7 +1058,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HByb2Nlc3NidWlsZGVy" output: log: @@ -1078,7 +1078,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"HByb2Nlc3NidWlsZGVy\"}" output: log: @@ -1098,7 +1098,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"HByb2Nlc3NidWlsZGVy\": \"test\"}" output: log: @@ -1118,7 +1118,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Bwcm9jZXNzYnVpbGRlcg" output: log: @@ -1138,7 +1138,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bwcm9jZXNzYnVpbGRlcg=test" output: log: @@ -1159,7 +1159,7 @@ tests: Cookie: test=Bwcm9jZXNzYnVpbGRlcg method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1179,7 +1179,7 @@ tests: Cookie: Bwcm9jZXNzYnVpbGRlcg=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1199,7 +1199,7 @@ tests: test: Bwcm9jZXNzYnVpbGRlcg method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1218,7 +1218,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1238,7 +1238,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bwcm9jZXNzYnVpbGRlcg" output: log: @@ -1258,7 +1258,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bwcm9jZXNzYnVpbGRlcg" output: log: @@ -1278,7 +1278,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Bwcm9jZXNzYnVpbGRlcg" output: log: @@ -1298,7 +1298,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Bwcm9jZXNzYnVpbGRlcg\"}" output: log: @@ -1318,7 +1318,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Bwcm9jZXNzYnVpbGRlcg\": \"test\"}" output: log: @@ -1338,7 +1338,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Y2xvbmV0cmFuc2Zvcm1lcg" output: log: @@ -1358,7 +1358,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Y2xvbmV0cmFuc2Zvcm1lcg=test" output: log: @@ -1379,7 +1379,7 @@ tests: Cookie: test=Y2xvbmV0cmFuc2Zvcm1lcg method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1399,7 +1399,7 @@ tests: Cookie: Y2xvbmV0cmFuc2Zvcm1lcg=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1419,7 +1419,7 @@ tests: test: Y2xvbmV0cmFuc2Zvcm1lcg method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1438,7 +1438,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1458,7 +1458,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Y2xvbmV0cmFuc2Zvcm1lcg" output: log: @@ -1478,7 +1478,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Y2xvbmV0cmFuc2Zvcm1lcg" output: log: @@ -1498,7 +1498,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Y2xvbmV0cmFuc2Zvcm1lcg" output: log: @@ -1518,7 +1518,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Y2xvbmV0cmFuc2Zvcm1lcg\"}" output: log: @@ -1538,7 +1538,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Y2xvbmV0cmFuc2Zvcm1lcg\": \"test\"}" output: log: @@ -1558,7 +1558,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=GNsb25ldHJhbnNmb3JtZXI" output: log: @@ -1578,7 +1578,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "GNsb25ldHJhbnNmb3JtZXI=test" output: log: @@ -1599,7 +1599,7 @@ tests: Cookie: test=GNsb25ldHJhbnNmb3JtZXI method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1619,7 +1619,7 @@ tests: Cookie: GNsb25ldHJhbnNmb3JtZXI=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1639,7 +1639,7 @@ tests: test: GNsb25ldHJhbnNmb3JtZXI method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1658,7 +1658,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1678,7 +1678,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "GNsb25ldHJhbnNmb3JtZXI" output: log: @@ -1698,7 +1698,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "GNsb25ldHJhbnNmb3JtZXI" output: log: @@ -1718,7 +1718,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=GNsb25ldHJhbnNmb3JtZXI" output: log: @@ -1738,7 +1738,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"GNsb25ldHJhbnNmb3JtZXI\"}" output: log: @@ -1758,7 +1758,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"GNsb25ldHJhbnNmb3JtZXI\": \"test\"}" output: log: @@ -1778,7 +1778,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BjbG9uZXRyYW5zZm9ybWVy" output: log: @@ -1798,7 +1798,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BjbG9uZXRyYW5zZm9ybWVy=test" output: log: @@ -1819,7 +1819,7 @@ tests: Cookie: test=BjbG9uZXRyYW5zZm9ybWVy method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1839,7 +1839,7 @@ tests: Cookie: BjbG9uZXRyYW5zZm9ybWVy=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1859,7 +1859,7 @@ tests: test: BjbG9uZXRyYW5zZm9ybWVy method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -1878,7 +1878,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -1898,7 +1898,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BjbG9uZXRyYW5zZm9ybWVy" output: log: @@ -1918,7 +1918,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BjbG9uZXRyYW5zZm9ybWVy" output: log: @@ -1938,7 +1938,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BjbG9uZXRyYW5zZm9ybWVy" output: log: @@ -1958,7 +1958,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"BjbG9uZXRyYW5zZm9ybWVy\"}" output: log: @@ -1978,7 +1978,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"BjbG9uZXRyYW5zZm9ybWVy\": \"test\"}" output: log: @@ -1998,7 +1998,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Zm9yY2xvc3VyZQ" output: log: @@ -2018,7 +2018,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Zm9yY2xvc3VyZQ=test" output: log: @@ -2039,7 +2039,7 @@ tests: Cookie: test=Zm9yY2xvc3VyZQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2059,7 +2059,7 @@ tests: Cookie: Zm9yY2xvc3VyZQ=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2079,7 +2079,7 @@ tests: test: Zm9yY2xvc3VyZQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2098,7 +2098,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2118,7 +2118,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Zm9yY2xvc3VyZQ" output: log: @@ -2138,7 +2138,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Zm9yY2xvc3VyZQ" output: log: @@ -2158,7 +2158,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Zm9yY2xvc3VyZQ" output: log: @@ -2178,7 +2178,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Zm9yY2xvc3VyZQ\"}" output: log: @@ -2198,7 +2198,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Zm9yY2xvc3VyZQ\": \"test\"}" output: log: @@ -2218,7 +2218,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=GZvcmNsb3N1cmU" output: log: @@ -2238,7 +2238,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "GZvcmNsb3N1cmU=test" output: log: @@ -2259,7 +2259,7 @@ tests: Cookie: test=GZvcmNsb3N1cmU method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2279,7 +2279,7 @@ tests: Cookie: GZvcmNsb3N1cmU=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2299,7 +2299,7 @@ tests: test: GZvcmNsb3N1cmU method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2318,7 +2318,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2338,7 +2338,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "GZvcmNsb3N1cmU" output: log: @@ -2358,7 +2358,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "GZvcmNsb3N1cmU" output: log: @@ -2378,7 +2378,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=GZvcmNsb3N1cmU" output: log: @@ -2398,7 +2398,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"GZvcmNsb3N1cmU\"}" output: log: @@ -2418,7 +2418,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"GZvcmNsb3N1cmU\": \"test\"}" output: log: @@ -2438,7 +2438,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Bmb3JjbG9zdXJl" output: log: @@ -2458,7 +2458,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bmb3JjbG9zdXJl=test" output: log: @@ -2479,7 +2479,7 @@ tests: Cookie: test=Bmb3JjbG9zdXJl method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2499,7 +2499,7 @@ tests: Cookie: Bmb3JjbG9zdXJl=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2519,7 +2519,7 @@ tests: test: Bmb3JjbG9zdXJl method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2538,7 +2538,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2558,7 +2558,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bmb3JjbG9zdXJl" output: log: @@ -2578,7 +2578,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bmb3JjbG9zdXJl" output: log: @@ -2598,7 +2598,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Bmb3JjbG9zdXJl" output: log: @@ -2618,7 +2618,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Bmb3JjbG9zdXJl\"}" output: log: @@ -2638,7 +2638,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Bmb3JjbG9zdXJl\": \"test\"}" output: log: @@ -2658,7 +2658,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=aW5zdGFudGlhdGVmYWN0b3J5" output: log: @@ -2678,7 +2678,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "aW5zdGFudGlhdGVmYWN0b3J5=test" output: log: @@ -2699,7 +2699,7 @@ tests: Cookie: test=aW5zdGFudGlhdGVmYWN0b3J5 method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2719,7 +2719,7 @@ tests: Cookie: aW5zdGFudGlhdGVmYWN0b3J5=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2739,7 +2739,7 @@ tests: test: aW5zdGFudGlhdGVmYWN0b3J5 method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2758,7 +2758,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2778,7 +2778,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "aW5zdGFudGlhdGVmYWN0b3J5" output: log: @@ -2798,7 +2798,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "aW5zdGFudGlhdGVmYWN0b3J5" output: log: @@ -2818,7 +2818,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=aW5zdGFudGlhdGVmYWN0b3J5" output: log: @@ -2838,7 +2838,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"aW5zdGFudGlhdGVmYWN0b3J5\"}" output: log: @@ -2858,7 +2858,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"aW5zdGFudGlhdGVmYWN0b3J5\": \"test\"}" output: log: @@ -2878,7 +2878,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Gluc3RhbnRpYXRlZmFjdG9yeQ" output: log: @@ -2898,7 +2898,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Gluc3RhbnRpYXRlZmFjdG9yeQ=test" output: log: @@ -2919,7 +2919,7 @@ tests: Cookie: test=Gluc3RhbnRpYXRlZmFjdG9yeQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2939,7 +2939,7 @@ tests: Cookie: Gluc3RhbnRpYXRlZmFjdG9yeQ=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2959,7 +2959,7 @@ tests: test: Gluc3RhbnRpYXRlZmFjdG9yeQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -2978,7 +2978,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -2998,7 +2998,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Gluc3RhbnRpYXRlZmFjdG9yeQ" output: log: @@ -3018,7 +3018,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Gluc3RhbnRpYXRlZmFjdG9yeQ" output: log: @@ -3038,7 +3038,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Gluc3RhbnRpYXRlZmFjdG9yeQ" output: log: @@ -3058,7 +3058,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Gluc3RhbnRpYXRlZmFjdG9yeQ\"}" output: log: @@ -3078,7 +3078,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Gluc3RhbnRpYXRlZmFjdG9yeQ\": \"test\"}" output: log: @@ -3098,7 +3098,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BpbnN0YW50aWF0ZWZhY3Rvcnk" output: log: @@ -3118,7 +3118,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BpbnN0YW50aWF0ZWZhY3Rvcnk=test" output: log: @@ -3139,7 +3139,7 @@ tests: Cookie: test=BpbnN0YW50aWF0ZWZhY3Rvcnk method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3159,7 +3159,7 @@ tests: Cookie: BpbnN0YW50aWF0ZWZhY3Rvcnk=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3179,7 +3179,7 @@ tests: test: BpbnN0YW50aWF0ZWZhY3Rvcnk method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3198,7 +3198,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -3218,7 +3218,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BpbnN0YW50aWF0ZWZhY3Rvcnk" output: log: @@ -3238,7 +3238,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BpbnN0YW50aWF0ZWZhY3Rvcnk" output: log: @@ -3258,7 +3258,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BpbnN0YW50aWF0ZWZhY3Rvcnk" output: log: @@ -3278,7 +3278,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"BpbnN0YW50aWF0ZWZhY3Rvcnk\"}" output: log: @@ -3298,7 +3298,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"BpbnN0YW50aWF0ZWZhY3Rvcnk\": \"test\"}" output: log: @@ -3318,7 +3318,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg" output: log: @@ -3338,7 +3338,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg=test" output: log: @@ -3359,7 +3359,7 @@ tests: Cookie: test=aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3379,7 +3379,7 @@ tests: Cookie: aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3399,7 +3399,7 @@ tests: test: aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3418,7 +3418,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -3438,7 +3438,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg" output: log: @@ -3458,7 +3458,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg" output: log: @@ -3478,7 +3478,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg" output: log: @@ -3498,7 +3498,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg\"}" output: log: @@ -3518,7 +3518,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"aW5zdGFudGlhdGV0cmFuc2Zvcm1lcg\": \"test\"}" output: log: @@ -3538,7 +3538,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Gluc3RhbnRpYXRldHJhbnNmb3JtZXI" output: log: @@ -3558,7 +3558,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Gluc3RhbnRpYXRldHJhbnNmb3JtZXI=test" output: log: @@ -3579,7 +3579,7 @@ tests: Cookie: test=Gluc3RhbnRpYXRldHJhbnNmb3JtZXI method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3599,7 +3599,7 @@ tests: Cookie: Gluc3RhbnRpYXRldHJhbnNmb3JtZXI=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3619,7 +3619,7 @@ tests: test: Gluc3RhbnRpYXRldHJhbnNmb3JtZXI method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3638,7 +3638,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -3658,7 +3658,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Gluc3RhbnRpYXRldHJhbnNmb3JtZXI" output: log: @@ -3678,7 +3678,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Gluc3RhbnRpYXRldHJhbnNmb3JtZXI" output: log: @@ -3698,7 +3698,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Gluc3RhbnRpYXRldHJhbnNmb3JtZXI" output: log: @@ -3718,7 +3718,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Gluc3RhbnRpYXRldHJhbnNmb3JtZXI\"}" output: log: @@ -3738,7 +3738,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Gluc3RhbnRpYXRldHJhbnNmb3JtZXI\": \"test\"}" output: log: @@ -3758,7 +3758,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy" output: log: @@ -3778,7 +3778,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy=test" output: log: @@ -3799,7 +3799,7 @@ tests: Cookie: test=BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3819,7 +3819,7 @@ tests: Cookie: BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3839,7 +3839,7 @@ tests: test: BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -3858,7 +3858,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -3878,7 +3878,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy" output: log: @@ -3898,7 +3898,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy" output: log: @@ -3918,7 +3918,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy" output: log: @@ -3938,7 +3938,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy\"}" output: log: @@ -3958,7 +3958,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"BpbnN0YW50aWF0ZXRyYW5zZm9ybWVy\": \"test\"}" output: log: @@ -3978,7 +3978,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=aW52b2tlcnRyYW5zZm9ybWVy" output: log: @@ -3998,7 +3998,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "aW52b2tlcnRyYW5zZm9ybWVy=test" output: log: @@ -4019,7 +4019,7 @@ tests: Cookie: test=aW52b2tlcnRyYW5zZm9ybWVy method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4039,7 +4039,7 @@ tests: Cookie: aW52b2tlcnRyYW5zZm9ybWVy=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4059,7 +4059,7 @@ tests: test: aW52b2tlcnRyYW5zZm9ybWVy method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4078,7 +4078,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -4098,7 +4098,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "aW52b2tlcnRyYW5zZm9ybWVy" output: log: @@ -4118,7 +4118,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "aW52b2tlcnRyYW5zZm9ybWVy" output: log: @@ -4138,7 +4138,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=aW52b2tlcnRyYW5zZm9ybWVy" output: log: @@ -4158,7 +4158,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"aW52b2tlcnRyYW5zZm9ybWVy\"}" output: log: @@ -4178,7 +4178,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"aW52b2tlcnRyYW5zZm9ybWVy\": \"test\"}" output: log: @@ -4198,7 +4198,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Gludm9rZXJ0cmFuc2Zvcm1lcg" output: log: @@ -4218,7 +4218,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Gludm9rZXJ0cmFuc2Zvcm1lcg=test" output: log: @@ -4239,7 +4239,7 @@ tests: Cookie: test=Gludm9rZXJ0cmFuc2Zvcm1lcg method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4259,7 +4259,7 @@ tests: Cookie: Gludm9rZXJ0cmFuc2Zvcm1lcg=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4279,7 +4279,7 @@ tests: test: Gludm9rZXJ0cmFuc2Zvcm1lcg method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4298,7 +4298,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -4318,7 +4318,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Gludm9rZXJ0cmFuc2Zvcm1lcg" output: log: @@ -4338,7 +4338,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Gludm9rZXJ0cmFuc2Zvcm1lcg" output: log: @@ -4358,7 +4358,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Gludm9rZXJ0cmFuc2Zvcm1lcg" output: log: @@ -4378,7 +4378,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Gludm9rZXJ0cmFuc2Zvcm1lcg\"}" output: log: @@ -4398,7 +4398,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Gludm9rZXJ0cmFuc2Zvcm1lcg\": \"test\"}" output: log: @@ -4418,7 +4418,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BpbnZva2VydHJhbnNmb3JtZXI" output: log: @@ -4438,7 +4438,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BpbnZva2VydHJhbnNmb3JtZXI=test" output: log: @@ -4459,7 +4459,7 @@ tests: Cookie: test=BpbnZva2VydHJhbnNmb3JtZXI method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4479,7 +4479,7 @@ tests: Cookie: BpbnZva2VydHJhbnNmb3JtZXI=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4499,7 +4499,7 @@ tests: test: BpbnZva2VydHJhbnNmb3JtZXI method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4518,7 +4518,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -4538,7 +4538,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BpbnZva2VydHJhbnNmb3JtZXI" output: log: @@ -4558,7 +4558,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "BpbnZva2VydHJhbnNmb3JtZXI" output: log: @@ -4578,7 +4578,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=BpbnZva2VydHJhbnNmb3JtZXI" output: log: @@ -4598,7 +4598,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"BpbnZva2VydHJhbnNmb3JtZXI\"}" output: log: @@ -4618,7 +4618,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"BpbnZva2VydHJhbnNmb3JtZXI\": \"test\"}" output: log: @@ -4638,7 +4638,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=cHJvdG90eXBlY2xvbmVmYWN0b3J5" output: log: @@ -4658,7 +4658,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cHJvdG90eXBlY2xvbmVmYWN0b3J5=test" output: log: @@ -4679,7 +4679,7 @@ tests: Cookie: test=cHJvdG90eXBlY2xvbmVmYWN0b3J5 method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4699,7 +4699,7 @@ tests: Cookie: cHJvdG90eXBlY2xvbmVmYWN0b3J5=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4719,7 +4719,7 @@ tests: test: cHJvdG90eXBlY2xvbmVmYWN0b3J5 method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4738,7 +4738,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -4758,7 +4758,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cHJvdG90eXBlY2xvbmVmYWN0b3J5" output: log: @@ -4778,7 +4778,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cHJvdG90eXBlY2xvbmVmYWN0b3J5" output: log: @@ -4798,7 +4798,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=cHJvdG90eXBlY2xvbmVmYWN0b3J5" output: log: @@ -4818,7 +4818,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"cHJvdG90eXBlY2xvbmVmYWN0b3J5\"}" output: log: @@ -4838,7 +4838,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"cHJvdG90eXBlY2xvbmVmYWN0b3J5\": \"test\"}" output: log: @@ -4858,7 +4858,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HByb3RvdHlwZWNsb25lZmFjdG9yeQ" output: log: @@ -4878,7 +4878,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HByb3RvdHlwZWNsb25lZmFjdG9yeQ=test" output: log: @@ -4899,7 +4899,7 @@ tests: Cookie: test=HByb3RvdHlwZWNsb25lZmFjdG9yeQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4919,7 +4919,7 @@ tests: Cookie: HByb3RvdHlwZWNsb25lZmFjdG9yeQ=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4939,7 +4939,7 @@ tests: test: HByb3RvdHlwZWNsb25lZmFjdG9yeQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -4958,7 +4958,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -4978,7 +4978,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HByb3RvdHlwZWNsb25lZmFjdG9yeQ" output: log: @@ -4998,7 +4998,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HByb3RvdHlwZWNsb25lZmFjdG9yeQ" output: log: @@ -5018,7 +5018,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HByb3RvdHlwZWNsb25lZmFjdG9yeQ" output: log: @@ -5038,7 +5038,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"HByb3RvdHlwZWNsb25lZmFjdG9yeQ\"}" output: log: @@ -5058,7 +5058,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"HByb3RvdHlwZWNsb25lZmFjdG9yeQ\": \"test\"}" output: log: @@ -5078,7 +5078,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk" output: log: @@ -5098,7 +5098,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk=test" output: log: @@ -5119,7 +5119,7 @@ tests: Cookie: test=Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5139,7 +5139,7 @@ tests: Cookie: Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5159,7 +5159,7 @@ tests: test: Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5178,7 +5178,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -5198,7 +5198,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk" output: log: @@ -5218,7 +5218,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk" output: log: @@ -5238,7 +5238,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk" output: log: @@ -5258,7 +5258,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk\"}" output: log: @@ -5278,7 +5278,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Bwcm90b3R5cGVjbG9uZWZhY3Rvcnk\": \"test\"}" output: log: @@ -5298,7 +5298,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk" output: log: @@ -5318,7 +5318,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk=test" output: log: @@ -5339,7 +5339,7 @@ tests: Cookie: test=cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5359,7 +5359,7 @@ tests: Cookie: cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5379,7 +5379,7 @@ tests: test: cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5398,7 +5398,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -5418,7 +5418,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk" output: log: @@ -5438,7 +5438,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk" output: log: @@ -5458,7 +5458,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk" output: log: @@ -5478,7 +5478,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk\"}" output: log: @@ -5498,7 +5498,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"cHJvdG90eXBlc2VyaWFsaXphdGlvbmZhY3Rvcnk\": \"test\"}" output: log: @@ -5518,7 +5518,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5" output: log: @@ -5538,7 +5538,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5=test" output: log: @@ -5559,7 +5559,7 @@ tests: Cookie: test=HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5 method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5579,7 +5579,7 @@ tests: Cookie: HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5599,7 +5599,7 @@ tests: test: HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5 method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5618,7 +5618,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -5638,7 +5638,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5" output: log: @@ -5658,7 +5658,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5" output: log: @@ -5678,7 +5678,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5" output: log: @@ -5698,7 +5698,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5\"}" output: log: @@ -5718,7 +5718,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"HByb3RvdHlwZXNlcmlhbGl6YXRpb25mYWN0b3J5\": \"test\"}" output: log: @@ -5738,7 +5738,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ" output: log: @@ -5758,7 +5758,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ=test" output: log: @@ -5779,7 +5779,7 @@ tests: Cookie: test=Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5799,7 +5799,7 @@ tests: Cookie: Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5819,7 +5819,7 @@ tests: test: Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -5838,7 +5838,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -5858,7 +5858,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ" output: log: @@ -5878,7 +5878,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ" output: log: @@ -5898,7 +5898,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ" output: log: @@ -5918,7 +5918,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ\"}" output: log: @@ -5938,7 +5938,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"Bwcm90b3R5cGVzZXJpYWxpemF0aW9uZmFjdG9yeQ\": \"test\"}" output: log: @@ -5958,7 +5958,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=d2hpbGVjbG9zdXJl" output: log: @@ -5978,7 +5978,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "d2hpbGVjbG9zdXJl=test" output: log: @@ -5999,7 +5999,7 @@ tests: Cookie: test=d2hpbGVjbG9zdXJl method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -6019,7 +6019,7 @@ tests: Cookie: d2hpbGVjbG9zdXJl=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -6039,7 +6039,7 @@ tests: test: d2hpbGVjbG9zdXJl method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -6058,7 +6058,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -6078,7 +6078,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "d2hpbGVjbG9zdXJl" output: log: @@ -6098,7 +6098,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "d2hpbGVjbG9zdXJl" output: log: @@ -6118,7 +6118,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=d2hpbGVjbG9zdXJl" output: log: @@ -6138,7 +6138,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"d2hpbGVjbG9zdXJl\"}" output: log: @@ -6158,7 +6158,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"d2hpbGVjbG9zdXJl\": \"test\"}" output: log: @@ -6178,7 +6178,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HdoaWxlY2xvc3VyZQ" output: log: @@ -6198,7 +6198,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HdoaWxlY2xvc3VyZQ=test" output: log: @@ -6219,7 +6219,7 @@ tests: Cookie: test=HdoaWxlY2xvc3VyZQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -6239,7 +6239,7 @@ tests: Cookie: HdoaWxlY2xvc3VyZQ=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -6259,7 +6259,7 @@ tests: test: HdoaWxlY2xvc3VyZQ method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -6278,7 +6278,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -6298,7 +6298,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HdoaWxlY2xvc3VyZQ" output: log: @@ -6318,7 +6318,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "HdoaWxlY2xvc3VyZQ" output: log: @@ -6338,7 +6338,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=HdoaWxlY2xvc3VyZQ" output: log: @@ -6358,7 +6358,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"HdoaWxlY2xvc3VyZQ\"}" output: log: @@ -6378,7 +6378,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"HdoaWxlY2xvc3VyZQ\": \"test\"}" output: log: @@ -6398,7 +6398,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=B3aGlsZWNsb3N1cmU" output: log: @@ -6418,7 +6418,7 @@ tests: Content-Type: "application/x-www-form-urlencoded" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "B3aGlsZWNsb3N1cmU=test" output: log: @@ -6439,7 +6439,7 @@ tests: Cookie: test=B3aGlsZWNsb3N1cmU method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -6459,7 +6459,7 @@ tests: Cookie: B3aGlsZWNsb3N1cmU=test method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -6479,7 +6479,7 @@ tests: test: B3aGlsZWNsb3N1cmU method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" output: log: expect_ids: [944300] @@ -6498,7 +6498,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "element_value" output: log: @@ -6518,7 +6518,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "B3aGlsZWNsb3N1cmU" output: log: @@ -6538,7 +6538,7 @@ tests: Content-Type: "application/xml" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "B3aGlsZWNsb3N1cmU" output: log: @@ -6558,7 +6558,7 @@ tests: Content-Type: "text/plain" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "test=B3aGlsZWNsb3N1cmU" output: log: @@ -6578,7 +6578,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"test\": \"B3aGlsZWNsb3N1cmU\"}" output: log: @@ -6598,7 +6598,7 @@ tests: Content-Type: "application/json" method: "POST" uri: "/post" - version: "HTTP/1.0" + version: "HTTP/1.1" data: "{\"B3aGlsZWNsb3N1cmU\": \"test\"}" output: log: diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951110.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951110.yaml index cf9e40a07..e20fe685e 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951110.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951110.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body":"[match sql-errors.data]the used select statements have different number of columns[/match]: [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951120.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951120.yaml index 84bc18f98..7423157a0 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951120.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951120.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: SQL Error: ORA-00933: SQL command not properly ended"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951130.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951130.yaml index beb26bbef..a06fe1273 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951130.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951130.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=DECLARE"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951140.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951140.yaml index 25fcdcf04..940b7bf38 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951140.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951140.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: [DM_QUERY_E_SYNTAX]error: \"A Parser Error (syntax error) has occurred in the vicinity of: select * from dm_folder where folder in\""} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951150.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951150.yaml index 161aaea10..eccad76bd 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951150.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951150.yaml @@ -18,7 +18,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: Dynamic SQL Error"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951160.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951160.yaml index c92333950..929f24a55 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951160.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951160.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: SQL-status: HY000 [FrontBase Inc.][FrontBase ODBC]Semantic error 217. Datatypes are not comparable or don't match. Semantic error 485. Near: SELECT DISTINCT * FROM SALES WHERE DATE>='2014-04-01';. Semantic error 485. Near: '2014-04-01'. Exception 363. Transaction rollback."} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951170.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951170.yaml index 85bcf4ac6..d527bacc2 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951170.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951170.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951180.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951180.yaml index 57f2cdc95..0d964851d 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951180.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951180.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: Exception in thread \"main\" java.sql.SQLException: An illegal character has been found in the statement."} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951190.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951190.yaml index d717ef4f3..3ddea0095 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951190.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951190.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: [5000A] [Actian][Ingres ODBC Driver][Ingres]Delimited identifier starting with '' contains no valid characters. (6692) (SQLExecDirectW)"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951200.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951200.yaml index ee8a31012..dbd97981b 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951200.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951200.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: Unexpected end of command in statement [SELECT * FROM INTO WHERE 'place'='xxxxxxx' AND 'yielddate' BETWEEN '01/11/2012' AND '29/11/2012''']."} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951210.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951210.yaml index 28239707b..b472e644a 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951210.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951210.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: Warning: maxdb_query(): -8004 POS(62) Constant must be compatible with column type and length"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951220.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951220.yaml index b66b43f98..e304fe604 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951220.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951220.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: PHP Warning: mssql_query(): message: Incorrect syntax near 's'. (severity 15) in /Volumes/Data/Users/username/Desktop/createXML.php on line 375"} @@ -38,7 +38,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: Conversion failed when converting the varchar value 'secret' to data type int."} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951230.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951230.yaml index ee66a9da0..c8f48667e 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951230.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951230.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: ERROR 1772 (HY000): Malformed GTID set specification 'secret_password'."} @@ -38,7 +38,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: ERROR 1105 (HY000): XPATH syntax error: '\\secret'"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951240.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951240.yaml index 802915fd3..532d85ffb 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951240.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951240.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: Warning: pg_query(): supplied argument is not a valid PostgreSQL link resource in /var/www/sivusto/handler.php on line 56"} @@ -38,7 +38,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: ERROR: invalid input syntax for integer"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951250.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951250.yaml index ebc1c439d..44e5cc97a 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951250.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951250.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: Warning: SQLite3::query() [sqlite3.query]: 1 values for 2 columns in /mysite/product.php on line 94"} diff --git a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951260.yaml b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951260.yaml index 852a60793..9a207ba7a 100644 --- a/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951260.yaml +++ b/tests/regression/tests/RESPONSE-951-DATA-LEAKAGES-SQL/951260.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "[match sql-errors.data]the used select statements have different number of columns[/match]: Warning: Sybase: Server message: Changed database context to 'rdhiman'. (severity 10, procedure N/A) in guestfatch.php on line 10"} diff --git a/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953100.yaml b/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953100.yaml index 18149c32e..11c863ca9 100644 --- a/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953100.yaml +++ b/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953100.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "text/plain" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "Maximum allowed file size is 10 MB" output: @@ -37,7 +37,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "text/plain" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "Invalid date selected" output: @@ -57,7 +57,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "text/plain" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "please review the function" output: @@ -77,7 +77,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "text/plain" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "This is a static function" output: @@ -97,7 +97,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "text/plain" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/post" data: "Field cannot be empty." output: diff --git a/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953101.yaml b/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953101.yaml index abb4ceb62..81b1d1c71 100644 --- a/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953101.yaml +++ b/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953101.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "Maximum allowed file size is 10 MB"} @@ -38,7 +38,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "Invalid date selected"} @@ -59,7 +59,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "Please review the function"} @@ -80,7 +80,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "This is a static function"} @@ -101,7 +101,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "cannot be empty."} diff --git a/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953120.yaml b/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953120.yaml index ddcfda844..447fe7594 100644 --- a/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953120.yaml +++ b/tests/regression/tests/RESPONSE-953-DATA-LEAKAGES-PHP/953120.yaml @@ -17,7 +17,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: "{\"body\": \"\"}" output: @@ -37,7 +37,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "\"}" output: @@ -120,7 +120,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "\"}" output: diff --git a/tests/regression/tests/RESPONSE-954-DATA-LEAKAGES-IIS/954100.yaml b/tests/regression/tests/RESPONSE-954-DATA-LEAKAGES-IIS/954100.yaml index fb954c0ef..10486af95 100644 --- a/tests/regression/tests/RESPONSE-954-DATA-LEAKAGES-IIS/954100.yaml +++ b/tests/regression/tests/RESPONSE-954-DATA-LEAKAGES-IIS/954100.yaml @@ -1,6 +1,6 @@ --- meta: - author: "Andrew Howe" + author: "Andrew Howe, Xhoenix" rule_id: 954100 tests: - test_id: 1 @@ -15,9 +15,45 @@ tests: Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: "{\"body\": \"C:\\\\inetpub \\n\"}" output: log: expect_ids: [954100] + - test_id: 2 + desc: 'Returns C:/inetpub in the response body' + stages: + - input: + dest_addr: "127.0.0.1" + port: 80 + headers: + Host: "localhost" + User-Agent: "OWASP CRS test agent" + Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + Content-Type: "application/json" + method: "POST" + version: "HTTP/1.1" + uri: "/reflect" + data: "{\"body\": \"C:/inetpub \\n\"}" + output: + log: + expect_ids: [954100] + - test_id: 3 + desc: 'Returns c:/inetpub(lower case) in the response body' + stages: + - input: + dest_addr: "127.0.0.1" + port: 80 + headers: + Host: "localhost" + User-Agent: "OWASP CRS test agent" + Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + Content-Type: "application/json" + method: "POST" + version: "HTTP/1.1" + uri: "/reflect" + data: "{\"body\": \"c:/inetpub \\n\"}" + output: + log: + expect_ids: [954100] diff --git a/tests/regression/tests/RESPONSE-955-WEB-SHELLS/955110.yaml b/tests/regression/tests/RESPONSE-955-WEB-SHELLS/955110.yaml new file mode 100644 index 000000000..ec234b425 --- /dev/null +++ b/tests/regression/tests/RESPONSE-955-WEB-SHELLS/955110.yaml @@ -0,0 +1,23 @@ +--- +meta: + author: "TimDiam0nd" +rule_id: 955110 +tests: + - test_id: 1 + desc: "R57 Webshell Test as per https://github.com/r57shell/r57-shell/blob/e85aeeea421b76777e95ae00ae57bba79d5d9389/r57.php#L38" + stages: + - input: + dest_addr: "127.0.0.1" + port: 80 + headers: + Host: "localhost" + User-Agent: "OWASP CRS test agent" + Content-Type: "application/json" + method: "POST" + version: "HTTP/1.1" + uri: "/reflect" + data: |- + {"body": "r57 Shell Version 1.50"} + output: + log: + expect_ids: [955110] diff --git a/tests/regression/tests/RESPONSE-955-WEB-SHELLS/955120.yaml b/tests/regression/tests/RESPONSE-955-WEB-SHELLS/955120.yaml new file mode 100644 index 000000000..2e0cf89b3 --- /dev/null +++ b/tests/regression/tests/RESPONSE-955-WEB-SHELLS/955120.yaml @@ -0,0 +1,47 @@ +--- +meta: + author: "azurit" +rule_id: 955120 +tests: + - test_id: 1 + desc: "Matching web shell NCC Shell" + stages: + - input: + dest_addr: "127.0.0.1" + port: 80 + headers: + Host: "localhost" + User-Agent: "OWASP CRS test agent" + Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + Accept-Encoding: "gzip,deflate" + Accept-Language: "en-us,en;q=0.5" + Content-Type: "application/json" + method: "POST" + version: "HTTP/1.1" + uri: "/reflect" + data: |- + {"body": "example.com - WSO 4.2.6"} + output: + log: + expect_ids: [955120] + - test_id: 2 + desc: "Matching web shell Simple PHP backdoor" + stages: + - input: + dest_addr: "127.0.0.1" + port: 80 + headers: + Host: "localhost" + User-Agent: "OWASP CRS test agent" + Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + Accept-Encoding: "gzip,deflate" + Accept-Language: "en-us,en;q=0.5" + Content-Type: "application/json" + method: "POST" + version: "HTTP/1.1" + uri: "/reflect" + data: |- + {"body": "example.com Wso 2024"} + output: + log: + expect_ids: [955120] diff --git a/tests/regression/tests/RESPONSE-955-WEB-SHELLS/955400.yaml b/tests/regression/tests/RESPONSE-955-WEB-SHELLS/955400.yaml new file mode 100644 index 000000000..fbb73b114 --- /dev/null +++ b/tests/regression/tests/RESPONSE-955-WEB-SHELLS/955400.yaml @@ -0,0 +1,68 @@ +--- +meta: + author: "Xhoenix" +rule_id: 955400 +tests: + - test_id: 1 + desc: "Matching web shell Akmal archtte id ASPX shell" + stages: + - input: + dest_addr: "127.0.0.1" + port: 80 + headers: + Host: "localhost" + User-Agent: "OWASP CRS test agent" + Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + Accept-Encoding: "gzip,deflate" + Accept-Language: "en-us,en;q=0.5" + Content-Type: "application/json" + method: "POST" + version: "HTTP/1.1" + uri: "/reflect" + data: |- + {"body": "Webshell Akmal archtte id"} + output: + log: + expect_ids: [955400] + - test_id: 2 + desc: "Matching web shell ASPYDrv shell" + stages: + - input: + dest_addr: "127.0.0.1" + port: 80 + headers: + Host: "localhost" + User-Agent: "OWASP CRS test agent" + Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + Accept-Encoding: "gzip,deflate" + Accept-Language: "en-us,en;q=0.5" + Content-Type: "application/json" + method: "POST" + version: "HTTP/1.1" + uri: "/reflect" + data: |- + {"body": "ASPYDrvsInfo"} + output: + log: + expect_ids: [955400] + - test_id: 3 + desc: "Matching web shell RHTOOLS shell" + stages: + - input: + dest_addr: "127.0.0.1" + port: 80 + headers: + Host: "localhost" + User-Agent: "OWASP CRS test agent" + Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + Accept-Encoding: "gzip,deflate" + Accept-Language: "en-us,en;q=0.5" + Content-Type: "application/json" + method: "POST" + version: "HTTP/1.1" + uri: "/reflect" + data: |- + {"body": "RHTOOLS"} + output: + log: + expect_ids: [955400] diff --git a/tests/regression/tests/RESPONSE-959-BLOCKING-EVALUATION/959100.yaml b/tests/regression/tests/RESPONSE-959-BLOCKING-EVALUATION/959100.yaml index 1f1dbe8ab..c1f96d30e 100644 --- a/tests/regression/tests/RESPONSE-959-BLOCKING-EVALUATION/959100.yaml +++ b/tests/regression/tests/RESPONSE-959-BLOCKING-EVALUATION/959100.yaml @@ -22,7 +22,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: "{\"body\": \"<?php echo \\\"Hello World!\\n\\\" ?>\"}" output: @@ -42,7 +42,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: |- {"body": "<?php12345"} @@ -63,7 +63,7 @@ tests: Accept-Language: "en-us,en;q=0.5" Content-Type: "application/json" method: "POST" - version: "HTTP/1.0" + version: "HTTP/1.1" uri: "/reflect" data: "{\"body\": \"<?php echo \\\"Hello World!\\n\\\" ?>\"}" output: diff --git a/util/APPROVED_TAGS b/util/APPROVED_TAGS index 5c48d8ecc..5fc4ca3d6 100644 --- a/util/APPROVED_TAGS +++ b/util/APPROVED_TAGS @@ -1,4 +1,24 @@ OWASP_CRS +OWASP_CRS/METHOD-ENFORCEMENT +OWASP_CRS/SCANNER-DETECTION +OWASP_CRS/PROTOCOL-ENFORCEMENT +OWASP_CRS/PROTOCOL-ATTACK +OWASP_CRS/MULTIPART-ATTACK +OWASP_CRS/ATTACK-LFI +OWASP_CRS/ATTACK-RFI +OWASP_CRS/ATTACK-RCE +OWASP_CRS/ATTACK-PHP +OWASP_CRS/ATTACK-GENERIC +OWASP_CRS/ATTACK-XSS +OWASP_CRS/ATTACK-SQLI +OWASP_CRS/ATTACK-SESSION-FIXATION +OWASP_CRS/ATTACK-JAVA +OWASP_CRS/DATA-LEAKAGES +OWASP_CRS/DATA-LEAKAGES-SQL +OWASP_CRS/DATA-LEAKAGES-JAVA +OWASP_CRS/DATA-LEAKAGES-PHP +OWASP_CRS/DATA-LEAKAGES-IIS +OWASP_CRS/WEB-SHELLS PCI/12.1 PCI/6.5.1 PCI/6.5.10 diff --git a/util/FILENAME_EXCLUSIONS b/util/FILENAME_EXCLUSIONS new file mode 100644 index 000000000..e8613c1d7 --- /dev/null +++ b/util/FILENAME_EXCLUSIONS @@ -0,0 +1,6 @@ +crs-setup.conf.example +REQUEST-901-INITIALIZATION.conf +REQUEST-905-COMMON-EXCEPTIONS.conf +REQUEST-949-BLOCKING-EVALUATION.conf +RESPONSE-959-BLOCKING-EVALUATION.conf +RESPONSE-980-CORRELATION.conf diff --git a/util/av-scanning/runAV/common.c b/util/av-scanning/runAV/common.c deleted file mode 100755 index 08d212890..000000000 --- a/util/av-scanning/runAV/common.c +++ /dev/null @@ -1,652 +0,0 @@ -#include "common.h" - -int lock_file(char *filename) -{ - int fd; - - if (!filename) - return -1; - - if ((fd = open(filename,O_RDONLY | O_CREAT , S_IRWXU)) < 0) { - print_error("lock_file","open",modsec_rpc_log_file,errno); - return -1; - } - - flock(fd,LOCK_EX); - - return fd; -} - -int unlock_file(int fd) -{ - flock(fd,LOCK_UN); - return 0; -} - -int print_request(char* url,char *command,parameter_t *parameters, int num_of_parameters, int mask) -{ - char time_str[64], line[1024*1024]; - time_t t; - int fd; - int i; - - switch (atoi(modsec_rpc_log_level)) { - case DEBUG: - time(&t); - ctime_r(&t,time_str); - time_str[strlen(time_str)-1] = '\0'; - if ((fd = open(modsec_rpc_log_file,O_WRONLY | O_CREAT | O_APPEND | O_SYNC , S_IRWXU)) < 0) { - print_error("print_request","open",modsec_rpc_log_file,errno); - fd=2; - } - flock(fd,LOCK_EX); - sprintf(line,"%s:REQUEST-BEGIN:======================================\n",time_str); - line[1024*1024-1]='\0'; - write(fd,line,strlen(line)); - snprintf(line,1024*1024,"URL:%s\nCommand:%s\n",url,command); - line[1024*1024-1]='\0'; - write(fd,line,strlen(line)); - for (i=0; i<num_of_parameters; i++) { - snprintf(line,1024*1024,"%s=",parameters[i].name); - line[1024*1024-1]='\0'; - write(fd,line,strlen(line)); - if (i == mask) { - sprintf(line,"XXXXXXX\n"); - write(fd,line,strlen(line)); - } else { - if (parameters[i].value) { - snprintf(line,1024*1024,"%s\n",parameters[i].value); - line[1024*1024-1]='\0'; - } - else sprintf(line,"\n"); - write(fd,line,strlen(line)); - } - - } - sprintf(line,"%s:REQUEST-END:========================================\n",time_str); - write(fd,line,strlen(line)); - flock(fd,LOCK_UN); - if (fd!=2) close(fd); - break; - } - return 0; -} - -int print_request_force(char* url,char *command,parameter_t *parameters, int num_of_parameters, int mask) -{ - char real_level[1024]; - - strcpy(real_level,modsec_rpc_log_level); - strcpy(modsec_rpc_log_level,"1"); - print_request(url,command,parameters,num_of_parameters,mask); - strcpy(modsec_rpc_log_level,real_level); - return 0; -} - -int print_reply(char *reply) -{ - char time_str[64]; - time_t t; - int fd; - - printf("%s",reply); - switch (atoi(modsec_rpc_log_level)) { - case DEBUG: - time(&t); - ctime_r(&t,time_str); - time_str[strlen(time_str)-1] = '\0'; - if ((fd = open(modsec_rpc_log_file,O_WRONLY | O_CREAT | O_APPEND | O_SYNC , S_IRWXU)) < 0) { - print_error("print_request","open",modsec_rpc_log_file,errno); - fd=2; - } - flock(fd,LOCK_EX); - write(fd,reply,strlen(reply)); - flock(fd,LOCK_UN); - if (fd!=2) close(fd); - break; - } - return 0; -} - -int print_error(char *func1, char* func2, char* str, int err) -{ - char out[1024], time_str[64], line[1024*1024]; - char str1[1024], str2[1024], str3[1024]; - time_t t; - int fd; - - time(&t); - ctime_r(&t,time_str); - time_str[strlen(time_str)-1] = '\0'; - if (err) - strcpy(out,strerror(err)); - else - strcpy(out,""); - if (!func1) - strcpy(str1,""); - else { - strncpy(str1,func1,1024); - str1[1023]='\0'; - } - if (!func2) - strcpy(str2,""); - else { - strncpy(str2,func2,1024); - str2[1023]='\0'; - } - if (!str) - strcpy(str3,""); - else { - strncpy(str3,str,1024); - str3[1023]='\0'; - } - - if ((fd = open(modsec_rpc_log_file,O_WRONLY | O_CREAT | O_APPEND | O_SYNC , S_IRWXU)) < 0) { - fprintf(stderr,"%s:ERROR:print_error:open:%s:%s\n",time_str,strerror(errno),modsec_rpc_log_file); - fd=2; - } - snprintf(line,1024*1024,"%s:ERROR:%s:%s:%s:%s\n",time_str,str1,str2,out,str3); - line[1024*1024-1]='\0'; - flock(fd,LOCK_EX); - write(fd,line,strlen(line)); - flock(fd,LOCK_UN); - if (fd!=2) close(fd); - return 0; -} - -int is_proxy_up() -{ - int pid; - FILE *fp; - - if ((fp = fopen(modsec_proxy_pid,"r")) == NULL ) - return 0; - - if (fscanf(fp,"%d",&pid) == 0) { - print_error("is_proxy_up","fscanf","missing PID",0); - fclose(fp); - return 0; - } - fclose(fp); - - if (!pid || kill(pid,0)) - return 0; - - return 1; -} - -int run_cmd(char *command, char *output, int output_size) -{ - char line[1024]; - FILE *fp; - - if (output_size > 0 && output) output[0]='\0'; - if (!(fp=popen(command,"r"))) { - print_error("run_cmd","popen",command,errno); - return -1; - } - - while (output_size && fgets(line,output_size>1024?1024:output_size,fp)) { - strcat(output, line); - output_size -= strlen(line); - } - - if (!output_size) - while (fgets(line,1024,fp)); - - pclose(fp); - return 0; -} - -int find_param_idx(char *parameter_name, parameter_t *parameters, int max_parameters) -{ - int i, idx=-1; - - for (i = 0; (i < max_parameters) && (idx < 0); i++) - if ( strstr(parameters[i].name,parameter_name) ) - idx=i; - return idx; -} - -int parse_file(char *filename, parameter_t *parameters, int max_parameters) -{ - char line[1024], *ptr; - int i; - FILE *fp; - - if (!max_parameters || (parameters == NULL) || (filename == NULL)) { - print_error("parse_file","invalid input parameters","none",0); - return 0; - } - - if ((fp = fopen(filename,"r")) == NULL ) { - print_error("parse_file","fopen",filename,errno); - return 0; - } - - i=0; - while ( i < max_parameters && fgets(line,1024,fp)) { - if (ptr = strstr(line,"#")) - *ptr='\0'; - if (sscanf(line,"%[^=]=%s",parameters[i].name,parameters[i].value) != 2) - continue; - i++; - } - - fclose(fp); - - return i; -} - -int change_file(char *filename, parameter_t parameter) -{ - char line[1024], *name, *value; - int i, found=0; - FILE *fp; - - if (filename == NULL) - return 0; - - if ((fp = fopen(filename,"r+")) == NULL ) - return 0; - - i=0; - while ( fgets(line,1024,fp)) { - sscanf(line,"%[^=]=%s",name,value); - if (name && !strcmp(name,parameter.name)) { - fprintf(fp,"%s=%s\n",name,parameter.value); - found=1; - continue; - } else fprintf(fp,"%s",line); - } - - fclose(fp); - return found; -} - -int copy_file(char *src_file, char *dst_file) -{ - char line[1024]; - FILE *sfp, *dfp; - - if (src_file == NULL || dst_file == NULL) - return 0; - - if ((sfp = fopen(src_file,"r")) == NULL ) - return 0; - - if ((dfp = fopen(dst_file,"w")) == NULL ) { - fclose(sfp); - return 0; - } - - while ( fgets(line,1024,sfp)) - fprintf(dfp,"%s",line); - - fclose(sfp); - fclose(dfp); - return 1; -} - -int parse_query(char *query, parameter_t *parameters, int max_parameters) -{ - char *ptr, *dst_ptr, num[3]; - int i, len; - - if (!max_parameters || (parameters == NULL) || (query == NULL)) - return 0; - - ptr=query; - i=0; - while ((i < max_parameters) && *ptr) { - parameters[i].name[0] = '\0'; - dst_ptr = parameters[i].name; - len=0; - while (*ptr && (*ptr != '=') && (len++ < MAX_NAME_LENGTH)) { - if (*ptr == '%' && *(ptr+1) && *(ptr+2)) { - num[0]=*(ptr+1); - num[1]=*(ptr+2); - num[2]='\0'; - ptr += 3; - *dst_ptr=(char)strtol(num,NULL,16); - if (*dst_ptr) dst_ptr++; - } else *dst_ptr++ = *ptr++; - } - if (len >= MAX_NAME_LENGTH) - while (*ptr && (*ptr != '=')) - *ptr++; - if (*ptr) ptr++; - *dst_ptr = '\0'; - parameters[i].value[0] = '\0'; - dst_ptr = parameters[i].value; - len=0; - while (*ptr && (*ptr != '&') && (len++ < MAX_VALUE_LENGTH)) { - if (*ptr == '%' && *(ptr+1) && *(ptr+2)) { - num[0]=*(ptr+1); - num[1]=*(ptr+2); - num[2]='\0'; - ptr += 3; - *dst_ptr=(char)strtol(num,NULL,16); - if (*dst_ptr) dst_ptr++; - } else *dst_ptr++ = *ptr++; - } - if (len >= MAX_VALUE_LENGTH) - while (*ptr && (*ptr != '&')) - *ptr++; - if (*ptr) ptr++; - *dst_ptr = '\0'; - i++; - } - - return i; -} - -int parse_query_and_body (parameter_t *parameters, int max_parameters) -{ - char *query, *content_length_env; - int i, num_of_params, body_len, content_length; - - query = getenv("QUERY_STRING"); - if (query && *query) - return(parse_query(query,parameters,max_parameters)); - else { - content_length_env = getenv("CONTENT_LENGTH"); - if (!content_length_env) - return 0; - if (! *content_length_env) - return 0; - content_length=atol(content_length_env); - if (!(query=malloc(content_length+1))) - return 0; - i = 1; body_len=0; - while ( (body_len < content_length) && (i>0) ) { - i = read(0,query+body_len,(content_length-body_len)<1024?(content_length-body_len):1024); - if (i > 0 ) body_len+=i; - } - query[body_len] = '\0'; - num_of_params = parse_query(query,parameters,max_parameters); - free(query); - return num_of_params; - } -} - -int parse_cli (parameter_t *parameters, int max_parameters, int num_of_args, char *args[]) -{ - char name[MAX_NAME_LENGTH], value[MAX_VALUE_LENGTH]; - int i, num_of_params=0; - - if (num_of_args > 0) - for (i=0; i<num_of_args && i<max_parameters; i++) { - if (sscanf(args[i],"%[^=]=%s",name,value) < 2) - continue; - if (strlen(name) < MAX_NAME_LENGTH) - strcpy(parameters[num_of_params].name,name); - else continue; - if (strlen(value) < MAX_VALUE_LENGTH) { - strcpy(parameters[num_of_params].value,value); - num_of_params++; - } - } - return num_of_params; -} - -int send_request(char *request,char *ip,char *port,char *reply,int max_reply_size) -{ - int sock, i, reply_len; - struct sockaddr_in servaddr; - - reply[0]='\0'; - reply_len=0; - if (!request || !*request || !ip || !port || !reply || !max_reply_size) - return -1; - - memset(&servaddr, 0, sizeof(servaddr)); - servaddr.sin_family = AF_INET; - servaddr.sin_port = htons((short)atol(port)); - if ( inet_aton(ip, &servaddr.sin_addr) <= 0 ) - return -1; - - if ( (sock = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) { - print_error("send_request","socket",ip,errno); - return -1; - } - if ( connect(sock, (struct sockaddr *) &servaddr, sizeof(servaddr) ) < 0 ) { - print_error("send_request","connect",ip,errno); - close(sock); - return -1; - } - - i = strlen(request); - if ( write(sock,request,i) < i ) { - print_error("send_request","write",ip,errno); - shutdown(sock,SHUT_RDWR); - close(sock); - return -1; - } - - i = 1; reply_len=0; - while ( (reply_len < max_reply_size) && (i>0) ) { - i = read(sock,reply+reply_len,(max_reply_size-reply_len)<1024?(max_reply_size-reply_len):1024); - if (i > 0 ) reply_len+=i; - } - reply[reply_len] = '\0'; - - shutdown(sock,SHUT_RDWR); - close(sock); - return reply_len; -} - -int find_ip_idx(char *ip, blocklist_t *blocklist, int num_of_ips) -{ - int i, idx=-1; - - for (i = 0; (i < num_of_ips) && (idx < 0); i++) - if ( strstr(blocklist[i].ip,ip) ) - idx=i; - return idx; -} - -int remove_ip_idx(char *ip, blocklist_t *blocklist, int num_of_ips) -{ - int i, j, idx=-1; - time_t t; - - time(&t); - for (i = 0; i < num_of_ips; i++) - if ( (ip && strstr(blocklist[i].ip,ip)) || (!ip && (t > blocklist[i].end)) ) { - idx=i; - for (j=i; j<(num_of_ips-1); j++) { - strcpy(blocklist[j].ip,blocklist[j+1].ip); - blocklist[j].start = blocklist[j+1].start; - blocklist[j].duration = blocklist[j+1].duration; - blocklist[j].end = blocklist[j+1].end; - strcpy(blocklist[j].token,blocklist[j+1].token); - } - num_of_ips--; - } - return idx; -} - -int read_conf_file (char *filename) -{ - int idx, num_of_params; - parameter_t parameters[MAX_PARAMS]; - - num_of_params=parse_file(filename,parameters,MAX_PARAMS); - - if ((idx = find_param_idx("MODSEC_CLI_HOME",parameters,num_of_params)) >= 0) - strcpy(modsec_cli_home,parameters[idx].value); - if ((idx = find_param_idx("MODSEC_RPC_HOME",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_home,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC_LOG_FILE",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_log_file,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC_LOG_LEVEL",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_log_level,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC_SSL_LOCKFILE",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_ssl_lockfile,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC_SENSOR_LOCKFILE",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_sensor_lockfile,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC_REVERSEPROXY_LOCKFILE",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_reverseproxy_lockfile,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC_EXTERNALNIC_LOCKFILE",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_externalnic_lockfile,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC_MUI_LOCKFILE",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_mui_lockfile,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC_LOG_LEVEL",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_log_level,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_HOME",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_home,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_IP",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_ip,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_PORT",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_port,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_NETWORK_PREFIX",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_network_prefix,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_BIN",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_bin,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_CONF",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_conf,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_EXT_NIC",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_ext_nic,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_PID",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_pid,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_WHITELIST",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_whitelist,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_BLACKLIST",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_blacklist,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_TIMEOUT",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_timeout,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_EXCHANGE",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_exchange,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_EXT_IPS",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_ext_ips,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_MUI_UI_ADMIN",parameters,num_of_params)) >= 0) - strcpy(modsec_mui_ui_admin,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC_PASSWORD_FILE",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc_password_file,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_MUI_UI_IPADDRESS",parameters,num_of_params)) >= 0) - strcpy(modsec_mui_ui_ipaddress,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_MUI_UI_PORT",parameters,num_of_params)) >= 0) - strcpy(modsec_mui_ui_port,parameters[idx].value); - - if ((idx = find_param_idx("SENSOR_ID",parameters,num_of_params)) >= 0) - strcpy(sensor_id,parameters[idx].value); - - if ((idx = find_param_idx("SERIAL",parameters,num_of_params)) >= 0) - strcpy(serial,parameters[idx].value); - - if ((idx = find_param_idx("VERSION_NUMBER",parameters,num_of_params)) >= 0) - strcpy(version_number,parameters[idx].value); - - if ((idx = find_param_idx("RELEASE_DATE",parameters,num_of_params)) >= 0) - strcpy(release_date,parameters[idx].value); - - if ((idx = find_param_idx("BRIDGE_MODE",parameters,num_of_params)) >= 0) - strcpy(bridge_mode,parameters[idx].value); - - if ((idx = find_param_idx("DATA_DISK_SPACE",parameters,num_of_params)) >= 0) - strcpy(data_disk_space,parameters[idx].value); - - if ((idx = find_param_idx("CONN_RATE",parameters,num_of_params)) >= 0) - strcpy(conn_rate,parameters[idx].value); - - if ((idx = find_param_idx("CONN_RATE_PER_ADDR",parameters,num_of_params)) >= 0) - strcpy(conn_rate_per_addr,parameters[idx].value); - - if ((idx = find_param_idx("CONNS",parameters,num_of_params)) >= 0) - strcpy(conns,parameters[idx].value); - - if ((idx = find_param_idx("CONNS_PER_ADDR",parameters,num_of_params)) >= 0) - strcpy(conns_per_addr,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_RPC",parameters,num_of_params)) >= 0) - strcpy(modsec_rpc,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy,parameters[idx].value); - - if ((idx = find_param_idx("MODSEC_PROXY_SCRIPT",parameters,num_of_params)) >= 0) - strcpy(modsec_proxy_script,parameters[idx].value); - - return num_of_params; -} - -int init_cgi() -{ - char *modsec; - - setresuid(0,0,0); - setresgid(0,0,0); - - strcpy(modsec_cli_home,"/opt/modsecurity-cli"); - strcpy(modsec_rpc_home,"/opt/modsecurity-rpc"); - strcpy(modsec_rpc_log_file,"/opt/modsecurity-rpc/var/logs/rpc.log"); - strcpy(modsec_rpc_log_level,"0"); - strcpy(modsec_rpc_ssl_lockfile,"/opt/modsecurity-rpc/var/run/ssl.lock"); - strcpy(modsec_rpc_sensor_lockfile,"/opt/modsecurity-rpc/var/run/sensor.lock"); - strcpy(modsec_rpc_externalnic_lockfile,"/opt/modsecurity-rpc/var/run/externalnic.lock"); - strcpy(modsec_rpc_reverseproxy_lockfile,"/opt/modsecurity-rpc/var/run/reverseproxy.lock"); - strcpy(modsec_rpc_mui_lockfile,"/opt/modsecurity-rpc/var/run/mui.lock"); - strcpy(modsec_proxy_home,"/opt/modsecurity-proxy"); - strcpy(modsec_proxy_ip,"127.0.0.2"); - strcpy(modsec_proxy_port,"80"); - strcpy(modsec_proxy_bin,"/bin/modsec-proxyd"); - strcpy(modsec_proxy_script,"/etc/init.d/modsec-proxy"); - strcpy(modsec_proxy_conf,"/etc/httpd.conf"); - strcpy(modsec_proxy_ext_nic,"eth0"); - strcpy(modsec_proxy_network_prefix,"172.16.0.0/12"); - strcpy(modsec_proxy_pid,"/opt/modsecurity-proxy/var/run/httpd.pid"); - strcpy(modsec_proxy_whitelist,"/opt/breach/etc/modsec_whitelist.conf"); - strcpy(modsec_proxy_blacklist,"/opt/breach/etc/modsec_blacklist.conf"); - strcpy(modsec_proxy_timeout,"120"); - strcpy(modsec_proxy_exchange,"/opt/modsecurity-proxy/var/exchange"); - strcpy(modsec_proxy_ext_ips,"/opt/breach/etc/modsec_ips.conf"); - strcpy(modsec_mui_ui_ipaddress,"127.0.0.1"); - strcpy(modsec_mui_ui_port,"443"); - strcpy(modsec_rpc_password_file,"/opt/modsecurity-rpc/etc/.htpasswd"); - strcpy(modsec_mui_ui_admin,"admin"); - strcpy(sensor_id,"1"); - strcpy(serial,"1"); - strcpy(version_number,"2.0"); - strcpy(bridge_mode,"off"); - strcpy(data_disk_space,"60"); - strcpy(release_date,"11-15-2006"); - strcpy(conn_rate,"0"); - strcpy(conn_rate_per_addr,"0"); - strcpy(conns,"0"); - strcpy(conns_per_addr,"0"); - - if (modsec = getenv("MODSEC")) - read_conf_file(modsec); - else { - if (!read_conf_file("/opt/breach/etc/modsec.conf")) - read_conf_file("/etc/modsec.conf"); - } - - return 0; -} diff --git a/util/av-scanning/runAV/common.h b/util/av-scanning/runAV/common.h deleted file mode 100755 index da4941071..000000000 --- a/util/av-scanning/runAV/common.h +++ /dev/null @@ -1,99 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <errno.h> -#include <string.h> -#include <sys/socket.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <arpa/inet.h> -#include <unistd.h> -#include <dirent.h> -#include <time.h> -#include <fcntl.h> -#include <crypt.h> - -#define MAX_PARAMS 256 -#define MAX_IPS 256 -#define MAX_NAME_LENGTH 256 -#define MAX_VALUE_LENGTH 1024 -#define MAX_CMD_LENGTH 1024 -#define MAX_TOKEN_LENGTH 1024 -#define MAX_OUTPUT_LINE_LEN (1024) -#define MAX_OUTPUT_SIZE (MAX_OUTPUT_LINE_LEN*1024) -#define WHITE 1 -#define BLACK 0 -#define NONE 0 -#define DEBUG 1 - -typedef struct { - char name[MAX_NAME_LENGTH]; - char value[MAX_VALUE_LENGTH]; -} parameter_t; - -typedef struct { - char ip[16]; - time_t start; - long duration; - time_t end; - char token[MAX_TOKEN_LENGTH]; -} blocklist_t; - -EXTERN int lock_file(char *filename); -EXTERN int unlock_file(int fd); -EXTERN int print_reply(char *reply); -EXTERN int print_error(char *func1, char* func2, char* str, int err); -EXTERN int print_request(char* url,char *command,parameter_t *parameters, int num_of_parameters, int mask); -EXTERN int print_request_force(char* url,char *command,parameter_t *parameters, int num_of_parameters, int mask); -EXTERN int is_proxy_up(); -EXTERN int run_cmd(char *command, char *output, int output_size); -EXTERN int parse_cli (parameter_t *parameters, int max_parameters, int num_of_args, char *args[]); -EXTERN int parse_query_and_body(parameter_t *parameters, int max_parameters); -EXTERN int parse_query(char *query, parameter_t *parameters, int max_parameters); -EXTERN int parse_file(char *filename, parameter_t *parameters, int max_parameters); -EXTERN int copy_file(char *src_file, char *dst_file); -EXTERN int change_file(char *filename, parameter_t parameter); -EXTERN int find_param_idx(char *parameter_name, parameter_t *parameters, int max_parameters); -EXTERN int init_cgi(); -EXTERN int send_request(char *request,char *ip,char *port,char *reply,int max_reply_size); -EXTERN int find_ip_idx(char *ip, blocklist_t *blocklist, int num_of_ips); -EXTERN int remove_ip_idx(char *ip, blocklist_t *blocklist, int num_of_ips); - -EXTERN char modsec_rpc[1024]; -EXTERN char modsec_rpc_home[1024]; -EXTERN char modsec_rpc_log_file[1024]; -EXTERN char modsec_rpc_log_level[1024]; -EXTERN char modsec_rpc_ssl_lockfile[1024]; -EXTERN char modsec_rpc_externalnic_lockfile[1024]; -EXTERN char modsec_rpc_sensor_lockfile[1024]; -EXTERN char modsec_rpc_reverseproxy_lockfile[1024]; -EXTERN char modsec_rpc_mui_lockfile[1024]; -EXTERN char modsec_proxy[1024]; -EXTERN char modsec_proxy_home[1024]; -EXTERN char modsec_proxy_script[1024]; -EXTERN char modsec_proxy_ip[1024]; -EXTERN char modsec_proxy_port[1024]; -EXTERN char modsec_proxy_bin[1024]; -EXTERN char modsec_proxy_conf[1024]; -EXTERN char modsec_proxy_ext_nic[1024]; -EXTERN char modsec_proxy_pid[1024]; -EXTERN char modsec_proxy_whitelist[1024]; -EXTERN char modsec_proxy_blacklist[1024]; -EXTERN char modsec_proxy_network_prefix[1024]; -EXTERN char modsec_proxy_timeout[1024]; -EXTERN char modsec_proxy_exchange[1024]; -EXTERN char modsec_proxy_ext_ips[1024]; -EXTERN char modsec_rpc_password_file[1024]; -EXTERN char modsec_mui_ui_admin[1024]; -EXTERN char modsec_mui_ui_ipaddress[1024]; -EXTERN char modsec_mui_ui_port[1024]; -EXTERN char modsec_cli_home[1024]; -EXTERN char sensor_id[1024]; -EXTERN char serial[1024]; -EXTERN char version_number[1024]; -EXTERN char bridge_mode[1024]; -EXTERN char data_disk_space[1024]; -EXTERN char release_date[1024]; -EXTERN char conn_rate[1024]; -EXTERN char conn_rate_per_addr[1024]; -EXTERN char conns[1024]; -EXTERN char conns_per_addr[1024]; diff --git a/util/av-scanning/runAV/comp b/util/av-scanning/runAV/comp deleted file mode 100755 index aeee5db5e..000000000 --- a/util/av-scanning/runAV/comp +++ /dev/null @@ -1,2 +0,0 @@ -gcc -c -o common.o -DEXTERN= common.c -gcc -o runAV -DEXTERN=extern common.o runAV.c diff --git a/util/av-scanning/runAV/runAV-clamd.c b/util/av-scanning/runAV/runAV-clamd.c deleted file mode 100755 index c3526ad81..000000000 --- a/util/av-scanning/runAV/runAV-clamd.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "common.h" - -main(int argc, char *argv[]) -{ - char cmd[MAX_OUTPUT_SIZE]; - char output[MAX_OUTPUT_SIZE]; - int error; - char *colon; - char *keyword; - - if (argc > 1) { - sprintf (cmd, "/usr/bin/clamdscan --no-summary %s", argv[1]); - output[0] = '\0'; - error = run_cmd(cmd,output,MAX_OUTPUT_SIZE); - if (error != 0) { - printf ("1 exec error %d: OK", error); - } else if (!*output) { - printf ("1 exec empty: OK"); - } - else { - colon = strstr(output, ":"); - if (colon) { colon += 2; } - if (!colon) { - printf ("0 unable to parse clamdscan output [%s] for cmd [%s]", output, cmd); - } - else if (keyword = strstr(colon, " FOUND")) { - *keyword = '\0'; - printf ("0 clamdscan: %s", colon); - } - else if (keyword = strstr(colon, " ERROR")) { - *keyword = '\0'; - printf ("0 clamdscan: %s", colon); - } - else if (keyword = strstr(colon, "OK")) { - printf ("1 clamdscan: OK"); - } - else if (keyword = strstr(colon, "Empty file")) { - printf ("1 empty file"); - } - else if (keyword = strstr(colon, "Can't access file ")) { - printf ("0 invalid file %s", keyword+18); - } - else { - printf ("0 unable to parse clamdscan output [%s] for cmd [%s]", output, cmd); - } - } - } -} diff --git a/util/av-scanning/runAV/runAV.c b/util/av-scanning/runAV/runAV.c deleted file mode 100755 index 7d74d2e1b..000000000 --- a/util/av-scanning/runAV/runAV.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "common.h" - -main(int argc, char *argv[]) -{ - char cmd[MAX_OUTPUT_SIZE]; - char output[MAX_OUTPUT_SIZE]; - int error; - char *colon; - char *keyword; - - if (argc > 1) { - sprintf (cmd, "/usr/bin/clamscan --no-summary %s", argv[1]); - output[0] = '\0'; - error = run_cmd(cmd,output,MAX_OUTPUT_SIZE); - if (error != 0) { - printf ("1 exec error %d: OK", error); - } else if (!*output) { - printf ("1 exec empty: OK"); - } - else { - colon = strstr(output, ":"); - if (colon) { colon += 2; } - if (!colon) { - printf ("0 unable to parse clamscan output [%s] for cmd [%s]", output, cmd); - } - else if (keyword = strstr(colon, " FOUND")) { - *keyword = '\0'; - printf ("0 clamscan: %s", colon); - } - else if (keyword = strstr(colon, " ERROR")) { - *keyword = '\0'; - printf ("0 clamscan: %s", colon); - } - else if (keyword = strstr(colon, "OK")) { - printf ("1 clamscan: OK"); - } - else if (keyword = strstr(colon, "Empty file")) { - printf ("1 empty file"); - } - else if (keyword = strstr(colon, "Can't access file ")) { - printf ("0 invalid file %s", keyword+18); - } - else { - printf ("0 unable to parse clamscan output [%s] for cmd [%s]", output, cmd); - } - } - } -} diff --git a/util/av-scanning/runav.pl b/util/av-scanning/runav.pl deleted file mode 100755 index c05fbf2ae..000000000 --- a/util/av-scanning/runav.pl +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl -# -# runav.pl -# Copyright (c) 2004-2011 Trustwave -# -# This script is an interface between ModSecurity and its -# ability to intercept files being uploaded through the -# web server, and ClamAV - - -$CLAMSCAN = "clamscan"; - -if ($#ARGV != 0) { - print "Usage: modsec-clamscan.pl <filename>\n"; - exit; -} - -my ($FILE) = shift @ARGV; - -$cmd = "$CLAMSCAN --stdout --disable-summary $FILE"; -$input = `$cmd`; -$input =~ m/^(.+)/; -$error_message = $1; - -$output = "0 Unable to parse clamscan output [$1]"; - -if ($error_message =~ m/: Empty file\.?$/) { - $output = "1 empty file"; -} -elsif ($error_message =~ m/: (.+) ERROR$/) { - $output = "0 clamscan: $1"; -} -elsif ($error_message =~ m/: (.+) FOUND$/) { - $output = "0 clamscan: $1"; -} -elsif ($error_message =~ m/: OK$/) { - $output = "1 clamscan: OK"; -} - -print "$output\n"; diff --git a/util/browser-tools/js-overrides.js b/util/browser-tools/js-overrides.js deleted file mode 100644 index 34d501779..000000000 --- a/util/browser-tools/js-overrides.js +++ /dev/null @@ -1,78 +0,0 @@ -(function() { // don't leak XSSTripwire into global ns - - /* - Assumptions: - - we need to run first, before any other attacker script - - we can't prevent tripwire from being detected (e.g. by side effects) - Todo: - - a lot more in lockdown - - protect XHR - */ - var XSSTripwire = new Object(); - - XSSTripwire.report = function() { - // Notify server - var notify = XSSTripwire.newXHR(); - - // Create a results string to send back - var results; - try { - results = "HTML=" + encodeURIComponent(document.body.outerHTML); - } catch (e) {} // we don't always have document.body - - notify.open("POST", XSSTripwire.ReportURL, true); - notify.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); - notify.send(results); - } - - XSSTripwire.lockdown = function(obj, name) { - if (Object.defineProperty) { - Object.defineProperty(obj, name, { - configurable: false - }) - } - } - - XSSTripwire.newXHR = function() { - var xmlreq = false; - if (window.XMLHttpRequest) { - xmlreq = new XMLHttpRequest(); - } else if (window.ActiveXObject) { - // Try ActiveX - try { - xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); - } catch (e1) { - // first method failed - try { - xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); - } catch (e2) { - // both methods failed - } - } - } - return xmlreq; - }; - - XSSTripwire.proxy = function(obj, name, report_function_name, exec_original) { - var proxy = obj[name]; - obj[name] = function() { - // URL of the page to notify, in the event of a detected XSS event: - XSSTripwire.ReportURL = "xss-tripwire-report?function=" + encodeURIComponent(report_function_name); - - XSSTripwire.report(); - - if (exec_original) { - return proxy.apply(this, arguments); - } - }; - XSSTripwire.lockdown(obj, name); - }; - - XSSTripwire.proxy(window, 'alert', 'window.alert', true); - XSSTripwire.proxy(window, 'confirm', 'window.confirm', true); - XSSTripwire.proxy(window, 'prompt', 'window.prompt', true); - XSSTripwire.proxy(window, 'unescape', 'unescape', true); - XSSTripwire.proxy(document, 'write', 'document.write', true); - XSSTripwire.proxy(String, 'fromCharCode', 'String.fromCharCode', true); - -})(); diff --git a/util/change-version/README.md b/util/change-version/README.md deleted file mode 100644 index 7867d3111..000000000 --- a/util/change-version/README.md +++ /dev/null @@ -1,113 +0,0 @@ -# Change version in CRS - -This page describes how can you change the version strings in CRS rules. - -## Goals - -The problem is change the version string in CRS rules isn't trivial. Version string used for mark all rule by the `ver` action, mark the whole file in a comment, or mark the rule set with `SecComponentSignature`. Few examples: - -* in a rule: `SecRule ARGS "foo" "id:1,phase:1,ver:'OWASP_CRS/3.3.0',pass"` -* comment: `# OWASP ModSecurity Core Rule Set ver.3.3.0` -* config directive: `SecComponentSignature "OWASP_CRS/3.3.0"` - -There are many other pattern which look-a-like version string, but that isn't it. - -The main task is replace only the real version strings by the new one. - -The Python script below helps to do that on the whole rule set or any unique file. - -## Prerequisites - -* Python3 interpreter -* [msc_pyparser](https://github.com/digitalwave/msc_pyparser) -* CRS rule set - -You can install the `msc_pyparser` through PIP - that's the recommended method, see the [instructions](https://github.com/digitalwave/msc_pyparser#installing-using-pip3). - -If you already have this package, don't forget to update it before you start the work: - -```bash -python3 -m pip install --upgrade msc_pyparser -``` - -## Usage - -The script expects three mandatory and one optional arguments: - -* input file or directory -* output **directory** -* version string for `ver` actions and `SecComponentSignature` - these are always the same -* and optionally, the version string for comments - -Please note that the input can be a single file (eg. 'coreruleset/rules/REQUEST-901-INITIALIZATION.conf' or a directory with meta name, eg 'coreruleset/rules/*.conf'. Also note that the output argument is always a **directory** where the script puts the transformed file or files. - -### Run the script - -Consider you want to change only the `ver` and `SecComponentSignature` values by a new one, eg: `OWASP_CRS/3.4.0-dev`. The current value is `OWASP_CRS/3.3.0`. The next command will solve this: - -```bash -mkdir /path/to/coreruleset/rules_new -$ ./change-version.py "/path/to/coreruleset/rules/*.conf" /path/to/coreruleset/rules_new "OWASP_CRS/3.4.0-dev" -Working with file: /path/to/coreruleset/rules/REQUEST-903.9005-CPANEL-EXCLUSION-RULES.conf -Working with file: /path/to/coreruleset/rules/REQUEST-903.9008-PHPMYADMIN-EXCLUSION-RULES.conf -... -Working with file: /path/to/coreruleset/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf -Working with file: /path/to/coreruleset/rules/REQUEST-912-DOS-PROTECTION.conf -``` - -The new files will placed under the `/path/to/coreruleset/rules_new`, now make a diff: - -```bash -$ for f in `ls -1 /path/to/coreruleset/rules/*.conf`; do b=`basename ${f}`; diff ${f} /path/to/coreruleset/rules_new/${b}; done -28c28 -< SecComponentSignature "OWASP_CRS/3.3.0" ---- -> SecComponentSignature "OWASP_CRS/3.4.0-dev" -61c61 -< ver:'OWASP_CRS/3.3.0',\ ---- -> ver:'OWASP_CRS/3.4.0-dev',\ -79c79 -< ver:'OWASP_CRS/3.3.0',\ ---- -> ver:'OWASP_CRS/3.4.0-dev',\ -... -``` - -As you can see, the comments have been left untouched. - -In the next example, we can replace them too: - -```bash -$ ./change-version.py "/path/to/coreruleset/rules/*.conf" /path/to/coreruleset/rules_new "OWASP_CRS/3.4.0-dev" "3.4.0-dev" -Working with file: /path/to/coreruleset/rules/REQUEST-903.9005-CPANEL-EXCLUSION-RULES.conf -Working with file: /path/to/coreruleset/rules/REQUEST-903.9008-PHPMYADMIN-EXCLUSION-RULES.conf -... -Working with file: /path/to/coreruleset/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf -Working with file: /path/to/coreruleset/rules/REQUEST-912-DOS-PROTECTION.conf -``` - -Run the diff again: - -```bash -$ for f in `ls -1 /path/to/coreruleset/rules/*.conf`; do b=`basename ${f}`; diff ${f} /path/to/coreruleset/rules_new/${b}; done -2c2 -< # OWASP ModSecurity Core Rule Set ver.3.3.0 ---- -> # OWASP ModSecurity Core Rule Set ver.3.4.0-dev -28c28 -< SecComponentSignature "OWASP_CRS/3.3.0" ---- -> SecComponentSignature "OWASP_CRS/3.4.0-dev" -61c61 -< ver:'OWASP_CRS/3.3.0',\ ---- -> ver:'OWASP_CRS/3.4.0-dev',\ -79c79 -< ver:'OWASP_CRS/3.3.0',\ ---- -> ver:'OWASP_CRS/3.4.0-dev',\ -... -``` - -As you can see, the version string at the end of comment line has changed in line 2. diff --git a/util/change-version/README.txt b/util/change-version/README.txt deleted file mode 100644 index 984a91c57..000000000 --- a/util/change-version/README.txt +++ /dev/null @@ -1,117 +0,0 @@ -Change version in CRS -===================== - -This page describes how can you change the version strings in CRS rules. - - -Goals ------ -The problem is change the version string in CRS rules isn't trivial. Version -string used for mark all rule by the ver action, mark the whole file in a -comment, or mark the rule set with SecComponentSignature. Few examples: - - * in a rule: SecRule ARGS "foo" "id:1,phase:1,ver:'OWASP_CRS/3.3.0',pass" - * comment: # OWASP ModSecurity Core Rule Set ver.3.3.0 - * config directive: SecComponentSignature "OWASP_CRS/3.3.0" - -There are many other pattern which look-a-like version string, but that -isn't it. - -The main task is replace only the real version strings by the new one. - -The Python script below helps to do that on the whole rule set or any unique -file. - -Prerequisites -------------- - * Python3 interpreter - * msc_pyparser - * CRS rule set - -You can install the msc_pyparser through PIP - that's the recommended method, -see the instructions. - -If you already have this package, don't forget to update it before you start -the work: - -python3 -m pip install --upgrade msc_pyparser - - -Usage ------ -The script expects three mandatory and one optional arguments: - -* input file or directory -* output directory -* version string for ver actions and SecComponentSignature - these are always - the same and optionally, the version string for comments - -Please note that the input can be a single file (eg. -'coreruleset/rules/REQUEST-901-INITIALIZATION.conf' or a directory with meta -name, eg 'coreruleset/rules/*.conf'. Also note that the output argument is -always a directory where the script puts the transformed file or files. - -Run the script --------------- -Consider you want to change only the ver and SecComponentSignature values by a -new one, eg: OWASP_CRS/3.4.0-dev. The current value is OWASP_CRS/3.3.0. The -next command will solve this: - -mkdir /path/to/coreruleset/rules_new -$ ./change-version.py "/path/to/coreruleset/rules/*.conf" /path/to/coreruleset/rules_new "OWASP_CRS/3.4.0-dev" -Working with file: /path/to/coreruleset/rules/REQUEST-903.9005-CPANEL-EXCLUSION-RULES.conf -Working with file: /path/to/coreruleset/rules/REQUEST-903.9008-PHPMYADMIN-EXCLUSION-RULES.conf -... -Working with file: /path/to/coreruleset/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf -Working with file: /path/to/coreruleset/rules/REQUEST-912-DOS-PROTECTION.conf - -The new files will placed under the /path/to/coreruleset/rules_new, now make a diff: - -$ for f in `ls -1 /path/to/coreruleset/rules/*.conf`; do b=`basename ${f}`; diff ${f} /path/to/coreruleset/rules_new/${b}; done -28c28 -< SecComponentSignature "OWASP_CRS/3.3.0" ---- -> SecComponentSignature "OWASP_CRS/3.4.0-dev" -61c61 -< ver:'OWASP_CRS/3.3.0',\ ---- -> ver:'OWASP_CRS/3.4.0-dev',\ -79c79 -< ver:'OWASP_CRS/3.3.0',\ ---- -> ver:'OWASP_CRS/3.4.0-dev',\ -... - -As you can see, the comments have been left untouched. - -In the next example, we can replace them too: - -$ ./change-version.py "/path/to/coreruleset/rules/*.conf" /path/to/coreruleset/rules_new "OWASP_CRS/3.4.0-dev" "3.4.0-dev" -Working with file: /path/to/coreruleset/rules/REQUEST-903.9005-CPANEL-EXCLUSION-RULES.conf -Working with file: /path/to/coreruleset/rules/REQUEST-903.9008-PHPMYADMIN-EXCLUSION-RULES.conf -... -Working with file: /path/to/coreruleset/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf -Working with file: /path/to/coreruleset/rules/REQUEST-912-DOS-PROTECTION.conf - -Run the diff again: - -$ for f in `ls -1 /path/to/coreruleset/rules/*.conf`; do b=`basename ${f}`; diff ${f} /path/to/coreruleset/rules_new/${b}; done -2c2 -< # OWASP ModSecurity Core Rule Set ver.3.3.0 ---- -> # OWASP ModSecurity Core Rule Set ver.3.4.0-dev -28c28 -< SecComponentSignature "OWASP_CRS/3.3.0" ---- -> SecComponentSignature "OWASP_CRS/3.4.0-dev" -61c61 -< ver:'OWASP_CRS/3.3.0',\ ---- -> ver:'OWASP_CRS/3.4.0-dev',\ -79c79 -< ver:'OWASP_CRS/3.3.0',\ ---- -> ver:'OWASP_CRS/3.4.0-dev',\ -... - -As you can see, the version string at the end of comment line has changed in line 2. diff --git a/util/change-version/change-version.py b/util/change-version/change-version.py deleted file mode 100755 index 6e39a8e71..000000000 --- a/util/change-version/change-version.py +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import glob -import msc_pyparser -import os.path -import re - -class FileTransform(object): - def __init__(self, data): - self.data = data - self.cverpatt = "ver\.\d+\.\d+\.\d+$" - self.re_cverpatt = re.compile(self.cverpatt) - - def change_version(self, version, cversion): - # iterate through AST items - # self.data: the parsed structure - for d in self.data: - # id the item has 'actions' then we can check the 'ver' key - if "actions" in d: - aidx = 0 - while aidx < len(d['actions']): - a = d['actions'][aidx] - # if we found one, replace the value - if a['act_name'] == "ver": - a['act_arg'] = version - aidx += 1 - else: - # replace SecComponentSignature by same version string - if d['type'].lower() == "seccomponentsignature": - d['arguments'][0]['argument'] = version - - # replace the versions in comments if cversion exists - if cversion is not None: - if d['type'].lower() == "comment" and self.re_cverpatt.search(d['argument']): - d['argument'] = re.sub(self.cverpatt, "ver.%s" % (cversion), d['argument']) - -class FileHandler(object): - def __init__(self, **kwargs): - for key, value in kwargs.items(): - setattr(self, key, value) - if not hasattr(self, 'cversion'): - self.cversion = None - - self.output = self.output.rstrip("/") + "/" - - # iterate through the list of files - for f in glob.glob(self.input): - print(f"Working with file: %s" % (f)) - # read the file content - try: - with open(f) as file: - data = file.read() - except: - print("Exception caught - ", sys.exc_info()) - sys.exit(1) - - # build AST from content - try: - mparser = msc_pyparser.MSCParser() - mparser.parser.parse(data) - except: - print(sys.exc_info()[1]) - sys.exit(1) - - # change version and comment version if exists - try: - t = FileTransform(mparser.configlines) - t.change_version(self.version, self.cversion) - except: - print(sys.exc_info()[1]) - sys.exit(1) - - # save the new file - try: - mwriter = msc_pyparser.MSCWriter(mparser.configlines) - output = os.path.join(self.output, os.path.basename(f).lstrip("/")) - with open(output, "w") as file: - mwriter.generate() - # add extra new line at the end of file - mwriter.output.append("") - file.write("\n".join(mwriter.output)) - except: - print("Exception caught - ", sys.exc_info()) - sys.exit(1) - -if len(sys.argv) < 4: - print("Argument missing!") - print("Use: %s rule.conf /path/to/output/directory version" % sys.argv[0]) - print(" %s \"/path/to/rules/*.conf\" /path/to/output/directory version [comment_version]" % sys.argv[0]) - print("Example:") - print(" mkdir ../../rulestmp") - print(" %s \"../../rules/*.conf\" ../../rulestmp \"OWASP_CRS/3.4.0-dev\" \"3.4.0-dev\"" % sys.argv[0]) - sys.exit(1) - -args = { - 'input' : sys.argv[1], - 'output' : sys.argv[2], - 'version' : sys.argv[3] -} - -if len(sys.argv) > 4: - args['cversion'] = sys.argv[4] - -fh = FileHandler(**args) diff --git a/util/crs-rules-check/README.md b/util/crs-rules-check/README.md index 530783aa7..ad06551e9 100644 --- a/util/crs-rules-check/README.md +++ b/util/crs-rules-check/README.md @@ -55,6 +55,11 @@ Second, the script loops over each of the parsed structures. Each iteration cons * **Check rule has a `ver` action with correct version** - Every rule must have `ver` action with correct value * script accepts `-v` or `--version` argument if you want to pass it manually * if no `-v` was given, the script tries to extract the version from result of `git describe --tags` +* **Check if the rule uses any `TX:N` target in a chained rule then there must be a `capture` action** - Consider the rule is a chained rule and not the first rule uses the `TX:1` target + * this means we want to check the previously rule's result + * which is produced by `capture` + * if there is no previously `capture`, then it means the next `TX:1` will uses a previously produced captured value + Finally, the script prints a report of all unused TX variables. Usually, unused TX variables occur when a rule creates a TX variable (e.g., `setvar:tx.foo=1`) but the value of the variable is never used anywhere else. This will only be revealed after the script has checked all rules. @@ -550,3 +555,72 @@ End of checking parsed rules Cumulated report about unused TX variables No unused TX variable ``` + +### Test 13 - Check if a chained rule uses `TX:1` target then it has a previously `capture` action + + +``` +# no need 'capture' action because the TX:1, but there is no chain action +SecRule ARGS "@rx TX:1" \ + "id:1,\ + phase:2,\ + deny,\ + t:none,\ + nolog,\ + tag:OWASP_CRS,\ + ver:'OWASP_CRS/4.7.0-dev'" + +# normal use +SecRule ARGS "@rx attack" \ + "id:2,\ + phase:2,\ + deny,\ + capture,\ + t:none,\ + nolog,\ + tag:OWASP_CRS,\ + ver:'OWASP_CRS/4.7.0-dev',\ + chain" + SecRule TX:1 "@eq attack" + +# invalid use +SecRule ARGS "@rx attack" \ + "id:3,\ + phase:2,\ + deny,\ + t:none,\ + nolog,\ + tag:OWASP_CRS,\ + ver:'OWASP_CRS/4.7.0-dev',\ + chain" + SecRule TX:0 "@eq attack" +``` + +Rule 1 is a "regular" rule, it can use `TX:1` without any restriction. +Rule 2 is the valid form. +Rule 3 is a chained rule and it uses `TX:0` in second rule, but first rule does not have `capture`. + +``` +$ ./rules-check.py -r examples/test13.conf -t ../APPROVED_TAGS -v "4.7.0-dev" +Config file: examples/test13.conf + Parsing ok. +Checking parsed rules... +examples/test13.conf + Ignore case check ok. + Action order check ok. + Indentation check ok. + no 'ctl:auditLogParts' action found. + no duplicate id's + paranoia-level tags are correct. + PL anomaly_scores are correct. + All TX variables are set. + No new tags added. + No t:lowercase and (?i) flag used. + No rule without OWASP_CRS tag. + No rule without correct ver action. + There are one or more rules using TX.N without capture action. + file=examples/test13.conf, line=34, endLine=34, title=capture is missing: rule uses TX.N without capture; rule id: 3' +End of checking parsed rules +Cumulated report about unused TX variables + No unused TX variable +``` diff --git a/util/crs-rules-check/examples/test13.conf b/util/crs-rules-check/examples/test13.conf new file mode 100644 index 000000000..51f259f5d --- /dev/null +++ b/util/crs-rules-check/examples/test13.conf @@ -0,0 +1,35 @@ + +# no need 'capture' action because the TX:1, but there is no chain action +SecRule ARGS "@rx TX:1" \ + "id:1,\ + phase:2,\ + deny,\ + t:none,\ + nolog,\ + tag:OWASP_CRS,\ + ver:'OWASP_CRS/4.7.0-dev'" + +# normal use +SecRule ARGS "@rx attack" \ + "id:2,\ + phase:2,\ + deny,\ + capture,\ + t:none,\ + nolog,\ + tag:OWASP_CRS,\ + ver:'OWASP_CRS/4.7.0-dev',\ + chain" + SecRule TX:1 "@eq attack" + +# invalid use +SecRule ARGS "@rx attack" \ + "id:3,\ + phase:2,\ + deny,\ + t:none,\ + nolog,\ + tag:OWASP_CRS,\ + ver:'OWASP_CRS/4.7.0-dev',\ + chain" + SecRule TX:0 "@eq attack" diff --git a/util/crs-rules-check/rules-check.py b/util/crs-rules-check/rules-check.py index 2c7850be5..26fb68d40 100755 --- a/util/crs-rules-check/rules-check.py +++ b/util/crs-rules-check/rules-check.py @@ -83,6 +83,7 @@ def __init__(self, data, txvars): self.ignorecase = [] # list of combinations of t:lowercase and (?i) self.nocrstags = [] # list of rules without tag:OWASP_CRS self.noveract = [] # list of rules without ver action or incorrect ver + self.nocaptact = [] # list of rules which uses TX.N without previous 'capture' self.re_tx_var = re.compile(r"%\{\}") @@ -373,7 +374,7 @@ def check_tx_variable(self, fname): if oparg: for o in oparg: o = o.lower() - o = re.sub(r"tx\.", "", o, re.I) + o = re.sub(r"tx\.", "", o, count = 0, flags = re.I) if (o not in self.globtxvars or phase < self.globtxvars[o]['phase']) and \ not re.match(r"^\d$", o) and \ not re.match(r"/.*/", o) and \ @@ -431,7 +432,7 @@ def check_tx_variable(self, fname): if has_disruptive == True: self.globtxvars[v['variable_part'].lower()]['used'] = True if len(self.undef_txvars) > 0 and self.undef_txvars[-1]['var'] == v['variable_part'].lower(): - del(self.undef_txvars[-1]) + del self.undef_txvars[-1] if chained == False: check_exists = None has_disruptive = False @@ -724,6 +725,66 @@ def check_ver_action(self, version): 'message': f"rule's 'ver' action has incorrect value; rule id: {ruleid}, version: '{ruleversion}', expected: '{crsversion}'" }) + def check_capture_action(self): + """ + check that every chained rule has a `capture` action if it uses TX.N variable + """ + chained = False + ruleid = 0 + chainlevel = 0 + capture_level = None + re_number = re.compile(r"^\d$") + has_capture = False + use_captured_var = False + captured_var_chain_level = 0 + for d in self.data: + # only the SecRule object is relevant + if d['type'].lower() == "secrule": + for v in d['variables']: + if v['variable'].lower() == 'tx' and re_number.match(v['variable_part']): + if use_captured_var == False: # only the first occurrence required + use_captured_var = True + captured_var_chain_level = chainlevel + if "actions" in d: + aidx = 0 # stores the index of current action + if chained == False: + ruleid = 0 + chainlevel = 0 + else: + chained = False + while aidx < len(d['actions']): + # read the action into 'a' + a = d['actions'][aidx] + if a['act_name'] == "id": + ruleid = int(a['act_arg']) + if a['act_name'] == "chain": + chained = True + chainlevel += 1 + if a['act_name'] == "capture" : + capture_level = chainlevel + has_capture = True + aidx += 1 + if ruleid > 0 and chained == False: # end of chained rule + if use_captured_var == True: + # we allow if target with TX:N is in the first rule + # of a chained rule without 'capture' + if captured_var_chain_level > 0: + if has_capture == False or captured_var_chain_level < capture_level: + self.nocaptact.append({ + 'ruleid' : ruleid, + 'line' : a['lineno'], + 'endLine': a['lineno'], + 'message': f"rule uses TX.N without capture; rule id: {ruleid}'" + }) + # clear variables + chained = False + chainlevel = 0 + has_capture = False + capture_level = 0 + captured_var_chain_level = 0 + use_captured_var = False + ruleid = 0 + def remove_comments(data): """ In some special cases, remove the comments from the beginning of the lines. @@ -786,16 +847,16 @@ def remove_comments(data): def errmsg(msg): if oformat == "github": - print("::error %s" % (msg)) + print("::error::%s" % (msg)) else: print(msg) def errmsgf(msg): if oformat == "github": if 'message' in msg and msg['message'].strip() != "": - print("::error%sfile={file},line={line},endLine={endLine},title={title}: {message}".format(**msg) % (msg['indent']*" ")) + print("::error%sfile={file},line={line},endLine={endLine},title={title}:: {message}".format(**msg) % (msg['indent']*" ")) else: - print("::error%sfile={file},line={line},endLine={endLine},title={title}".format(**msg) % (msg['indent']*" ")) + print("::error%sfile={file},line={line},endLine={endLine},title={title}::".format(**msg) % (msg['indent']*" ")) else: if 'message' in msg and msg['message'].strip() != "": print("%sfile={file}, line={line}, endLine={endLine}, title={title}: {message}".format(**msg) % (msg['indent']*" ")) @@ -804,7 +865,7 @@ def errmsgf(msg): def msg(msg): if oformat == "github": - print("::debug %s" % (msg)) + print("::debug::%s" % (msg)) else: print(msg) @@ -850,7 +911,7 @@ def generate_version_string(): # if no --version/-v was given, get version from git describe --tags output crsversion = generate_version_string() else: - crsversion = args.version + crsversion = args.version.strip() # if no "OWASP_CRS/" prefix, append it if not crsversion.startswith("OWASP_CRS/"): crsversion = "OWASP_CRS/" + crsversion @@ -1100,17 +1161,29 @@ def generate_version_string(): errmsgf(a) retval = 1 ### check for ver action - # c.check_ver_action(crsversion) - # if len(c.noveract) == 0: - # msg(" No rule without correct ver action.") - # else: - # errmsg(" There are one or more rules without ver action.") - # for a in c.noveract: - # a['indent'] = 2 - # a['file'] = f - # a['title'] = "ver is missing / incorrect" - # errmsgf(a) - # retval = 1 + c.check_ver_action(crsversion) + if len(c.noveract) == 0: + msg(" No rule without correct ver action.") + else: + errmsg(" There are one or more rules without ver action.") + for a in c.noveract: + a['indent'] = 2 + a['file'] = f + a['title'] = "ver is missing / incorrect" + errmsgf(a) + retval = 1 + + c.check_capture_action() + if len(c.nocaptact) == 0: + msg(" No rule uses TX.N without capture action.") + else: + errmsg(" There are one or more rules using TX.N without capture action.") + for a in c.nocaptact: + a['indent'] = 2 + a['file'] = f + a['title'] = "capture is missing" + errmsgf(a) + retval = 1 msg("End of checking parsed rules") msg("Cumulated report about unused TX variables") diff --git a/util/crs2-renumbering/IdNumbering.csv b/util/crs2-renumbering/IdNumbering.csv deleted file mode 100644 index 269b88af8..000000000 --- a/util/crs2-renumbering/IdNumbering.csv +++ /dev/null @@ -1,1132 +0,0 @@ -200000,000000 -200121,000000 -200273,000000 -200280,000000 -200281,000000 -200287,000000 -200289,000000 -200290,000000 -200299,000000 -200316,000000 -200333,000000 -200337,000000 -200350,000000 -200351,000000 -200366,000000 -200367,000000 -200368,000000 -200369,000000 -200370,000000 -200371,000000 -200372,000000 -200373,000000 -200374,000000 -200375,000000 -200376,000000 -200377,000000 -200378,000000 -200379,000000 -200381,000000 -200382,000000 -200383,000000 -200384,000000 -200385,000000 -200386,000000 -200387,000000 -200388,000000 -200389,000000 -200390,000000 -200391,000000 -200392,000000 -200394,000000 -200395,000000 -200396,000000 -200397,000000 -200398,000000 -200399,000000 -200400,000000 -200401,000000 -200402,000000 -200403,000000 -200404,000000 -200405,000000 -200406,000000 -200407,000000 -200408,000000 -200409,000000 -200410,000000 -200411,000000 -200412,000000 -200413,000000 -200414,000000 -200415,000000 -200416,000000 -200417,000000 -200418,000000 -200419,000000 -200420,000000 -200421,000000 -200422,000000 -200423,000000 -200424,000000 -200425,000000 -200426,000000 -200427,000000 -200428,000000 -200429,000000 -200430,000000 -200431,000000 -200432,000000 -200433,000000 -200434,000000 -200435,000000 -200436,000000 -200437,000000 -200438,000000 -200439,000000 -200440,000000 -200441,000000 -200442,000000 -200443,000000 -200445,000000 -200446,000000 -200447,000000 -200448,000000 -200449,000000 -200450,000000 -200451,000000 -200452,000000 -200453,000000 -200454,000000 -200455,000000 -200456,000000 -200457,000000 -200458,000000 -200459,000000 -200460,000000 -200461,000000 -200462,000000 -200463,000000 -200464,000000 -200465,000000 -200466,000000 -200467,000000 -200468,000000 -200469,000000 -200470,000000 -200471,000000 -200472,000000 -200473,000000 -200474,000000 -200475,000000 -200476,000000 -200477,000000 -200478,000000 -200479,000000 -200480,000000 -200481,000000 -200482,000000 -200483,000000 -200484,000000 -200485,000000 -200486,000000 -200487,000000 -200488,000000 -200489,000000 -200490,000000 -200491,000000 -200492,000000 -200493,000000 -200494,000000 -200495,000000 -200496,000000 -200497,000000 -200498,000000 -200499,000000 -200500,000000 -200501,000000 -200502,000000 -200503,000000 -200504,000000 -200505,000000 -200506,000000 -200507,000000 -200508,000000 -200509,000000 -200510,000000 -200511,000000 -200512,000000 -200513,000000 -200514,000000 -200515,000000 -200516,000000 -200517,000000 -200518,000000 -200519,000000 -200520,000000 -200521,000000 -200522,000000 -200523,000000 -200524,000000 -200525,000000 -200526,000000 -200527,000000 -200528,000000 -200529,000000 -200530,000000 -200532,000000 -200533,000000 -200534,000000 -200535,000000 -200536,000000 -200537,000000 -200538,000000 -200539,000000 -200540,000000 -200541,000000 -200542,000000 -200543,000000 -200544,000000 -200545,000000 -200546,000000 -200547,000000 -200548,000000 -200549,000000 -200550,000000 -200551,000000 -200552,000000 -200553,000000 -200554,000000 -200555,000000 -200556,000000 -200557,000000 -200558,000000 -200559,000000 -200560,000000 -200561,000000 -200562,000000 -200563,000000 -200564,000000 -200565,000000 -200566,000000 -200567,000000 -200568,000000 -200569,000000 -200570,000000 -200571,000000 -200572,000000 -200573,000000 -200574,000000 -200575,000000 -200576,000000 -200577,000000 -200578,000000 -200579,000000 -200580,000000 -200581,000000 -200582,000000 -200583,000000 -200584,000000 -200585,000000 -200586,000000 -200587,000000 -200588,000000 -200589,000000 -200590,000000 -200591,000000 -200592,000000 -200593,000000 -200594,000000 -200595,000000 -200596,000000 -200597,000000 -200598,000000 -200599,000000 -200600,000000 -200601,000000 -200602,000000 -200603,000000 -200604,000000 -200605,000000 -200606,000000 -200607,000000 -200608,000000 -200609,000000 -200610,000000 -200611,000000 -200612,000000 -200613,000000 -200614,000000 -200615,000000 -200616,000000 -200617,000000 -200618,000000 -200619,000000 -200620,000000 -200621,000000 -200622,000000 -200623,000000 -200624,000000 -200625,000000 -200626,000000 -200627,000000 -200628,000000 -200629,000000 -200630,000000 -200631,000000 -200632,000000 -200633,000000 -200634,000000 -200635,000000 -200645,000000 -200646,000000 -200647,000000 -200648,000000 -200649,000000 -200650,000000 -200651,000000 -200652,000000 -200653,000000 -200654,000000 -200655,000000 -200656,000000 -200657,000000 -200658,000000 -200659,000000 -200660,000000 -200661,000000 -200662,000000 -200663,000000 -200664,000000 -200665,000000 -200666,000000 -200667,000000 -200668,000000 -200669,000000 -200670,000000 -200671,000000 -200673,000000 -200674,000000 -200675,000000 -200676,000000 -200677,000000 -200678,000000 -200679,000000 -200680,000000 -200681,000000 -200682,000000 -200683,000000 -200684,000000 -200685,000000 -200686,000000 -200687,000000 -200688,000000 -200689,000000 -200690,000000 -200692,000000 -200693,000000 -200694,000000 -200695,000000 -200696,000000 -200697,000000 -200698,000000 -200699,000000 -200700,000000 -200701,000000 -200702,000000 -200703,000000 -200704,000000 -200705,000000 -200706,000000 -200707,000000 -200708,000000 -200709,000000 -200710,000000 -200711,000000 -200712,000000 -200713,000000 -200714,000000 -200718,000000 -200719,000000 -200720,000000 -200721,000000 -200722,000000 -200723,000000 -200724,000000 -200725,000000 -200726,000000 -200727,000000 -200728,000000 -200729,000000 -200730,000000 -200731,000000 -200732,000000 -200733,000000 -200734,000000 -200735,000000 -200736,000000 -200737,000000 -200738,000000 -200739,000000 -200740,000000 -200741,000000 -200742,000000 -200743,000000 -200744,000000 -200745,000000 -200746,000000 -200747,000000 -200748,000000 -200749,000000 -200751,000000 -200752,000000 -200753,000000 -200754,000000 -200755,000000 -200756,000000 -200789,000000 -200865,000000 -200868,000000 -200872,000000 -200882,000000 -200883,000000 -200884,000000 -200885,000000 -200887,000000 -200888,000000 -200889,000000 -200890,000000 -200892,000000 -200893,000000 -200896,000000 -200897,000000 -200899,000000 -200901,000000 -200905,000000 -200906,000000 -200907,000000 -200908,000000 -200910,000000 -200912,000000 -200914,000000 -200916,000000 -200917,000000 -200918,000000 -200919,000000 -200922,000000 -200923,000000 -200930,000000 -200931,000000 -200932,000000 -200933,000000 -200936,000000 -200937,000000 -200938,000000 -200939,000000 -200941,000000 -200942,000000 -200943,000000 -200945,000000 -200946,000000 -200950,000000 -200959,000000 -200964,000000 -200965,000000 -200966,000000 -200967,000000 -200969,000000 -200971,000000 -200972,000000 -200973,000000 -200974,000000 -200975,000000 -200976,000000 -200978,000000 -200979,000000 -200983,000000 -200984,000000 -200987,000000 -200988,000000 -200989,000000 -200990,000000 -200991,000000 -200992,000000 -200993,000000 -200994,000000 -200995,000000 -200996,000000 -200997,000000 -200999,000000 -201001,000000 -201002,000000 -201003,000000 -201004,000000 -201007,000000 -201008,000000 -201009,000000 -201012,000000 -201013,000000 -201014,000000 -201016,000000 -201017,000000 -201018,000000 -201019,000000 -201020,000000 -201022,000000 -201025,000000 -201026,000000 -201027,000000 -201034,000000 -201035,000000 -201036,000000 -201046,000000 -201047,000000 -201048,000000 -201055,000000 -201056,000000 -201061,000000 -201062,000000 -201063,000000 -201064,000000 -201065,000000 -201066,000000 -201070,000000 -201071,000000 -201072,000000 -201075,000000 -201077,000000 -201078,000000 -201080,000000 -201083,000000 -201084,000000 -201085,000000 -201086,000000 -201092,000000 -201094,000000 -201095,000000 -201097,000000 -201098,000000 -201099,000000 -201100,000000 -201101,000000 -201102,000000 -201104,000000 -201105,000000 -201106,000000 -201107,000000 -201108,000000 -201109,000000 -201110,000000 -201111,000000 -201113,000000 -201114,000000 -201115,000000 -201116,000000 -201117,000000 -201119,000000 -201120,000000 -201121,000000 -201125,000000 -201126,000000 -201127,000000 -201137,000000 -201138,000000 -201142,000000 -201145,000000 -201155,000000 -201156,000000 -201157,000000 -201166,000000 -201167,000000 -201172,000000 -201173,000000 -201182,000000 -201183,000000 -201184,000000 -201185,000000 -201187,000000 -201188,000000 -201192,000000 -201193,000000 -201194,000000 -201195,000000 -201200,000000 -201201,000000 -201202,000000 -201203,000000 -201204,000000 -201206,000000 -201207,000000 -201209,000000 -201212,000000 -201213,000000 -201216,000000 -201218,000000 -201219,000000 -201221,000000 -201222,000000 -201233,000000 -201234,000000 -201235,000000 -201236,000000 -201237,000000 -201238,000000 -201239,000000 -201240,000000 -201241,000000 -201242,000000 -201243,000000 -201247,000000 -201248,000000 -201249,000000 -201256,000000 -201257,000000 -201258,000000 -201260,000000 -201265,000000 -201266,000000 -201267,000000 -201268,000000 -201269,000000 -201270,000000 -201271,000000 -201272,000000 -201274,000000 -201275,000000 -201279,000000 -201282,000000 -201283,000000 -201287,000000 -201288,000000 -201294,000000 -201295,000000 -201299,000000 -201308,000000 -201309,000000 -201310,000000 -201311,000000 -201312,000000 -201313,000000 -201315,000000 -201322,000000 -201323,000000 -201330,000000 -201331,000000 -201342,000000 -201343,000000 -201346,000000 -201347,000000 -900001,000000 -900002,000000 -900003,000000 -900004,000000 -900005,000000 -900006,000000 -900007,000000 -900008,000000 -900009,000000 -900010,000000 -900011,000000 -900012,000000 -900013,000000 -900014,000000 -900015,000000 -900016,000000 -900017,000000 -900018,000000 -900019,000000 -900020,000000 -900021,000000 -900030,000000 -900031,000000 -900032,000000 -900033,000000 -900034,000000 -900035,000000 -900036,000000 -900037,000000 -900038,000000 -900039,000000 -900040,000000 -900041,000000 -900042,000000 -900043,000000 -900044,000000 -900045,000000 -900046,000000 -900047,000000 -900048,000000 -900050,910100 -900051,910110 -900051,910120 -910006,000000 -910007,000000 -910008,000000 -920005,000000 -920006,000000 -920007,000000 -920008,000000 -920009,000000 -920010,000000 -920011,000000 -920012,000000 -920013,000000 -920014,000000 -920015,000000 -920016,000000 -920017,000000 -920018,000000 -920019,000000 -920020,000000 -920021,000000 -920022,000000 -920023,000000 -950000,943120 -950001,942150 -950002,000000 -950003,943110 -950005,930120 -950006,000000 -950007,000000 -950008,000000 -950009,943100 -950010,000000 -950011,000000 -950012,921100 -950018,000000 -950019,000000 -950020,000000 -950103,930100 -950104,930110 -950107,920220 -950108,920240 -950109,920230 -950110,000000 -950115,000000 -950116,920260 -950117,931100 -950118,931110 -950119,931120 -950120,931130 -950801,920250 -950901,942130 -950907,932100 -950908,000000 -950910,921120 -950911,921130 -950912,921140 -950913,921150 -950914,921160 -950915,921110 -950921,000000 -950922,000000 -950923,000000 -958000,000000 -958001,000000 -958002,000000 -958003,000000 -958004,000000 -958005,000000 -958006,000000 -958007,000000 -958008,000000 -958009,000000 -958010,000000 -958011,000000 -958012,000000 -958013,000000 -958016,000000 -958017,000000 -958018,000000 -958019,000000 -958020,000000 -958022,000000 -958023,000000 -958024,000000 -958025,000000 -958026,000000 -958027,000000 -958028,000000 -958030,000000 -958031,000000 -958032,000000 -958033,000000 -958034,000000 -958036,000000 -958037,000000 -958038,000000 -958039,000000 -958040,000000 -958041,000000 -958045,000000 -958046,000000 -958047,000000 -958049,000000 -958051,000000 -958052,000000 -958054,000000 -958056,000000 -958057,000000 -958059,000000 -958230,920190 -958231,920200 -958291,000000 -958295,920210 -958297,000000 -958404,000000 -958405,000000 -958406,000000 -958407,000000 -958408,000000 -958409,000000 -958410,000000 -958411,000000 -958412,000000 -958413,000000 -958414,000000 -958415,000000 -958416,000000 -958417,000000 -958418,000000 -958419,000000 -958420,000000 -958421,000000 -958422,000000 -958423,000000 -958976,000000 -958977,933110 -958978,933000 -958979,933120 -958980,933130 -959070,942380 -959071,942390 -959072,942400 -959073,942410 -959151,933100 -960000,920120 -960001,000000 -960002,000000 -960003,000000 -960006,920330 -960007,920290 -960008,920280 -960009,920320 -960010,920420 -960011,920170 -960012,920180 -960014,000000 -960015,920300 -960016,920160 -960017,920350 -960018,000000 -960020,000000 -960021,920310 -960022,000000 -960024,942460 -960032,911100 -960034,920430 -960035,920440 -960038,920450 -960208,920370 -960209,920360 -960335,920380 -960341,920390 -960342,920400 -960343,920410 -960901,920270 -960902,000000 -960904,920340 -960911,920100 -960912,920130 -960913,000000 -960914,920140 -960915,920150 -970003,951100 -970004,954120 -970007,000000 -970008,000000 -970009,953100 -970010,000000 -970011,000000 -970012,000000 -970013,950130 -970014,952100 -970015,953110 -970016,000000 -970017,952110 -970017,954100 -970018,000000 -970021,000000 -970118,954110 -970901,950100 -970902,953120 -970903,000000 -970904,954130 -973300,941320 -973301,000000 -973302,000000 -973303,000000 -973304,000000 -973305,000000 -973306,000000 -973307,000000 -973308,000000 -973309,000000 -973310,000000 -973311,000000 -973312,000000 -973313,000000 -973314,000000 -973315,941190 -973316,000000 -973317,941300 -973318,941290 -973319,941310 -973320,941280 -973321,941270 -973322,941250 -973323,941240 -973324,941230 -973325,000000 -973326,941200 -973327,000000 -973328,000000 -973329,000000 -973330,000000 -973331,000000 -973332,941330 -973333,941340 -973334,000000 -973335,000000 -973336,941110 -973337,941120 -973338,941140 -973339,941130 -973340,941160 -973341,941170 -973342,941180 -973343,941100 -973344,941100 -973345,941220 -973346,941210 -973347,000000 -973348,941260 -973350,941150 -981000,000000 -981001,000000 -981003,000000 -981004,000000 -981005,000000 -981006,000000 -981007,000000 -981018,000000 -981020,901100 -981021,901110 -981022,000000 -981033,000000 -981034,000000 -981035,000000 -981036,000000 -981037,000000 -981038,000000 -981039,000000 -981040,000000 -981041,000000 -981042,000000 -981043,000000 -981044,912120 -981045,912130 -981046,912140 -981047,912150 -981048,912160 -981049,912170 -981050,000000 -981051,000000 -981052,000000 -981053,000000 -981054,000000 -981055,000000 -981056,000000 -981057,000000 -981058,000000 -981059,000000 -981060,000000 -981061,000000 -981062,000000 -981063,000000 -981064,000000 -981075,000000 -981076,000000 -981077,000000 -981078,000000 -981079,000000 -981080,000000 -981081,000000 -981082,000000 -981083,000000 -981084,000000 -981085,000000 -981086,000000 -981087,000000 -981088,000000 -981089,000000 -981090,000000 -981091,000000 -981092,000000 -981093,000000 -981094,000000 -981095,000000 -981096,000000 -981097,000000 -981098,000000 -981099,000000 -981100,000000 -981101,000000 -981102,000000 -981103,000000 -981104,000000 -981105,000000 -981110,000000 -981131,000000 -981132,000000 -981133,000000 -981134,000000 -981136,000000 -981137,000000 -981138,910140 -981139,910190 -981140,910000 -981141,910150 -981142,910160 -981143,910170 -981144,910180 -981145,000000 -981172,942420 -981173,942430 -981175,949100 -981176,949190 -981177,000000 -981178,000000 -981179,949110 -981180,949120 -981181,949130 -981182,949140 -981183,949150 -981184,949160 -981185,000000 -981186,949170 -981187,949180 -981188,000000 -981189,000000 -981190,000000 -981191,000000 -981192,000000 -981193,000000 -981194,000000 -981195,000000 -981196,000000 -981197,000000 -981198,000000 -981199,000000 -981200,959100 -981201,980100 -981202,980110 -981203,980120 -981204,980130 -981205,980140 -981219,000000 -981220,000000 -981221,000000 -981222,000000 -981223,000000 -981224,000000 -981227,920110 -981228,000000 -981229,000000 -981230,000000 -981231,942440 -981235,000000 -981236,000000 -981237,000000 -981238,000000 -981239,000000 -981240,942300 -981241,942230 -981242,942330 -981243,942370 -981244,942180 -981245,942260 -981246,942340 -981247,942360 -981248,942210 -981249,942310 -981250,942170 -981251,942350 -981252,942240 -981253,942320 -981254,942280 -981255,942190 -981256,942250 -981257,942200 -981260,942450 -981261,942100 -981270,942290 -981272,942160 -981276,942270 -981277,942220 -981300,000000 -981301,000000 -981302,000000 -981303,000000 -981304,000000 -981305,000000 -981306,000000 -981307,000000 -981308,000000 -981309,000000 -981310,000000 -981311,000000 -981312,000000 -981313,000000 -981314,000000 -981315,000000 -981316,000000 -981317,000000 -981318,942110 -981319,942120 -981320,942140 -981400,000000 -981401,000000 -981402,000000 -981403,000000 -981404,000000 -981405,000000 -981406,000000 -981407,000000 -990002,913100 -990012,000000 -990901,913110 -990902,913120 -999003,000000 -999004,000000 -999005,000000 -999006,000000 -999008,000000 -999010,000000 -999011,000000 -9700010,951110 -9700011,951120 -9700012,951130 -9700013,951140 -9700014,951150 -9700015,951160 -9700016,951170 -9700017,951180 -9700018,951190 -9700019,951200 -9700020,951210 -9700021,951220 -9700022,951230 -9700023,951240 -9700024,951250 -9700025,951260 diff --git a/util/crs2-renumbering/README b/util/crs2-renumbering/README deleted file mode 100644 index fd1861dd2..000000000 --- a/util/crs2-renumbering/README +++ /dev/null @@ -1,30 +0,0 @@ -CRS 2.x to 3.x migration utility -================================ - -In CRS 3.0, we have renumbered the rules to be more logical and helpful. -The new rule file names now correspond with the rule IDs in the file. -First rule of a given file is usually 9XX100, then the rules continue -in steps of ten. Related rules/siblings follow with a single digit -change (9XX101, etc.). - -This utility replaces CRS 2 ruleIds with their CRS 3 counterparts. -You can use it when migrating your CRS 2 exclusion/.conf files to CRS 3.0 -or higher. - -Example usage: - - ./update.py -f your_old_modsec_conf.conf - -Rules which have been removed in CRS 3 are listed with the new ID 000000 in the -CSV file. This means that the former rule is no longer part of CRS 3. If after -replacement you find a string 000000 in your config files, you can likely -remove that exclusion or special case. - -If you want to create your own tooling for this migration, you can use -the file idNumbering.csv in this directory. It lists the old rule IDs of -CRS 2.2, together with the corresponding rule IDs in CRS 3.0. - -A rule renumbering is painful for all existing installations. But we really -think that the rule IDs lacked sense and reason, and we are confident future -maintenance will be much easier once this is done. We do not plan to change -rule IDs after this. We appreciate your understanding in this matter. diff --git a/util/crs2-renumbering/update.py b/util/crs2-renumbering/update.py deleted file mode 100755 index 42ea75b96..000000000 --- a/util/crs2-renumbering/update.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""This is designed to convert 2.x CRS ID numbering to 3.x CRS numbering""" -from __future__ import print_function -import csv -import argparse -import os -import sys - -def main(): - """Main function that contains all the logic to relabel CRS IDs""" - - id_translation_file = os.path.join(sys.path[0], "IdNumbering.csv") - - if not os.path.isfile(id_translation_file): - sys.stderr.write("We were unable to locate the ID translation CSV (idNumbering.csv) \ - please place this is the same directory as this script\n") - sys.exit(1) - - parser = argparse.ArgumentParser(description="A program that takes in an exceptions file \ - and renumbers all the ID to match OWASP CRS 3 numbers. Output will be directed to STDOUT.") - parser.add_argument("-f", "--file", required=True, action="store", dest="fname", \ - help="the file to be renumbered") - args = parser.parse_args() - - if not os.path.isfile((args.fname).encode('utf8')): - sys.stderr.write("We were unable to find the file you were trying to update the ID numbers \ - in, please check your path\n") - sys.exit(1) - - fcontent = "" - - try: - update_file = open((args.fname).encode('utf-8'), "r") - try: - fcontent = update_file.read() - finally: - update_file.close() - except IOError: - sys.stderr.write("There was an error opening the file you were trying to update") - - if fcontent != "": - # CSV File - id_csv_file = open(id_translation_file, 'rt') - try: - reader = csv.reader(id_csv_file) - for row in reader: - fcontent = fcontent.replace(row[0], row[1]) - finally: - id_csv_file.close() - print(fcontent) - -if __name__ == "__main__": - main() diff --git a/util/find-max-datalen-in-tests/README.md b/util/find-max-datalen-in-tests/README.md deleted file mode 100644 index 8f2dcd8b3..000000000 --- a/util/find-max-datalen-in-tests/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Find the longest data in CRS test cases - -This page describes how can you find the longest data string in CRS test cases. - -## Goals - -Some rules check the `FILES_COMBINED_SIZE` against the `TX:COMBINED_FILE_SIZES` variable. To check these work as well, we need to set the `tx.combined_file_sizes` variable and send a payload which is greater than this value - see [this](https://github.com/coreruleset/coreruleset/blob/v3.4/dev/tests/regression/README.md#requirements): - -``` -SecAction "id:900005,\ - phase:1,\ - nolog,\ - pass,\ - ctl:ruleEngine=DetectionOnly,\ - ctl:ruleRemoveById=910000,\ - setvar:tx.blocking_paranoia_level=4,\ - setvar:tx.crs_validate_utf8_encoding=1,\ - setvar:tx.arg_name_length=100,\ - setvar:tx.arg_length=400,\ - setvar:tx.combined_file_sizes=MAX_LEN" -``` - -In `modsecurity-crs-docker` [here](https://github.com/coreruleset/modsecurity-crs-docker/blob/master/src/opt/modsecurity/activate-rules.sh#L79-L82) is how the setting works. - -To configure the Github action, you need to set up this in CORERULESET/test/docker-compose.yaml: - -``` - ... - COMBINED_FILE_SIZES=MAX_LEN - ... -``` - -## Usage - -To find the possible value of MAX_LEN, run this script with one mandatory, and one optional argument. The mandatory argument is the path of the CRS directory (the root). The optional argument is the `-i` or `--ignoretests`, where you can pass the test id what you want to skip - eg. you want to use the test to exceed the maximum length. - -``` -./find_max_datalen.py ../.. -i 920410-1 -``` - -In this case, you pass the CRS root as parent dir, and skip the test id 920410-1, which wants to exceed the maximum length. - -## Prerequisites - -* Python3 interpreter -* Py-YAML -* CRS rule set diff --git a/util/find-max-datalen-in-tests/find_max_datalen.py b/util/find-max-datalen-in-tests/find_max_datalen.py deleted file mode 100755 index aab66ac76..000000000 --- a/util/find-max-datalen-in-tests/find_max_datalen.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env python3 - -# This file helps to find the longest data size in all test cases under -# CORERULESET_ROOT/test/regression/tests directory. - -# You just have to pass the CORERULESET_ROOT as argument. -# Optional argument can be passed -i or --ignoretests - the listed test -# cases will skipped. - -# At the end, the script will print the longest length, and the rule where -# the data is. - - -import sys -import os -import os.path -import yaml -import argparse - -if __name__ == "__main__": - - desc = """This script needs a mandatory argument where you pass the path to your -coreruleset. Then it iterates through tests, and finds the longest request -body (data) between test cases. To ignore a test case, pass the number of the -test with '-i' or '--ignoretests', eg.: '... -i 920410-1'""" - - parser = argparse.ArgumentParser(description=desc, formatter_class=argparse.RawTextHelpFormatter) - parser.add_argument('-i', '--ignoretests', metavar='ignoretests', - help='Ignore listed rules, separated by comma', required=False, - nargs=1) - parser.add_argument('crspath', metavar='/path/to/coreruleset', type=str, - help='Directory path to CRS') - args = parser.parse_args() - - test_cases = {} - testpath = args.crspath.rstrip("/") + "/tests/regression/tests" - - if not os.path.isdir(testpath): - print("Directory does not exist: %s" % (testpath)) - sys.exit(1) - - ignoretests = [] - if args.ignoretests is not None: - ignoretests = args.ignoretests[0].split(",") - - try: - max_len = 0 - max_title = "" - for root, dirs, files in os.walk(testpath): - path = root.split(os.sep) - for file in files: - if file.endswith(".yaml"): - with open(os.path.join(root, file)) as f: - test = yaml.full_load(f) - for t in test['tests']: - title = t['test_title'] - for s in t['stages']: - if 'stage' in s: - if 'input' in s['stage']: - if 'data' in s['stage']['input']: - if len(s['stage']['input']['data']) > max_len \ - and title not in ignoretests: - max_len = len(s['stage']['input']['data']) - max_title = title - print("Longest data: %d in test %s" % (max_len, max_title)) - except: - print("Can't open files in given path!") - print(sys.exc_info()) - sys.exit(1) diff --git a/util/fp-finder/english-extended.txt b/util/fp-finder/english-extended.txt deleted file mode 100644 index 8a3c41b4a..000000000 --- a/util/fp-finder/english-extended.txt +++ /dev/null @@ -1,31 +0,0 @@ -basename -checkdate -chroot -config -crypto -dir -exp -file_exists -fileatime -filectime -filegroup -fileinode -filemtime -fileowner -fileperms -filesize -filetype -idate -is_a -md5 -misc -ord -popen -prev -stat -substr -symlink -syslog -ucfirst -unlink -unset diff --git a/util/fp-finder/spell.sh b/util/fp-finder/spell.sh deleted file mode 100755 index 2e5dde3d0..000000000 --- a/util/fp-finder/spell.sh +++ /dev/null @@ -1,163 +0,0 @@ -#!/bin/bash - -# This program uses WordNet to find English words. The WordNet license: - -# WordNet Release 3.0 This software and database is being provided to you, -# the LICENSEE, by Princeton University under the following license. -# By obtaining, using and/or copying this software and database, you agree that you have read, -# understood, and will comply with these terms and conditions.: Permission to use, copy, -# modify and distribute this software and database and its documentation for any purpose and -# without fee or royalty is hereby granted, provided that you agree to comply with -# the following copyright notice and statements, including the disclaimer, and that the same -# appear on ALL copies of the software, database and documentation, including modifications -# that you make for internal use or for distribution. -# WordNet 3.0 Copyright 2006 by Princeton University. -# All rights reserved. -# THIS SOFTWARE AND DATABASE IS PROVIDED "AS IS" AND PRINCETON UNIVERSITY MAKES NO REPRESENTATIONS -# OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PRINCETON UNIVERSITY -# MAKES NO REPRESENTATIONS OR WARRANTIES OF MERCHANT- ABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE -# OR THAT THE USE OF THE LICENSED SOFTWARE, DATABASE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD -# PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -# The name of Princeton University or Princeton may not be used in advertising or publicity -# pertaining to distribution of the software and/or database. Title to copyright in this -# software, database and any associated documentation shall at all times remain with -# Princeton University and LICENSEE agrees to preserve same. - -if ! command -v wn > /dev/null 2>&1; then - cat <<EOF -This program requires WordNet to be installed. Aborting. - -The WordNet shell utility 'wn' can be obtained via the package -manager of your choice (the package is usually called 'wordnet'). -EOF - - exit 1 -fi - -check() { - if ! ${MACHINE_READABLE}; then - echo "-> checking ${datafile_name}" - fi - - local datafile="${1}" - local datafile_name - - if [ "${1}" = "-" ]; then - datafile="/dev/stdin" - datafile_name="stdin" - else - datafile_name="${datafile##*/}" - fi - - local datafile="${1}" - local datafile_name - - if [ "${1}" = "-" ]; then - datafile="/dev/stdin" - datafile_name="stdin" - else - datafile_name="${datafile##*/}" - fi - - while read -r word; do - # wordnet exit code is equal to number of search results - if [ -n "${SUFFIX}" ]; then - word="$(sed -E "s/(.*)${SUFFIX}/\1/" <<<"${word}")" - fi - if ! grep -qE '^[A-Za-z]+$' <<<"${word}"; then - continue - fi - - if ! wn "${word}" >/dev/null 2>&1; then - if ! ${MACHINE_READABLE}; then - printf " \`- found English word via wn: " - fi - echo "${word}" - else - if ${USE_EXTENDED}; then - # shellcheck disable=SC2046 - if [ $(grep -c -E "^$word$" "$EXTENDED_WORDS_LIST_PATH") -ne 0 ]; then - if ! ${MACHINE_READABLE}; then - printf " \`- found English word via extended list: " - fi - echo "${word}" - fi - fi - fi - done <<<"$(sort "${datafile}" | uniq)" - - if ! ${MACHINE_READABLE}; then - echo "" - fi -} - -usage() { - cat <<EOF -usage: spell.sh [-mhe] [file] - Finds English words in files that contain word lists. - - The optional file argument is the path to a file you want to check. If omitted, - all files with the .data suffix in the rules directory will be searched. - - -h, --help Show this message and exit - -m, --machine Print machine readable output - -e, --extended English words are extended by a manual list - -s, --suffix Regular expression for suffix to strip off words passed to wordnet -EOF -} - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -EXTENDED_WORDS_LIST_PATH="${SCRIPT_DIR}/english-extended.txt" -RULES_DIR="${SCRIPT_DIR}/../../rules/" - -MACHINE_READABLE=false -USE_EXTENDED=false - -POSITIONAL_ARGS=() -while [[ $# -gt 0 ]]; do - # shellcheck disable=SC2221,SC2222 - case $1 in - -m|--machine) - MACHINE_READABLE=true - shift - ;; - -e|--extended) - USE_EXTENDED=true - shift - ;; - -s|--suffix) - shift - SUFFIX="${1}" - shift - ;; - -h|--help) - usage - exit 1 - ;; - -*|--*) - if [ $# -eq 1 ]; then - POSITIONAL_ARGS+=("$1") # save positional arg - shift # past argument - else - echo "Unknown option $1" - usage - exit 1 - fi - ;; - *) - POSITIONAL_ARGS+=("$1") # save positional arg - shift - ;; - esac -done - -set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters - - -if [ -n "${1}" ]; then - check "${1}" -else - for datafile in "${RULES_DIR}"*.data; do - check "${datafile}" - done -fi diff --git a/util/geo-location/README b/util/geo-location/README deleted file mode 100644 index b9018fb90..000000000 --- a/util/geo-location/README +++ /dev/null @@ -1,5 +0,0 @@ -License -The GeoLite databases are distributed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. The attribution requirement may be met by including the following in all advertising and documentation mentioning features of or use of this database: - -This product includes GeoLite data created by MaxMind, available from - <a href="http://www.maxmind.com">http://www.maxmind.com</a>. diff --git a/util/honeypot-sensor/README.md b/util/honeypot-sensor/README.md deleted file mode 100644 index 66fc6af9b..000000000 --- a/util/honeypot-sensor/README.md +++ /dev/null @@ -1,14 +0,0 @@ -The purpose of these files is to turn your current ModSecurity host into -a pseudo-honeypot sensor by doing the following: - -1. Instructs Apache to listen for traffic on multiple unused ports - - 8000 - - 8080 - - 8888 -2. Creates Apache virtual host containers to bind to these ports. -3. If any traffic is received on these ports, then ModSecurity will - inspect the traffic by inheriting any rules specified in the main - Apache configuration. -4. ModSecurity's Audit Engine will use the mlogc program to forward - the audit log entry onto the ModSecurity Project's central logging - server. diff --git a/util/honeypot-sensor/mlogc-honeypot-sensor.conf b/util/honeypot-sensor/mlogc-honeypot-sensor.conf deleted file mode 100644 index b4afad140..000000000 --- a/util/honeypot-sensor/mlogc-honeypot-sensor.conf +++ /dev/null @@ -1,97 +0,0 @@ -########################################################################## -# Required configuration -# At a minimum, the items in this section will need to be adjusted to -# fit your environment. The remaining options are optional. -########################################################################## - -# Points to the root of the installation. All relative -# paths will be resolved with the help of this path. -CollectorRoot "/var/log/mlogc" - -# ModSecurity Console receiving URI. You can change the host -# and the port parts but leave everything else as is. -ConsoleURI "http://204.13.200.239/rpc/auditLogReceiver" - -# Sensor credentials -SensorUsername "honeypot-sensor" -SensorPassword "test1234" - -# Base directory where the audit logs are stored. This can be specified -# as a path relative to the CollectorRoot, or a full path. -LogStorageDir "data" - -# Transaction log will contain the information on all log collector -# activities that happen between checkpoints. The transaction log -# is used to recover data in case of a crash (or if Apache kills -# the process). -TransactionLog "mlogc-transaction.log" - -# The file where the pending audit log entry data is kept. This file -# is updated on every checkpoint. -QueuePath "mlogc-queue.log" - -# The location of the error log. -ErrorLog "mlogc-error.log" - -# The location of the lock file. -LockFile "mlogc.lck" - -# Keep audit log entries after sending? (0=false 1=true) -# NOTE: This is required to be set in SecAuditLog mlogc config if you -# are going to use a secondary console via SecAuditLog2. -KeepEntries 0 - - -########################################################################## -# Optional configuration -########################################################################## - -# The error log level controls how much detail there -# will be in the error log. The levels are as follows: -# 0 - NONE -# 1 - ERROR -# 2 - WARNING -# 3 - NOTICE -# 4 - DEBUG -# 5 - DEBUG2 -# -ErrorLogLevel 3 - -# How many concurrent connections to the server -# are we allowed to open at the same time? Log collector uses -# multiple connections in order to speed up audit log transfer. -# This is especially needed when the communication takes place -# over a slow link (e.g. not over a LAN). -MaxConnections 10 - -# How many requests a worker will process before recycling itself. -# This is to help prevent problems due to any memory leaks that may -# exists. If this is set to 0, then no maximum is imposed. The default -# is 1000 requests per worker (the number of workers is controlled by the -# MaxConnections limit). -MaxWorkerRequests 1000 - -# The time each connection will sit idle before being reused, -# in milliseconds. Increase if you don't want ModSecurity Console -# to be hit with too many log collector requests. -TransactionDelay 50 - -# The time to wait before initialization on startup in milliseconds. -# Increase if mlogc is starting faster then termination when the -# sensor is reloaded. -StartupDelay 5000 - -# How often is the pending audit log entry data going to be written -# to a file. The default is 15 seconds. -CheckpointInterval 15 - -# If the server fails all threads will back down until the -# problem is sorted. The management thread will periodically -# launch a thread to test the server. The default is to test -# once in 60 seconds. -ServerErrorTimeout 60 - -# The following two parameters are not used yet, but -# reserved for future expansion. -# KeepAlive 150 -# KeepAliveTimeout 300 diff --git a/util/honeypot-sensor/modsecurity_crs_10_honeypot.conf b/util/honeypot-sensor/modsecurity_crs_10_honeypot.conf deleted file mode 100644 index 7002bb76e..000000000 --- a/util/honeypot-sensor/modsecurity_crs_10_honeypot.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Add in honeypot ports. -# - These are common proxy ports used by attackers -# - All traffic accepted on these ports are suspicious. -# -Listen 8000 -Listen 8080 -Listen 8888 - -# -# Create basic virtual host containers that will forward all traffic received -# to the official ModSecurity Project honeypot logging host. -# -# - You should adjust the Document root location to an empty directory on your server -# - Also adjust the path to your local ModSecurity mlogc program and for the -# mlogc-honeypot-sensor.conf file. -# - Make sure you main SecAuditLogType is set to concurrent mode. -# -<VirtualHost *:8000 *:8080 *:8888> -ServerName www.example1.com -DocumentRoot "/usr/local/apache/honeypot-htdocs" -<Directory "/usr/local/apache/honeypot-htdocs"> - Options none - AllowOverride None - Order allow,deny - Allow from all -</Directory> -SecAuditEngine On -SecAuditLog "|/usr/local/apache/bin/mlogc /usr/local/apache/conf/mlogc-honeypot-sensor.conf" -</VirtualHost> diff --git a/util/id-range b/util/id-range deleted file mode 100644 index a58cf06e4..000000000 --- a/util/id-range +++ /dev/null @@ -1,2 +0,0 @@ -900000-2999999 -2000000-299999 diff --git a/util/join-multiline-rules/join.py b/util/join-multiline-rules/join.py deleted file mode 100755 index 7a2fc4ce0..000000000 --- a/util/join-multiline-rules/join.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# -# This script reads all the rule files passed on the command line, -# and outputs them, with each (multi-line) directive joined as a -# single line. -# -# This can be used to work around a bug in Apache < 2.4.11 in -# parsing long configuration directives. -# -# Usage: -# -# util/join-multiline-rules/join.py rules/*.conf > rules/rules.conf.joined -# -# This produces a single 'rules.conf.joined' file that can be included -# in buggy Apache versions. It is recommended to keep this file in the -# rules/ directory (because it refers to .data files in that directory) -# but give it a name not ending in .conf (so the file will not be -# included in *.conf and you can re-run the command multiple times -# without including its own output). -# -# Example: -# -# SecRule &TX:BLOCKING_PARANOIA_LEVEL "@eq 0" \ -# "id:901120,\ -# phase:1,\ -# pass,\ -# nolog,\ -# setvar:tx.blocking_paranoia_level=1" -# -# will be outputted as: -# -# SecRule &TX:BLOCKING_PARANOIA_LEVEL "@eq 0" "id:901120,phase:1,pass,nolog,setvar:tx.blocking_paranoia_level=1" -# - -import fileinput, sys - -for line in fileinput.input(): - line = line.strip() - if line == '': - sys.stdout.write("\n") - continue - - if line[-1] == '\\': - sys.stdout.write(line[0:-1]) - else: - sys.stdout.write(line) - sys.stdout.write("\n") diff --git a/util/php-dictionary-gen/php-dictionary-creator.sh b/util/php-dictionary-gen/php-dictionary-creator.sh index dcb0c55e7..0fea9a3fc 100755 --- a/util/php-dictionary-gen/php-dictionary-creator.sh +++ b/util/php-dictionary-gen/php-dictionary-creator.sh @@ -368,7 +368,7 @@ if [ "$DO_RULE_933161" == "1" ]; then # Being 933161 a stricter sibling of 933160, 933160 entries are also added to 933161. # We read the 933160 file skipping comments and empty lines. Entries are added to 933161 (if not already present). grep -v '^#' "$RA_FILE_PATH$R933160_FILENAME" | awk NF | while read -r R933160_ENTRY; do - + if [ $(grep -c -E "^$R933160_ENTRY$" "$TMP_ENGLISH_WORDS") -eq 0 ]; then # we have to add this function to 933161 echo "Function \"$R933160_ENTRY\" from $R933160_FILENAME added to the stricter sibling $R933161_FILENAME" @@ -376,7 +376,7 @@ if [ "$DO_RULE_933161" == "1" ]; then else echo "Function \"$R933160_ENTRY\" from $R933160_FILENAME already present in the stricter sibling $R933161_FILENAME" fi - + done sort -o "$TMP_ENGLISH_WORDS" "$TMP_ENGLISH_WORDS" @@ -473,7 +473,7 @@ if [ "$DO_RULE_933150" == "1" ]; then else echo "High-risk function \"$HIGH_RISK_FUNC\" already present in $R933150_FILENAME" fi - + done sort -o "$TMP_PHP_FUNCTIONS_FREQUENT" "$TMP_PHP_FUNCTIONS_FREQUENT" echo "File $R933150_FILENAME updated." diff --git a/util/regexp-tricks/negative-lookahead.py b/util/regexp-tricks/negative-lookahead.py deleted file mode 100644 index 0145ef39e..000000000 --- a/util/regexp-tricks/negative-lookahead.py +++ /dev/null @@ -1,121 +0,0 @@ -import argparse - -# WARNING: This script is EXPERIMENTAL. Use with caution. -# -# Known issues: -# * At the moment, it will probably not work with more than two strings. -# -# Known limitations: -# * Any substrings of a target string will also NOT be matched. This is probably due to a limitation in this technique, -# make sure that subtrings of the negative lookahead are not harmful in any way. - -parser = argparse.ArgumentParser(description="This script takes a list of strings and converts them into \ - a regex that acts like a negative lookahead") -parser.add_argument("strings", type=str, nargs='+', - help="the strings to convert into a negative lookahead") -parser.add_argument("--prefix", type=str, default="", - help="sets a prefix for the resulting regex") -parser.add_argument("--suffix", type=str, default="", - help="sets a suffix for the resulting regex") - -args = parser.parse_args() - -# Return the longest prefix of all list elements. Shamelessly copied from: -# https://stackoverflow.com/questions/6718196/determine-the-common-prefix-of-multiple-strings -def commonprefix(m): - "Given a list of pathnames, returns the longest common leading component" - if not m: return '' - s1 = min(m) - s2 = max(m) - for i, c in enumerate(s1): - if c != s2[i]: - return s1[:i] - return s1 - -# flatten returns a string with concatenated dictionary keys -def flatten(dict): - s = "" - - for key in dict.keys(): - s += key - - return s - -# set returns a character set containing the unique characters across all strings for the given index -def set(strings, index, flags): - dict = {} - - for s in strings: - # Continue so we don't panic - if index > len(s) -1: - continue - - dict[s[index]] = '' - - return "[" + flags + flatten(dict) + "]" - -# prepare converts a string for negative lookaheads emulation -def prepare(s, offset): - r = "" - - if len(s) == 0: - return r - - for i in range(offset, len(s)): - for j in range(0, i + 1): - if j == i: - r += "[^" + s[j] + "]" - else: - r += s[j] - - if i != len(s) - 1: - r += "|" - - return r - -# run runs the -def run(): - strings = args.strings - - r = "" - r += set(strings, 0, "^") - - c = "" - d = {} - - # Only find common string if we have more than one - if len(strings) > 1: - c = commonprefix(strings) - - # Collect all characters after the common substring from every string - for s in strings: - if len(s) > len(c) and s.startswith(c): - d[s[len(c)]] = '' - - # Add the common string to the regex to prevent accidental matching - if len(c) > 0: - if len(c) > 1: - r += "|" + "(?:" + prepare(c, 1) + ")" - - r += "|" + "(?:" + c + "[^" + flatten(d) + "]" + ")" - - for s in strings: - g = "" - - # When the common string is > 0, offset with len(c) + 1 because we handled this earlier - if len(c) > 0: - g = prepare(s, len(c) + 1) - else: - g = prepare(s, 1) - - # Add OR boolean if necessary - if len(g) > 0: - r += "|" - - r += g - - print(args.prefix + "(?:" + r + ")" + args.suffix) - -# Only run if script is called directly -if __name__ == "__main__": - run() diff --git a/util/rule_ctl/README.md b/util/rule_ctl/README.md deleted file mode 100644 index 374b37e17..000000000 --- a/util/rule_ctl/README.md +++ /dev/null @@ -1,135 +0,0 @@ -draft - -# OWASP CRS Rule Control Script -This script aims to help when a bulk change on configuration files is needed. rule_ctl.py can, for example, change the value of an action on all rules, or can add/remove/rename a tag on each rule in a file, or can add/remove a transformation function only in rules that match range 942100-942190, etc... - -## Example Usage - -There're only two mandatory parameters: `--config` and `--filter-rule-id`. - -**--config** set the target config file<br> -**--filter-rule-id** a regex that matches only rule ids to change - -For example, if you want to add a new tag on each rule in file `REQUEST-933-APPLICATION-ATTACK-PHP.conf` you can do: - -```sh -python3 util/rule_ctl/rule_ctl.py \ - --config rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf \ - --filter-rule-id ^933.+ \ - --append-tag foo - --dryrun -``` - -`--dryrun` sends to stdout the result of changes and prevent writing changes on file. It's a good idea to always check all commands with dryrun before overwrite the target configuration file. - -You can even alphabetically sort tag list while adding new tags: -```sh -python3 util/rule_ctl/rule_ctl.py \ - --config rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf \ - --filter-rule-id ^933.+ \ - --append-tag foo - --sort-tag - --dryrun -``` - -## Variables -- `--append-variable`: Append a variable on the variable list of selected rules -- `--remove-variable`: Remove exact matching variable from selected rules -- `--replace-variable`: Replace variable on selected rules - -### Examples -Replace the variable name `ARGS` with `ARGS_GET` -```sh -python3 rule_ctl.py --config ../../rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf \ - --filter-rule-id ^.\* \ - --replace-variable ARGS,ARGS_GET \ - --dryrun -``` - -Replace the variable `ARGS` with `!ARGS_GET:'lisa'` -```sh -python3 rule_ctl.py --config ../../rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf \ - --filter-rule-id ^.\* \ - --replace-variable ARGS,\!ARGS_GET:\'lisa\' \ - --dryrun -``` - -## Tags -- `--append-tag`: Append a new tag to the tag list on selected rules -- `--remove-tag`: Remove tag from tag list on selected rules -- `--rename-tag`: Rename tag on selected rules -- `--sort-tags`: Alphabetically sort tag list on selected rules - -### Examples -Append a new tag `foo` and sort tag list -```sh -python3 rule_ctl.py --config ../../rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf \ - --filter-rule-id ^.\* \ - --append-tag foo \ - --sort-tags \ - --dryrun -``` - -Remove a tag `foo` -```sh -python3 rule_ctl.py --config ../../rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf \ - --filter-rule-id ^.\* \ - --remove-tag foo \ - --dryrun -``` - -Rename a tag `foo` -```sh -python3 rule_ctl.py --config ../../rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf \ - --filter-rule-id ^.\* \ - --rename-tag foo,bar \ - --dryrun -``` - -## Transformation Functions -- `--append-tfunc`: Append a new transformation function on selected rules -- `--remove-tfunc`: Remove a transformation function on selected rules - -### Examples -Append `t:lowercase` to all selected rules (you don't need the `t:` prefix) -```sh -python3 rule_ctl.py --config ../../rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf \ - --filter-rule-id ^.\* \ - --append-tfunc lowercase \ - --dryrun -``` - -## Actions -- `--replace-action`: Replace action on selected rules -- `--remove-action`: remove action from selected rules - -### Examples -Replace action `severity:CRITICAL` with `severity:INFO` and set a new message on rule id 125 -```sh -python3 rule_ctl.py --config ../../rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf \ - --filter-rule-id ^125 \ - --replace-action severity:CRITICAL,severity:INFO \ - --uncond-replace-action 'msg:this is a new message for rule 125' \ - --dryrun -``` - -## CTL -- `--append-ctl`: Append a new ctl action on selected rules - -### Examples -Remove rule id 1337 on rule 125 by adding ctl:ruleRemoveById=1337. Do it on main rule (skipping chained rules if present) -```sh -python3 rule_ctl.py --config ../../rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf \ - --filter-rule-id ^125 \ - --append-ctl ruleRemoveById=1337 \ - --skip-chain \ - --dryrun -``` - -## Others -- `--target-file`: Set the target file where changes will be saved (default: use file set by `--config`) -- `--skip-chain`: Skip chained rules -- `--dryrun`: Do not write any changes, just output the results -- `--debug`: Show debug messages -- `--silent`: Used with `--dryrun` and `--debug` doesn't write and shows only debug messages -- `--json`: Used with `--dryrun` return the msc_pyparser JSON output instead of ModSecurity file diff --git a/util/rule_ctl/pyproject.toml b/util/rule_ctl/pyproject.toml deleted file mode 100644 index 77c7e6eff..000000000 --- a/util/rule_ctl/pyproject.toml +++ /dev/null @@ -1,5 +0,0 @@ -[tool.pytest.ini_options] -minversion = "6.0" -testpaths = [ - "tests", -] diff --git a/util/rule_ctl/requirements.txt b/util/rule_ctl/requirements.txt deleted file mode 100644 index 2e1b1f04f..000000000 --- a/util/rule_ctl/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -argparse -msc_pyparser -pytest diff --git a/util/rule_ctl/rule_ctl.py b/util/rule_ctl/rule_ctl.py deleted file mode 100755 index afa4f155a..000000000 --- a/util/rule_ctl/rule_ctl.py +++ /dev/null @@ -1,801 +0,0 @@ -#! /usr/bin/env python - -import sys, re, json, uuid - -try: - import argparse, msc_pyparser -except: - print(f"Error: missing modules.\nYou can install all dependences with: pip3 install -r requirements.txt") - sys.exit(1) - -ACTION_ORDER = { - key: index for index, key in enumerate( - [ - "id", - "phase", - "allow", - "block", - "deny", - "drop", - "pass", - "proxy", - "redirect", - "status", - "capture", - "t", - "log", - "nolog", - "auditlog", - "noauditlog", - "msg", - "logdata", - "tag", - "sanitiseArg", - "sanitiseRequestHeader", - "sanitiseMatched", - "sanitiseMatchedBytes", - "ctl", - "ver", - "severity", - "multiMatch", - "initcol", - "setenv", - "setvar", - "expirevar", - "chain", - "skip", - "skipAfter" - ] - ) -} - -class Context(object): - def __init__(self): - self.args = () - self.line_number_change = 0 - self.next_index_to_parse = 0 - self.parser = None - self._rules = [] - self._rules_map = {} - - def parse_rules(self, data): - mparser = msc_pyparser.MSCParser() - mparser.parser.parse(data, debug = False) - - for line in mparser.configlines: - type = line["type"] - if type == "SecAction": - rule = SecAction(line, self) - elif type == "Comment": - rule = Comment(line, self) - elif type == "SecRule": - rule = SecRule(line, self) - else: - rule = Directive(line, self) - - self._rules.append(rule) - if isinstance(rule, SecAction): - if rule.is_chained(): - self._rules_map[rule.id]['chained'].append(rule) - else: - self._rules_map[rule.id] = { - 'rule': rule, - 'chained': [] - } - yield rule - - def get_chain_starter_rule(self, rule): - try: - self._rules_map[rule.id]['rule'] - except KeyError: - # Chained rules don't have ID during initialization. - # In this case, however, the last parsed rule now has one - return self._rules_map[self._rules[-1].id]['rule'] - - def dprint(self, rule_id, action, message, indent): - if not indent: - indent=0 - - prefix = "[*]" - if indent > 0: - prefix = "`" - - if not rule_id: - rule_id = "chained" - - print(f'{" "*int(indent)}{prefix} \033[92m{rule_id}/{action}\033[0m: {message}') - - def generate_output(self): - mwriter = msc_pyparser.MSCWriter(self.generate_lines()) - mwriter.generate() - return mwriter.output - - def generate_lines(self): - generated_lines = [] - line_number_change = 0 - for rule in self._rules: - lines, line_number_change = rule.generate_lines(line_number_change) - generated_lines.append(lines) - return generated_lines - - def parse_arguments(self, args=None): - args_parser = self._create_args_parser() - self.args = args_parser.parse_args(args) - - def _create_args_parser(self): - parser = argparse.ArgumentParser(description="OWASP CRS Configuration Control") - parser.add_argument("--config", dest="config", help="OWASP ModSecurity CRS config file path", required=True) - parser.add_argument("--filter-rule-id", dest="filter_rule_id", help="Filter on ruleid (regex)", required=False) - parser.add_argument("--append-variable", dest="append_variable", help="Append var on SecRule (string)", action='append', required=False) - parser.add_argument("--remove-variable", dest="remove_variable", help="Remove var from SecRule (string)", action='append', required=False) - parser.add_argument("--replace-variable", dest="replace_variable", help="Replace var in SecRule (old,new) (string)", action='append', required=False) - parser.add_argument("--append-tag", dest="append_tag", help="Append tag on SecRule (string)", required=False) - parser.add_argument("--remove-tag", dest="remove_tag", help="Remove tag from SecRule (string)", required=False) - parser.add_argument("--rename-tag", dest="rename_tag", help="Rename tag on SecRule (old,new) (string)", required=False) - parser.add_argument("--sort-tags", dest="sort_tags", help="Sort tag list in SecRule", action="store_true", required=False) - parser.add_argument("--append-tfunc", dest="append_tfunc", help="Append transformation func on SecRule (example: urlDecodeUni) (string)", action='append', required=False) - parser.add_argument("--remove-tfunc", dest="remove_tfunc", help="Remove transformation func from SecRule (example: urlDecodeUni) (string)", action='append', required=False) - parser.add_argument("--append-action", dest="append_action", help="Append action on Secrule (example: 'severity:CRITICAL) (string)", required=False) - parser.add_argument("--replace-action", dest="replace_action", help="Replace action (example: 'severity:CRITICAL,severity:INFO') (string)", required=False) - parser.add_argument("--remove-action", dest="remove_action", help="Remove action from SecRule (string)", required=False) - parser.add_argument("--append-ctl", dest="append_ctl", help="Append ctl action on SecRule (example: 'ruleRemoveTargetById=1234;ARGS:passwd') (string)", required=False) - parser.add_argument("--target-file", dest="target_file", help="Save changes in another file (string)", required=False) - parser.add_argument("--skip-chain", dest="skip_chain", help="Skip chained rules", action="store_true", required=False) - parser.add_argument("--dryrun", dest="dryrun", help="Show changes without write", action="store_true", required=False) - parser.add_argument("--silent", dest="silent", help="Do not output content file on dryrun", action="store_true", required=False) - parser.add_argument("--debug", dest="debug", help="Show debug messages", action="store_true", required=False) - parser.add_argument("--json", dest="output_json", help="Get all output in JSON format", action="store_true", required=False) - return parser - -class RuleFileItem(object): - def __init__(self, data, context): - self._data = data - self._line_numbers = {"rule_line": data["lineno"]} - - def modify(self, context): - pass - - def generate_lines(self, line_number_change): - new_line_number_change = self._update_line_numbers(line_number_change) - return (self._data, new_line_number_change) - - def _update_line_numbers(self, line_number_change): - self._data["lineno"] = self._line_numbers["rule_line"] + line_number_change - - return line_number_change - -class SecAction(RuleFileItem): - TAG_RENAME_REGEX = re.compile('^([^,]+),(.+)$') - ACTION_REPLACE_REGEX = re.compile('^([^,]+),(.+)$') - ACTION_REPLACE_VALUES_REGEX = re.compile('^([^:]+)(?::(.+))?$') - CTL_APPEND_REGEX = re.compile('^([^=]+)=([^;]+)(;[^:]+:.+|)$') - CTL_APPEND_PARAMS_REGEX = re.compile('^;([^:]+):(.+)$') - id = None - _id_matcher = None - - def __init__(self, data, context): - super().__init__(data, context) - - for action in self.get_actions(): - action["id"] = uuid.uuid4() - if action["act_name"] == "id": - self.id = int(action["act_arg"]) - break - - if "oplineno" in self._data: - self._line_numbers["opline"] = self._data["oplineno"] - for action in self.get_actions(): - self._line_numbers[("action", uuid)] = action["lineno"] - - def _parse_var(self, variable): - negated = False - counter = False - newvar = variable - newvarpart = "" - quote_type = "no_quote" - m = re.match('^([!&]?)([^:]+)(?::(.+))?$', variable) - if m: - counter = m.group(1) == '&' - negated = m.group(1) == '!' - newvar = m.group(2) - varpart = m.group(3) - if varpart is not None: - if varpart[0] == '"' and varpart[-1] == '"': - quote_type = 'quoted' - varpart = varpart[1:-1] - elif varpart[0] == "'" and varpart[-1] == "'": - quote_type = 'quotes' - varpart = varpart[1:-1] - newvarpart = varpart - return { - "variable": newvar, - "variable_part": newvarpart, - "quote_type": quote_type, - "negated": negated, - "counter": counter - } - - def _is_equal_variable(self, variable1, variable2): - compare_fields = ("variable", "variable_part", "negated", "counter") - return all(variable1[field] == variable2[field] for field in compare_fields) - - def _has_variable(self, variable): - for var in self.get_variables(): - if self._is_equal_variable(variable, var): - return True - return False - - - - def _update_line_numbers(self, line_number_change): - #TODO: doesn't yet work when order changes, e.g. variables and tags may not have been grouped together - super()._update_line_numbers(line_number_change) - - first_line_number = last_line_number = self._data["lineno"] - - if "oplineno" in self._data: - last_line_number = self._line_numbers["opline"] + line_number_change - self._data["oplineno"] = last_line_number - - - for action in self.get_actions(): - try: - last_line_number = self._line_numbers[("action", action["id"])] + line_number_change - action["lineno"] = last_line_number - except KeyError: - # keep everything on one line if it already was - if any(lineno > self._line_numbers['rule_line'] for lineno in self._line_numbers.values()): - last_line_number += 1 - action["lineno"] = last_line_number - - original_first_line_number = min(self._line_numbers.values()) - original_last_line_number = max(self._line_numbers.values()) - original_length = original_last_line_number - original_first_line_number - new_length = last_line_number - first_line_number - start_change = first_line_number - original_first_line_number - length_change = new_length - original_length - total_change = length_change + start_change - return total_change - - def modify(self, context): - if context.args.filter_rule_id and not self.matches_id(context.args.filter_rule_id): - return - - self.append_tag(context) - self.remove_tag(context) - self.rename_tag(context) - self.append_tfunc(context) - self.remove_tfunc(context) - self.append_action(context) - self.replace_action(context) - self.remove_action(context) - self.append_variables(context) - self.remove_variables(context) - self.replace_variables(context) - self.append_ctl(context) - self.sort_tags(context) - - def get_actions(self): - try: - return self._data["actions"] - except KeyError: - return [] - - def set_actions(self, actions): - self._data["actions"] = actions - - def get_variables(self): - try: - return self._data["variables"] - except KeyError: - return [] - - def set_variables(self, variables): - self._data["variables"] = variables - - def get_tags(self): - return [action for action in self.get_actions() if action["act_name"] == "tag"] - - def get_ctls(self): - return [action for action in self.get_actions() if action["act_name"] == "ctl"] - - def matches_id(self, id_pattern): - if self._id_matcher is None: - self._id_matcher = re.compile(id_pattern) - return self._id_matcher.match(str(self.id)) != None - - def append_tag(self, context): - if context.args.append_tag is None: - return - - #TODO: support appending multiple tags - tags = self.get_tags() - if context.args.append_tag in [tag["act_arg"] for tag in tags]: - return - - actions = self.get_actions() - new_act_list = [] - last_tag_line = 0 - tag_order = ACTION_ORDER["tag"] - new_tag = { - 'id': uuid.uuid4(), - 'act_name': 'tag', - 'lineno': 0, - 'act_quote': 'quotes', - 'act_arg': context.args.append_tag, - 'act_arg_val': '', - 'act_arg_val_param': '', - 'act_arg_val_param_val': '' - } - - done = False - last_action_index = len(actions) - 1 - for index, action in enumerate(actions): - action_name = action["act_name"] - action_order = ACTION_ORDER[action_name] - if action_order <= tag_order: - last_tag_line = action["lineno"] - new_act_list.append(action) - if not done and (action_order > tag_order or index == last_action_index): - done = True - new_act_list.append(new_tag) - if context.args.debug: - context.dprint(self.id, "append-tag", f"append tag {context.args.append_tag} on line {last_tag_line}", 0) - if action_order > tag_order: - new_act_list.append(action) - self.set_actions(new_act_list) - - def remove_tag(self, context): - if context.args.remove_tag is None: - return - - #TODO: support removing multiple tags - actions = self.get_actions() - new_act_list = [] - for action in actions: - if action["act_name"] == "tag": - if action["act_arg"] != context.args.remove_tag: - new_act_list.append(action) - else: - if context.args.debug: - context.dprint(self.id, "remove-tag", f"remove tag {context.args.remove_tag} on line {action['lineno']}", 0) - else: - new_act_list.append(action) - - self.set_actions(new_act_list) - - def rename_tag(self, context): - if context.args.rename_tag is None: - return - - match = self.TAG_RENAME_REGEX.match(context.args.rename_tag) - if match is None: - return - - old_tag = match.group(1) - new_tag = match.group(2) - new_act_list = [] - for act in self.get_actions(): - if act["act_name"] == "id": - current_rule_id = act["act_arg"] - if act["act_name"] == "tag": - if act["act_arg"] == old_tag: - act["act_arg"] = new_tag - if context.args.debug: - context.dprint(current_rule_id, "rename-tag", f"rename tag {old_tag} to {new_tag} on line {act['lineno']}", 0) - new_act_list.append(act) - else: - new_act_list.append(act) - self.set_actions(new_act_list) - - def append_action(self, context): - if context.args.append_action is None: - return - - match = self.ACTION_REPLACE_VALUES_REGEX.match(context.args.append_action) - if match is None: - return - - new_action_name = match.group(1) - new_action_value = match.group(2) or "" - - #TODO: support appending multiple actions - actions = self.get_actions() - if ( - new_action_name in [action["act_name"] for action in actions] and - new_action_value in [action["act_arg"] for action in actions] - ): - return - - new_act_list = [] - last_action_line = 0 - new_action_order = ACTION_ORDER[new_action_name] - has_quotes = len(new_action_value) > 0 and new_action_value[0] in '"\'' and new_action_value[-1] in '"\'' - if has_quotes: - new_action_value = new_action_value[1:-1] - new_action = { - 'id': uuid.uuid4(), - 'act_name': new_action_name, - 'lineno': 0, - 'act_quote': 'quotes' if has_quotes else 'no_quote', - 'act_arg': new_action_value, - 'act_arg_val': '', - 'act_arg_val_param': '', - 'act_arg_val_param_val': '' - } - - done = False - last_action_index = len(actions) - 1 - for index, action in enumerate(actions): - action_name = action["act_name"] - action_order = ACTION_ORDER[action_name] - if action_order <= new_action_order: - last_action_line = action["lineno"] - new_act_list.append(action) - if not done and (action_order > new_action_order or index == last_action_index): - done = True - new_act_list.append(new_action) - if context.args.debug: - context.dprint(self.id, "append-action", f"append action {context.args.append_action} on line {last_action_line}", 0) - if action_order > new_action_order: - new_act_list.append(action) - - if len(new_act_list) == 0: - new_act_list.append(new_action) - - self.set_actions(new_act_list) - - - - def replace_action(self, context): - if context.args.replace_action is None: - return - - match = self.ACTION_REPLACE_REGEX.match(context.args.replace_action) - if match is None: - return - - from_string = match.group(1) - to_string = match.group(2) - from_match = self.ACTION_REPLACE_VALUES_REGEX.match(from_string) - to_match = self.ACTION_REPLACE_VALUES_REGEX.match(to_string) - if from_match is None or to_match is None: - return - - from_actname = from_match.group(1) - from_actvalue = from_match.group(2) or "" - to_actname = to_match.group(1) - to_actvalue = to_match.group(2) or "" - has_quotes = len(to_actvalue) > 0 and to_actvalue[0] in '"\'' and to_actvalue[-1] in '"\'' - if has_quotes: - to_actvalue = to_actvalue[1:-1] - - for act in self.get_actions(): - if act["act_name"] == from_actname: - # match all actions of the specified name if `from_actvalue` is empty - if len(from_actvalue) == 0 or act["act_arg"] == from_actvalue: - act["act_name"] = to_actname - act["act_arg"] = to_actvalue - act["act_quote"] = "quotes" if has_quotes else "no_quote" - - def remove_action(self, context): - if context.args.remove_action is None: - return - - actions = self.get_actions() - new_act_list = [] - for action in actions: - if action["act_name"] != context.args.remove_action: - new_act_list.append(action) - - self.set_actions(new_act_list) - - def append_tfunc(self, context): - if context.args.append_tfunc is None: - return - - transform_order = ACTION_ORDER["t"] - actions = self.get_actions() - last_action_index = len(actions) - 1 - transformation_names = [action["act_arg"] for action in actions if action["act_name"] == "t"] - - for tfunc in context.args.append_tfunc: - if tfunc in transformation_names: - continue - - new_act_list = [] - done = False - last_lineno = 0 - for index, act in enumerate(actions): - action_name = act["act_name"] - action_order = ACTION_ORDER[action_name] - if action_order <= transform_order: - last_lineno = act["lineno"] - new_act_list.append(act) - if not done and (action_order > transform_order or index == last_action_index): - done = True - new_act_list.append({ - 'id': uuid.uuid4(), - 'act_name': 't', - 'lineno': last_lineno, - 'act_quote': 'no_quote', - 'act_arg': tfunc, - 'act_arg_val': '', - 'act_arg_val_param': '', - 'act_arg_val_param_val': '' - }) - if context.args.debug: - context.dprint(self.id, "append-tfunc", f"append transformation {context.args.append_tfunc} on line {last_lineno}", 0) - if action_order > transform_order: - new_act_list.append(act) - actions = new_act_list - - self.set_actions(actions) - - - def remove_tfunc(self, context): - if context.args.remove_tfunc is None: - return - - actions = self.get_actions() - for tfunc in context.args.remove_tfunc: - new_act_list = [] - for act in actions: - if act["act_name"] == "t": - if act["act_arg"] != tfunc: - new_act_list.append(act) - else: - new_act_list.append(act) - actions = new_act_list - - self.set_actions(actions) - - - def append_variables(self, context): - if context.args.append_variable is None: - return - - variables = self.get_variables() - for nv in context.args.append_variable: - newvar = self._parse_var(nv) - if self._has_variable(newvar): - continue - - new_var_list = [] - for v in variables: - new_var_list.append(v) - new_var_list.append({ - "variable": newvar["variable"], - "variable_part": newvar["variable_part"], - "quote_type": "no_quote", - "negated": newvar["negated"], - "counter": newvar["counter"] - }) - if context.args.debug: - context.dprint(self.id, "append-variable", f"Append variable {newvar}:{newvar['variable_part']}", 0) - variables = new_var_list - - self.set_variables(variables) - - - def remove_variables(self, context): - if context.args.remove_variable is None: - return - - variables = self.get_variables() - for nv in context.args.remove_variable: - var = self._parse_var(nv) - if not self._has_variable(var): - continue - - new_var_list = [] - for v in variables: - if not self._is_equal_variable(var, v): - new_var_list.append(v) - else: - if context.args.debug: - varpart = var["variable_part"] - negated = var["negated"] - counter = var["counter"] - context.dprint(self.id, "remove-variable", f"Removed variable {var}:{varpart} negated:{negated} counter:{counter}", 0) - variables = new_var_list - self.set_variables(variables) - - - def replace_variables(self, context): - if context.args.replace_variable is None: - return - - variables = self.get_variables() - for nv_tosplit in context.args.replace_variable: - oldvar, newvar = nv_tosplit.split(",") - ov = self._parse_var(oldvar) - nv = self._parse_var(newvar) - - new_variable = nv["variable"] - newvarpart = nv["variable_part"] - newnegated = nv["negated"] - newcounter = nv["counter"] - newquotetype = nv["quote_type"] - old_variable = ov["variable"] - oldvarpart = ov["variable_part"] - oldnegated = ov["negated"] - oldcounter = ov["counter"] - oldquotetype = ov["quote_type"] - new_var_list = [] - for v in variables: - if (v["variable"] == old_variable and v["variable_part"] == oldvarpart - and v["negated"] == oldnegated and v["counter"] == oldcounter and v["quote_type"] == oldquotetype): - new_var_list.append({ - "variable": new_variable, - "variable_part": newvarpart, - "quote_type": newquotetype, - "negated": newnegated, - "counter": newcounter - }) - if context.args.debug: - context.dprint(self.id, "replace-variable", f"Replaced variable {oldvar}:{oldvarpart} negated:{oldnegated} counter:{oldcounter} quote_type:{oldquotetype} with {newvar}:{newvarpart} negated:{newnegated} counter:{newcounter} quote_type:{newquotetype}", 0) - else: - new_var_list.append(v) - variables = new_var_list - - self.set_variables(variables) - - def append_ctl(self, context): - # TODO: support appending multiple ctl - if context.args.append_ctl is None: - return - - match = self.CTL_APPEND_REGEX.match(context.args.append_ctl) - if match is None: - return - - arg = match.group(1) - if arg.startswith('ctl:'): - arg = arg[4:] - val = match.group(2) - - params = self.CTL_APPEND_PARAMS_REGEX.match(match.group(3)) - param = params.group(1) if params is not None else "" - paramval = params.group(2) if params is not None else "" - - ctls = self.get_ctls() - if ( - arg in [ctl["act_arg"] for ctl in ctls] and - val in [ctl["act_arg_val"] for ctl in ctls] and - param in [ctl["act_arg_val_param"] for ctl in ctls] and - paramval in [ctl["act_arg_val_param_val"] for ctl in ctls] - ): - return - - actions = self.get_actions() - new_act_list = [] - last_ctl_line = 0 - ctl_order = ACTION_ORDER["ctl"] - new_ctl = { - "id": uuid.uuid4(), - "act_name": "ctl", - "lineno": last_ctl_line, - "act_quote": "no_quote", - "act_arg": arg, - "act_arg_val": val, - "act_arg_val_param": param, - "act_arg_val_param_val": paramval - } - - done = False - last_action_index = len(actions) - 1 - for index, action in enumerate(actions): - action_name = action["act_name"] - action_order = ACTION_ORDER[action_name] - if action_order <= ctl_order: - last_ctl_line = action["lineno"] - new_act_list.append(action) - if not done and (action_order > ctl_order or index == last_action_index): - done = True - new_act_list.append(new_ctl) - if context.args.debug: - context.dprint(self.id, "append-ctl", f"append ctl {context.args.append_ctl} on line {last_ctl_line}", 0) - if action_order > ctl_order: - new_act_list.append(action) - - if len(new_act_list) == 0: - new_act_list.append(new_ctl) - - self.set_actions(new_act_list) - - - def sort_tags(self, context): - #TODO: tags don't need to be grouped together; need to look through all actions - if not context.args.sort_tags: - return - - new_act_list = [] - post_tag_actions = [] - tags = [] - last_lineno = None - found_tag = False - for act in self.get_actions(): - if act["act_name"] == "tag": - tags.append(act) - found_tag = True - if last_lineno is None: - first_lineno = act["lineno"] - elif not found_tag: - new_act_list.append(act) - elif found_tag: - post_tag_actions.append(act) - - def get_sort_key(tag): - return tag["act_arg"].lower() - - sorted_tags = sorted(tags, key=get_sort_key) - for tag in sorted_tags: - new_act_list.append(tag) - tag["lineno"] = first_lineno - first_lineno += 1 - - for act in post_tag_actions: - new_act_list.append(act) - - self.set_actions(new_act_list) - -class Comment(RuleFileItem): - pass - -class Directive(RuleFileItem): - pass - -class SecRule(SecAction): - _is_chained = False - - def __init__(self, data, context): - super().__init__(data, context) - - # for chained rules (they have no ID) - if self.id is None: - self.id = context.get_chain_starter_rule(self).id - self._is_chained = True - - def has_chained_rules(self): - return self._data["chained"] - - def is_chained(self): - return self._is_chained - - def modify(self, context): - if context.args.skip_chain and self.is_chained(): - return - - super().modify(context) - - -def write_output(context): - if context.args.dryrun and context.args.output_json: - print(json.dumps(context.generate_lines(), indent=4)) - return - - if context.args.dryrun: - if not context.args.silent: - print("\n".join(context.generate_output())) - return - - path = context.args.target_file if context.args.target_file else context.args.config - with open(path, 'w') as handle: - handle.write("\n".join(context.generate_output())) - - -def run(): - context = Context() - context.parse_arguments() - - with open(context.args.config) as file: - data = file.read() - - for rule in context.parse_rules(data): - rule.modify(context) - - write_output(context) - -if __name__ == '__main__': - run() diff --git a/util/rule_ctl/tests/__init__.py b/util/rule_ctl/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/util/rule_ctl/tests/helpers.py b/util/rule_ctl/tests/helpers.py deleted file mode 100644 index 52829f2b3..000000000 --- a/util/rule_ctl/tests/helpers.py +++ /dev/null @@ -1,16 +0,0 @@ -from rule_ctl import Context - -def create_context(arguments, rules_string): - context = Context() - patched_arguments = arguments - if "--config" not in arguments: - patched_arguments = arguments + ["--config", "dummy"] - context.parse_arguments(args=patched_arguments) - - for rule in context.parse_rules(rules_string): - rule.modify(context) - return context - - -def get_output(context): - return "\n".join(context.generate_output()) + "\n" diff --git a/util/rule_ctl/tests/rule_ctl_actions_test.py b/util/rule_ctl/tests/rule_ctl_actions_test.py deleted file mode 100644 index f5657a3bb..000000000 --- a/util/rule_ctl/tests/rule_ctl_actions_test.py +++ /dev/null @@ -1,377 +0,0 @@ -from .helpers import * - -class TestAppendAction: - def test_append_action_with_no_actions(self): - arguments = [ - "--append-action", "msg:foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,msg:foo" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_action_with_existing_actions(self): - arguments = [ - "--append-action", "msg:foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - log:'abc'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - log:'abc',\\ - msg:foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_action_with_duplicate_action(self): - arguments = [ - "--append-action", "msg:foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:'foo',\\ - log:'abc'" -""" - - context = create_context(arguments, rule_string) - assert rule_string == get_output(context) - - def test_append_action_in_correct_order(self): - arguments = [ - "--append-action", "msg:foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - noauditlog,\\ - logdata:'data'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - noauditlog,\\ - msg:foo,\\ - logdata:'data'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_action_with_chain(self): - arguments = [ - "--append-action", "msg:foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - noauditlog,\\ - logdata:'data',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - noauditlog,\\ - msg:foo,\\ - logdata:'data',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" \\ - "msg:foo" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_action_skip_chain(self): - arguments = [ - "--append-action", "msg:foo", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - noauditlog,\\ - logdata:'data',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - noauditlog,\\ - msg:foo,\\ - logdata:'data',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - -class TestReplaceAction: - def test_replace_action_with_no_actions(self): - arguments = [ - "--replace-action", "msg:foo,msg:bar", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = rule_string - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_action_with_existing_actions(self): - arguments = [ - "--replace-action", "msg:foo,msg:bar", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:bar,\\ - log:'abc'" -""" - expected = rule_string - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_action_with_duplicate_action(self): - arguments = [ - "--replace-action", "msg:foo,msg:bar", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:'foo',\\ - msg:'abc'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:bar,\\ - msg:'abc'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_action_with_different_name(self): - arguments = [ - "--replace-action", "msg:foo,deny", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:'foo',\\ - msg:'abc'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - msg:'abc'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - arguments = [ - "--replace-action", "deny,msg:foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - msg:'abc'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:foo,\\ - msg:'abc'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_action_without_values(self): - arguments = [ - "--replace-action", "pass,deny", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - pass,\\ - msg:'abc'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - msg:'abc'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_replace_action_with_for_any_value(self): - arguments = [ - "--replace-action", "msg,msg:bar", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - msg:something,\\ - msg:'or',\\ - msg:other" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - msg:bar,\\ - msg:bar,\\ - msg:bar" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_replace_action_with_quotes(self): - arguments = [ - "--replace-action", "msg,msg:'bar'", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - msg:something,\\ - msg:'or',\\ - msg:other" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - msg:'bar',\\ - msg:'bar',\\ - msg:'bar'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_replace_action_with_chain(self): - arguments = [ - "--replace-action", "msg:foo,msg:bar", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:'foo',\\ - msg:'abc',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" \\ - "msg:'foo'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:bar,\\ - msg:'abc',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" \\ - "msg:bar" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_replace_action_skip_chain(self): - arguments = [ - "--replace-action", "msg:foo,msg:bar", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:'foo',\\ - msg:'abc',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" \\ - "msg:'foo'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - msg:bar,\\ - msg:'abc',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" \\ - "msg:'foo'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) diff --git a/util/rule_ctl/tests/rule_ctl_ctl_test.py b/util/rule_ctl/tests/rule_ctl_ctl_test.py deleted file mode 100644 index efcf90526..000000000 --- a/util/rule_ctl/tests/rule_ctl_ctl_test.py +++ /dev/null @@ -1,125 +0,0 @@ -from .helpers import * - -class TestAppendControl: - def test_append_ctl_with_no_ctls(self): - arguments = [ - "--append-ctl", "ruleRemoveTargetById=1234;ARGS:passwd", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,ctl:ruleRemoveTargetById=1234;ARGS:passwd" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_ctl_with_existing_ctls(self): - arguments = [ - "--append-ctl", "ruleRemoveTargetById=1234;ARGS:passwd", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - ctl:ruleRemoveTargetById=1234;ARGS:username" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - ctl:ruleRemoveTargetById=1234;ARGS:username,\\ - ctl:ruleRemoveTargetById=1234;ARGS:passwd" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_ctl_with_duplicate_ctl(self): - arguments = [ - "--append-ctl", "ruleRemoveTargetById=1234;ARGS:passwd", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - ctl:ruleRemoveTargetById=1234;ARGS:passwd,\\ - log:'abc'" -""" - - context = create_context(arguments, rule_string) - assert rule_string == get_output(context) - - def test_append_ctl_in_correct_order(self): - arguments = [ - "--append-ctl", "ruleRemoveTargetById=1234;ARGS:passwd", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - sanitiseMatchedBytes,\\ - ver:3" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - sanitiseMatchedBytes,\\ - ctl:ruleRemoveTargetById=1234;ARGS:passwd,\\ - ver:3" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_ctl_ignores_ctl_prefix(self): - arguments = [ - "--append-ctl", "ctl:ruleRemoveTargetById=1234;ARGS:passwd", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,ctl:ruleRemoveTargetById=1234;ARGS:passwd" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_ctl_with_chain(self): - arguments = [ - "--append-ctl", "ctl:ruleRemoveTargetById=1234;ARGS:passwd", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx bar" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,ctl:ruleRemoveTargetById=1234;ARGS:passwd,chain" - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx bar" "ctl:ruleRemoveTargetById=1234;ARGS:passwd" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_ctl_skip_chain(self): - arguments = [ - "--append-ctl", "ctl:ruleRemoveTargetById=1234;ARGS:passwd", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx bar" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,ctl:ruleRemoveTargetById=1234;ARGS:passwd,chain" - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx bar" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) diff --git a/util/rule_ctl/tests/rule_ctl_tags_test.py b/util/rule_ctl/tests/rule_ctl_tags_test.py deleted file mode 100644 index a65e66ef9..000000000 --- a/util/rule_ctl/tests/rule_ctl_tags_test.py +++ /dev/null @@ -1,395 +0,0 @@ -from .helpers import * - -class TestAppendTag: - def test_append_tag_with_no_tags(self): - arguments = [ - "--append-tag", "foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,tag:'foo'" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_tag_with_existing_tags(self): - arguments = [ - "--append-tag", "foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - tag:'abc'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - tag:'abc',\\ - tag:'foo'" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_tag_with_duplicate_tag(self): - arguments = [ - "--append-tag", "foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - tag:'foo',\\ - tag:'abc'" -""" - - context = create_context(arguments, rule_string) - assert rule_string == get_output(context) - - def test_append_tag_in_correct_order(self): - arguments = [ - "--append-tag", "foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - log:'log',\\ - logdata:'data',\\ - sanitiseArg:arg" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - log:'log',\\ - logdata:'data',\\ - tag:'foo',\\ - sanitiseArg:arg" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_tag_with_chain(self): - arguments = [ - "--append-tag", "foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - log:'log',\\ - logdata:'data',\\ - sanitiseArg:arg,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" \\ - "deny" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - log:'log',\\ - logdata:'data',\\ - tag:'foo',\\ - sanitiseArg:arg,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" \\ - "deny,\\ - tag:'foo'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_tag_skip_chain(self): - arguments = [ - "--append-tag", "foo", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - log:'log',\\ - logdata:'data',\\ - sanitiseArg:arg,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" \\ - "deny" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - log:'log',\\ - logdata:'data',\\ - tag:'foo',\\ - sanitiseArg:arg,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx bar" \\ - "deny" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - -class TestRemoveTag: - def test_remove_tag_with_no_tags(self): - arguments = [ - "--remove-tag", "foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = rule_string - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_remove_tag_with_existing_tags(self): - arguments = [ - "--remove-tag", "foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,tag:foo" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_remove_tag_with_chain(self): - arguments = [ - "--remove-tag", "foo", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,tag:foo,chain" - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "tag:foo" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_remove_tag_skip_chain(self): - arguments = [ - "--remove-tag", "foo", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,tag:foo,chain" - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "tag:foo" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "tag:foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - -class TestRenameTag: - def test_rename_tag_with_no_tags(self): - arguments = [ - "--rename-tag", "foo,bar", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = rule_string - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_rename_tag_with_existing_tags(self): - arguments = [ - "--rename-tag", "foo,bar", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'omega',\\ - tag:'foo',\\ - tag:'alpha'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'omega',\\ - tag:'bar',\\ - tag:'alpha'" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_rename_tag_with_chain(self): - arguments = [ - "--rename-tag", "foo,bar", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'omega',\\ - tag:'foo',\\ - tag:'alpha',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "tag:'foo'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'omega',\\ - tag:'bar',\\ - tag:'alpha',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "tag:'bar'" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_rename_tag_skip_chain(self): - arguments = [ - "--rename-tag", "foo,bar", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'omega',\\ - tag:'foo',\\ - tag:'alpha',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "tag:'foo'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'omega',\\ - tag:'bar',\\ - tag:'alpha',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "tag:'foo'" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - -class TestSortTags: - def test_sort_tags(self): - arguments = [ - "--sort-tags" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'omega',\\ - tag:'foo',\\ - tag:'alpha'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'alpha',\\ - tag:'foo',\\ - tag:'omega'" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_sort_tags_with_chain(self): - arguments = [ - "--sort-tags" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'omega',\\ - tag:'foo',\\ - tag:'alpha',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "tag:'omega',\\ - tag:'foo',\\ - tag:'alpha'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'alpha',\\ - tag:'foo',\\ - tag:'omega',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "tag:'alpha',\\ - tag:'foo',\\ - tag:'omega'" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_sort_tags_skip_chain(self): - arguments = [ - "--sort-tags", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'omega',\\ - tag:'foo',\\ - tag:'alpha',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "tag:'omega',\\ - tag:'foo',\\ - tag:'alpha'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "id:12,\\ - tag:'alpha',\\ - tag:'foo',\\ - tag:'omega',\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" \\ - "tag:'omega',\\ - tag:'foo',\\ - tag:'alpha'" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) diff --git a/util/rule_ctl/tests/rule_ctl_test.py b/util/rule_ctl/tests/rule_ctl_test.py deleted file mode 100644 index f7114ceaf..000000000 --- a/util/rule_ctl/tests/rule_ctl_test.py +++ /dev/null @@ -1,195 +0,0 @@ -from .helpers import * - -class TestFilterRuleId: - def test_filter_rule_id_exact_match(self): - arguments = [ - "--filter-rule-id", "12", - "--append-tag", "foo" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,tag:'foo'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_filter_rule_id_prefix_match(self): - arguments = [ - "--filter-rule-id", "^12", - "--append-tag", "foo" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:122" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:122,tag:'foo'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_filter_rule_id_suffix_match(self): - arguments = [ - "--filter-rule-id", ".*22$", - "--append-tag", "foo" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:122" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:122,tag:'foo'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_filter_rule_id_no_match(self): - arguments = [ - "--filter-rule-id", "11", - "--append-tag", "foo" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = rule_string - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - -class TestLineNumbers: - def test_line_numbers_identical(self): - arguments = [ - "--append-tag", "foo" - ] - rule_string = """ - -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" - -SecRule ARGS "@rx bar" "id:13" -""" - expected = """ - -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,tag:'foo'" - -SecRule ARGS "@rx bar" "id:13,tag:'foo'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_line_numbers_shifted_down(self): - arguments = [ - "--append-tag", "foo" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12" - -SecRule ARGS "@rx bar" \\ - "id:13" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - tag:'foo'" - -SecRule ARGS "@rx bar" \\ - "id:13,\\ - tag:'foo'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_line_numbers_shifted_up(self): - arguments = [ - "--remove-tag", "foo" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - tag:foo" - -SecRule ARGS "@rx bar" \\ - "id:13,\\ - tag:foo" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12" - -SecRule ARGS "@rx bar" \\ - "id:13" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - -class TestTargetFile: - def test_target_file(self, tmp_path): - import os - from rule_ctl import write_output - - file_path = str(tmp_path / 'foo.conf') - arguments = [ - "--append-tag", "foo", - "--target-file", file_path - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12" -""" - - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - tag:'foo'" -""" - - context = create_context(arguments, rule_string) - write_output(context) - - assert os.path.exists(file_path) - with open(file_path, 'r') as h: - assert expected.rstrip() == h.read() - - def test_target_file_uses_config_as_default(self, tmp_path): - import os - from rule_ctl import write_output - - file_path = str(tmp_path / 'foo.conf') - arguments = [ - "--append-tag", "foo", - "--config", file_path - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12" -""" - - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - tag:'foo'" -""" - - context = create_context(arguments, rule_string) - write_output(context) - - assert os.path.exists(file_path) - with open(file_path, 'r') as h: - assert expected.rstrip() == h.read() diff --git a/util/rule_ctl/tests/rule_ctl_transformations_test.py b/util/rule_ctl/tests/rule_ctl_transformations_test.py deleted file mode 100644 index f1db898f1..000000000 --- a/util/rule_ctl/tests/rule_ctl_transformations_test.py +++ /dev/null @@ -1,281 +0,0 @@ -from .helpers import * - -class TestAppendTfunc: - def test_append_tfunc_with_no_transformations(self): - arguments = [ - "--append-tfunc", "lower", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,t:lower" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_tfunc_with_existing_transformations(self): - arguments = [ - "--append-tfunc", "lower", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - t:lower" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_tfunc_with_duplicate_transformation(self): - arguments = [ - "--append-tfunc", "lower", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:lower,\\ - t:urlDecode" -""" - expected = rule_string - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_tfunc_in_correct_order(self): - arguments = [ - "--append-tfunc", "lower", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - capture,\\ - log:'log',\\ - logdata:'data'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - deny,\\ - capture,\\ - t:lower,\\ - log:'log',\\ - logdata:'data'" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_tfunc_with_chain(self): - arguments = [ - "--append-tfunc", "lower", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "t:decodeUrl" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - t:lower,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "t:decodeUrl,\\ - t:lower" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_tfunc_skip_chain(self): - arguments = [ - "--append-tfunc", "lower", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "t:decodeUrl" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - t:lower,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "t:decodeUrl" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - -class TestRemoveTfunc: - def test_remove_tfunc_with_no_transformations(self): - arguments = [ - "--remove-tfunc", "lower", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = rule_string - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_remove_tfunc_with_existing_transformations(self): - arguments = [ - "--remove-tfunc", "lower", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - t:lower" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_remove_tfunc_with_multiple_args(self): - arguments = [ - "--remove-tfunc", "lower", - "--remove-tfunc", "decodeUrl" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - t:lower" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_remove_tfunc_with_chain(self): - arguments = [ - "--remove-tfunc", "lower", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - t:lower,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "t:decodeUrl,\\ - t:lower" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "t:decodeUrl" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_remove_tfunc_skip_chain(self): - arguments = [ - "--remove-tfunc", "lower", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - t:lower,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "t:decodeUrl,\\ - t:lower" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:decodeUrl,\\ - chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "t:decodeUrl,\\ - t:lower" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_remove_tfunc_retains_correct_line_numbers(self): - arguments = [ - "--remove-tfunc", "lowercase" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:none,t:lowercase,\\ - msg:'PHP Injection Attack: PHP Script File Upload Found'" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar \\ - "@rx foo" \\ - "id:12,\\ - t:none,\\ - msg:'PHP Injection Attack: PHP Script File Upload Found'" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) diff --git a/util/rule_ctl/tests/rule_ctl_variables_test.py b/util/rule_ctl/tests/rule_ctl_variables_test.py deleted file mode 100644 index 48923aaf5..000000000 --- a/util/rule_ctl/tests/rule_ctl_variables_test.py +++ /dev/null @@ -1,327 +0,0 @@ -from .helpers import * - -class TestAppendVariable: - def test_append_variable_with_one_variable(self): - arguments = [ - "--append-variable", "XML", - ] - rule_string = """ -SecRule ARGS "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|XML "@rx foo" "id:12" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_variable_with_existing_variables(self): - arguments = [ - "--append-variable", "XML", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar|XML "@rx foo" "id:12" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_variable_with_duplicate_variable(self): - arguments = [ - "--append-variable", "XML", - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = rule_string - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_append_variable_with_multiple_args(self): - arguments = [ - "--append-variable", "XML", - "--append-variable", "DURATION", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar|XML|DURATION "@rx foo" "id:12" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_variable_with_chain(self): - arguments = [ - "--append-variable", "XML", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar|XML "@rx foo" "id:12,chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar|XML "@rx foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_append_variable_skip_chain(self): - arguments = [ - "--append-variable", "XML", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar|XML "@rx foo" "id:12,chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - -class TestRemoveVariable: - def test_remove_variable_with_no_variable(self): - arguments = [ - "--remove-variable", "XML", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = rule_string - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_remove_variable_with_existing_variable(self): - arguments = [ - "--remove-variable", "XML", - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_remove_variable_with_multiple_args(self): - arguments = [ - "--remove-variable", "XML", - "--remove-variable", "DURATION", - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|DURATION|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_remove_variable_with_chain(self): - arguments = [ - "--remove-variable", "XML", - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - def test_remove_variable_skip_chain(self): - arguments = [ - "--remove-variable", "XML", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" -""" - expected = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - -class TestReplaceVariable: - def test_replace_variable_name_with_no_variable(self): - arguments = [ - "--replace-variable", "XML,DURATION", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = rule_string - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_variable_name_with_existing_variable(self): - arguments = [ - "--replace-variable", "XML,DURATION", - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|DURATION|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_variable_name_with_multiple_args(self): - arguments = [ - "--replace-variable", "XML,ARGS:xml", - "--replace-variable", "DURATION,ARGS:duration", - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|DURATION|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:xml|ARGS:foo|ARGS:duration|!ARGS:bar "@rx foo" "id:12" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_variable_name_with_chain(self): - arguments = [ - "--replace-variable", "XML,DURATION", - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" -""" - expected = """ -SecRule ARGS|DURATION|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|DURATION|ARGS:foo|!ARGS:bar "@rx foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_variable_name_skip_chain(self): - arguments = [ - "--replace-variable", "XML,DURATION", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" -""" - expected = """ -SecRule ARGS|DURATION|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_variable_with_no_variable(self): - arguments = [ - "--replace-variable", "XML,DURATION", - ] - rule_string = """ -SecRule ARGS|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = rule_string - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_variable_with_existing_variable(self): - arguments = [ - "--replace-variable", "XML,!DURATION:half-life", - ] - rule_string = """ -SecRule ARGS|XML|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|!DURATION:half-life|ARGS:foo|!ARGS:bar "@rx foo" "id:12" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_variable_with_multiple_args(self): - arguments = [ - "--replace-variable", "&XML,ARGS:xml", - "--replace-variable", "!DURATION:half-life,ARGS:duration", - ] - rule_string = """ -SecRule ARGS|&XML|ARGS:foo|!DURATION:half-life|!ARGS:bar "@rx foo" "id:12" -""" - expected = """ -SecRule ARGS|ARGS:xml|ARGS:foo|ARGS:duration|!ARGS:bar "@rx foo" "id:12" -""" - - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_variable_with_chain(self): - arguments = [ - "--replace-variable", "!XML:'lisa',&DURATION:\"bart\"", - ] - rule_string = """ -SecRule ARGS|!XML:'lisa'|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|!XML:'lisa'|ARGS:foo|!ARGS:bar "@rx foo" -""" - expected = """ -SecRule ARGS|&DURATION:\"bart\"|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|&DURATION:\"bart\"|ARGS:foo|!ARGS:bar "@rx foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) - - - def test_replace_variable_skip_chain(self): - arguments = [ - "--replace-variable", "!XML:'lisa',&DURATION:\"bart\"", - "--skip-chain" - ] - rule_string = """ -SecRule ARGS|!XML:'lisa'|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|!XML:'lisa'|ARGS:foo|!ARGS:bar "@rx foo" -""" - expected = """ -SecRule ARGS|&DURATION:\"bart\"|ARGS:foo|!ARGS:bar "@rx foo" "id:12,chain" - - SecRule ARGS|!XML:'lisa'|ARGS:foo|!ARGS:bar "@rx foo" -""" - context = create_context(arguments, rule_string) - assert expected == get_output(context) diff --git a/util/send-payload-pls.sh b/util/send-payload-pls.sh deleted file mode 100755 index 168736a0b..000000000 --- a/util/send-payload-pls.sh +++ /dev/null @@ -1,171 +0,0 @@ -#!/bin/bash -# -# Script to post a payload against a local webserver at each paranoia level. -# -# Note: Webserver has to be prepared to take desired PL as Request Header "PL". -# -# WARNING: Setting the paranoia level using a header without proper -# authentication and authorization is extremely dangerous, and is not -# recommended for production. -# -# Check how to use the Christian Folini's Apache access log format at: -# https://www.netnea.com/cms/apache-tutorial-5_extending-access-log/ -# -# LogFormat "%h %{GEOIP_COUNTRY_CODE}e %u [%{%Y-%m-%d %H:%M:%S}t.%{usec_frac}t] \"%r\" %>s %b \ -# \"%{Referer}i\" \"%{User-Agent}i\" \"%{Content-Type}i\" %{remote}p %v %A %p %R \ -# %{BALANCER_WORKER_ROUTE}e %X \"%{cookie}n\" %{UNIQUE_ID}e %{SSL_PROTOCOL}x %{SSL_CIPHER}x \ -# %I %O %{ratio}n%% %D %{ModSecTimeIn}e %{ApplicationTime}e %{ModSecTimeOut}e \ -# %{ModSecAnomalyScoreInPLs}e %{ModSecAnomalyScoreOutPLs}e \ -# %{ModSecAnomalyScoreIn}e %{ModSecAnomalyScoreOut}e" extended -# -# This script assumes %{ModSecAnomalyScoreIn}e is the column before to last in -# the access log, if this does not match your LogFormat the script won't work -# For better results set the SecDefaultAction to 'pass'. -# -# The anomaly score envvar can be set as follows: -# SecAction "id:90101,phase:5,pass,nolog,\ -# setenv:ModSecAnomalyScoreIn=%{TX.blocking_inbound_anomaly_score}" -# -# Sample rule to setup the PL dynamically from localhost" -# SecRule REMOTE_ADDR "@ipMatch 127.0.0.1,192.168.0.128" \ -# "id:90102,phase:1,pass,capture,log,auditlog,\ -# msg:'Setting engine to PL%{matched_var}',chain" -# SecRule REQUEST_HEADERS:PL "@rx ([1-4])" \ -# "setvar:'tx.detection_paranoia_level=%{matched_var}'" - -# Path to CRS rule set and local files -CRS="/usr/share/modsecurity-crs/rules" -accesslog="/apache/logs/access.log" -errorlog="/apache/logs/error.log" -URL="localhost:40080" -protocol="http" -while [[ $# > 0 ]] -do - case "$1" in - -c|--crs) - CRS="$2" - shift - ;; - -a|--access) - accesslog="$2" - shift - ;; - -e|--error) - errorlog="$2" - shift - ;; - -u|--url) - URL="$2" - shift - ;; - -r|--resolve) - resolve="$2" - resolve="--resolve $resolve" - shift - ;; - --protocol) - protocol="$2" - shift - ;; - -P|--payload) - PAYLOAD="$2" - shift - ;; - -h|--help) - echo "Usage:" - echo " --access \"/apache/logs/access.log\"" - echo " --error \"/apache/logs/error.log\"" - echo " --crs \"/usr/share/modsecurity-crs/rules\"" - echo " --url \"localhost:40080\"" - echo " --resolve \"someservername:40080:localhost\"" - echo " --protocol \"https\"" - echo " --payload \"/tmp/payload\"" - echo " --help" - exit 1 - ;; - esac - shift -done - -echo "Using CRS: $CRS" -echo "Using accesslog: $accesslog" -echo "Using errorlog: $errorlog" -echo "Using URL: $URL" -echo "Using protocol: $protocol" - -if [ -z "${PAYLOAD+x}" ]; then - echo "Please submit valid payload file as parameter. This is fatal. Aborting." - $0 -h - echo "Examples:" - echo " ./send-payload-pls.sh -a /logs/test/access.log \ - -e /logs/test/error.log -u test.test.test.com:6443 --protocol https \ - --payload /tmp/payload --resolve test.test.test.com:6443:192.168.0.128" - echo " ./send-payload-pls.sh -a /logs/test/access.log \ - -e /logs/test/error.log -u test.test.test.com:6443 --protocol https \ - --payload 'or 1=1;--' --resolve test.test.test.com:6443:192.168.0.128" - exit 1 -fi - -# URL of web server - -# Rules per Paranoia level -# Paranoia level 1 rules, rule 012 is the delimiter of the start of PL1 -# Paranoia level 1 rules, rule 013 is the delimiter of the end of PL1 -PL1=$(awk "/012,phase:2/,/013,phase:1/" $CRS/*.conf |egrep -v "(012|013),phase" |egrep -o "id:[0-9]+" |sed -r 's,id:([0-9]+),\1\\,' |tr -t '\n' '\|' |sed -r 's,\\\|$,,') - -# Paranoia level 2 rules, rule 014 is the delimiter of the start of PL2 -# Paranoia level 2 rules, rule 015 is the delimiter of the end of PL2 -PL2=$(awk "/014,phase:2/,/015,phase:1/" $CRS/*.conf |egrep -v "(014|015),phase" |egrep -o "id:[0-9]+" |sed -r 's,id:([0-9]+),\1\\,' |tr -t '\n' '\|' |sed -r 's,\\\|$,,') - -# Paranoia level 3 rules, rule 016 is the delimiter of the start of PL3 -# Paranoia level 3 rules, rule 017 is the delimiter of the end of PL3 -PL3=$(awk "/016,phase:2/,/017,phase:1/" $CRS/*.conf |egrep -v "(016|017),phase" |egrep -o "id:[0-9]+" |sed -r 's,id:([0-9]+),\1\\,' |tr -t '\n' '\|' |sed -r 's,\\\|$,,') - -# Paranoia level 4 rules, rule 018 is the delimiter of the start of PL4 -# Paranoia level 4 rules, "Paranoia Levels Finished" delimiter of the end of PL4 -PL4=$(awk "/018,phase:2/,/Paranoia Levels Finished/" $CRS/*.conf |egrep -v "018,phase" |egrep -o "id:[0-9]+" |sed -r 's,id:([0-9]+),\1\\,' |tr -t '\n' '\|' |sed -r 's,\\\|$,,') - -echo "Sending the following payload at multiple paranoia levels: $PAYLOAD" -echo - -for PL in 1 2 3 4; do - echo "--- Paranoia Level $PL ---" - echo - if [ -f "$PAYLOAD" ]; then - curl $protocol://$URL $resolve -k --data-binary "@$PAYLOAD" -H "PL: $PL" -o /dev/null -s - else - curl $protocol://$URL $resolve -k -d "$PAYLOAD" -H "PL: $PL" -o /dev/null -s - fi - - # Here are three ways to get the transaction unique id, - # the first one is Christian's format, second is Spartan's format, - # and the third one tries to guess which is the unique id using a - # regular expression, the first two require specific format. - # The automatic format detection may cause the script to malfunction. - # Uncomment only the required format. - # To use Christian's accesslog format uncomment the following line - #uniq_id=$(tail -1 $accesslog | cut -d\" -f11 | cut -b2-26) - - # To use Spartan's accesslog format (21 col) uncomment the following line - #uniq_id=$(tail -1 $accesslog | awk '{print $21}') - - # To use the automatic unique_id detection uncomment the following line - uniq_id=$(tail -1 $accesslog | egrep -o '\b[a-zA-Z0-9_-]{26,28}\b') - - echo "Tracking unique id: $uniq_id" - - grep $uniq_id $errorlog | sed -e "s/.*\[id \"//" -e "s/\(......\).*\[msg \"/\1 /" -e "s/\"\].*//" -e "s/(Total .*/(Total ...) .../" -e "s/Inbound and Outbound Score: [0-9]* [0-9]*/Inbound and Outbound Score: .../" | sed -e "s/$PL1/& PL1/" -e "s/$PL2/& PL2/" -e "s/$PL3/& PL3/ " -e "s/$PL4/& PL4/" | sort -k2 | sed -r "s/^([0-9]+)$/\1 FOREIGN RULE NOT IN CRS/" - - echo - echo -n "Total Inbound Score: " - - # Here are two ways to get the transaction anomaly score, - # the first one is Christian's format, second is Spartan's format - # To use Christian's accesslog format uncomment the following line - tail -1 $accesslog | cut -d\" -f11 | cut -d\ -f14 | tr "-" "0" - - # To use Spartan's accesslog format (21 col) uncomment the following line - # To use a different column change the $NF value, e.g. $(NF-1) - #tail -1 $accesslog | awk '{print $NF}' | tr "-" "0" - echo -done diff --git a/util/verify.rb b/util/verify.rb deleted file mode 100755 index 6619fcbc5..000000000 --- a/util/verify.rb +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- -# -# Copyright Β© 2012 Diego Elio PettenΓ² <flameeyes@flameeyes.eu> -# -# Permission to use, copy, modify, and distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS -# ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE -# CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL -# DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR -# PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS -# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -# SOFTWARE. - -require 'set' - -seen_ids = Set.new -res = 0 - -# read reserved id range from the id-range file so that it can be -# configured on a per-repository basis. -range = Range.new(*File.read('id-range').rstrip.split('-').map(&:to_i)) - -# open all the rule files -Dir.chdir("../") -Dir["**/*.conf"].each do |rulefile| - # read the content - content = File.read(rulefile) - - lineno = 0 - this_chained = next_chained = false - prevline = nil - - # for each line in the rule file - content.each_line do |line| - lineno += 1 - - # handle continuation lines - line = (prevline + line) unless prevline.nil? - - # remove comments - line.gsub!(/^([^'"]|'[^']+'|"[^"]+")#.*/) { $1 } - - if line =~ /\\\n$/ - prevline = line.gsub(/\\\n/, '') - next - else - prevline = nil - end - - # skip if it's an empty line (this also skip comment-only lines) - next if line =~ /(?:^\s+$|^#)/ - - this_chained = next_chained - next_chained = false - - # split the directive in its components, considering quoted strings - directive = line.scan(/([^'"\s][^\s]*[^'"\s]|'(?:[^']|\\')*[^\\]'|"(?:[^"]|\\")*[^\\]")(?:\s+|$)/).flatten - directive.map! do |piece| - # then make sure to split the quoting out of the quoted strings - (piece[0] == '"' || piece[0] == "'") ? piece[1..-2] : piece - end - - # skip if it's not a SecRule or SecAction - case directive[0] - when "SecRule" - rawrule = directive[3] - when "SecAction" - rawrule = directive[1] - else - next - end - - # get the rule and split in its components - rule = (rawrule || "").gsub(/(?:^"|"$)/, '').split(/\s*,\s*/) - - if rule.include?("chain") - next_chained = true - end - - ids = rule.find_all { |piece| piece =~ /^id:/ } - if ids.size > 1 - $stderr.puts "#{rulefile}:#{lineno} rule with multiple ids" - next - elsif ids.size == 0 - id = nil - else - id = ids[0].sub(/^id:/, '').gsub(/(?:^'|'$)/, '').to_i - end - - if this_chained - unless id.nil? - $stderr.puts "#{rulefile}:#{lineno} chained rule with id" - res = 1 - end - next - elsif id.nil? - $stderr.puts "#{rulefile}:#{lineno} rule missing id (#{rule.join(',')})" - res = 1 - next - elsif ! range.include?(id) - $stderr.puts "#{rulefile}:#{lineno} rule with id #{id} outside of reserved range #{range}" - res = 1 - elsif seen_ids.include?(id) - $stderr.puts "#{rulefile}:#{lineno} rule with duplicated id #{id}" - res = 1 - end - - seen_ids << id - end -end - -exit res diff --git a/util/virtual-patching/arachni2modsec.pl b/util/virtual-patching/arachni2modsec.pl deleted file mode 100755 index 9b6a3c256..000000000 --- a/util/virtual-patching/arachni2modsec.pl +++ /dev/null @@ -1,318 +0,0 @@ -#!/opt/local/bin/perl -T - -############################################# -# -=[ Virtual Patching Converter Script ]=- # -# Converts arachni XML Output # -# https://github.com/Zapotek/arachni # -# # -# arachni2modsec.pl # -# Version: 1.0 # -# # -# Copyright 2011 # -# Trustwave's SpiderLabs Research Team # -# www.trustwave.com # -# # -# Based On Code Originally Created by: # -# The Denim Group # -# www.denimgroup.com # -############################################# - -use XML::Smart; -use Switch; -use Data::Types qw(:all); -use Data::Validate::URI qw(is_uri); -use Getopt::Std; -use Acme::Comment type=>'C++', one_line=>1; #Block commenting, can be removed later - -############# -# Variables # -############# - -# [Configuration Vars] -my %param; -getopt("f",\%param); -$filename = $param{f}; -my $all_vulnerabilities_filename = "$filename"; - -unless ($filename) { - print "Flag:\n\n\t -f:\t path to arachni xml report file\nUsage:\n\n\t./arachni2modsec.pl -f ./arachni_report.xml\n\n"; - exit; -} - - -my $modsec_rules_file = "./modsecurity_crs_48_virtual_patches.conf"; - -# [End Config Vars] - -my $VULN_CLASS_XSS = "Cross-Site Scripting (XSS)"; -my $VULN_CLASS_SQLI = "SQL Injection"; -my $VULN_CLASS_BLIND_SQLI = "Blind SQL Injection"; -my $VULN_CLASS_LFI = "Path Traversal"; -my $VULN_CLASS_RFI = "Remote file inclusion"; -my $VULN_CLASS_HTTPRS = "Response splitting"; - -# Only the vulnerabilities in this array will have -# rules generated for them. -my @supported_vulns = ($VULN_CLASS_XSS, $VULN_CLASS_SQLI, $VULN_CLASS_BLIND_SQLI, $VULN_CLASS_LFI, $VULN_CLASS_RFI, $VULN_CLASS_HTTPRS); - -my $num_rules_generated=0; -my $num_not_supported=0; -my $num_bad_urls=0; - -my $wait_for_keypress=1; -my $request_failed=0; - -my $all_vulns_xml; -my @type; -my @id; -my $vuln_count; - -my $num_attacks_flag=0; -my $num_attacks_noflag=0; - -# End Vars ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -############# -# Main # -############# - -# Clean up env so perl doesn't complain -# when trying to run the restart snort -# script. -delete @ENV{qw(IFS CDPATH ENV BASH_ENV PATH)}; - -$all_vulns_xml = XML::Smart->new($all_vulnerabilities_filename); - -@type = $all_vulns_xml->{arachni_report}{issues}{issue}('[@]','name'); -@url = $all_vulns_xml->{arachni_report}{issues}{issue}('[@]','url'); -@param = $all_vulns_xml->{arachni_report}{issues}{issue}('[@]','variable'); - -open(my $MODSEC_RULES, '>' , $modsec_rules_file) || die "Unable to open modsecurity rules file $modsec_rules_file"; -$MODSEC_RULES->autoflush(1); - -$vuln_count = 0; - -foreach my $current_type (@type){ - print "==================================================================================================\n"; - print "Vulnerability[$vuln_count] - Type: $current_type\n"; - - if(exists {map { $_ => 1 } @supported_vulns}->{$current_type}){ - parseData(to_string($current_type)); - }else { - print "Vulnerability Type: $type is not supported in this version.\n"; - $num_not_supported++; - } - $vuln_count++; -} - -close($MODSEC_RULES); - -print "==================================================================================================\n"; - -print "\n\n************ END OF SCRIPT RESULTS *****************\n"; -print "Number of Vulnerabilities Processed: $vuln_count\n"; -print "Number of ModSecurity rules generated: $num_rules_generated\n"; -print "Number of Unsupported vulns skipped: $num_not_supported\n"; -print "Number of bad URLs (rules not gen): $num_bad_urls\n"; -print "****************************************************\n\n"; -print "----------------------------------------------------\n"; -print "To activate the virtual patching file ($modsec_rules_file),\n"; -print "copy it into the CRS \"base_rules\" directory and then create\n"; -print "a symlink to it in the \"activated_rules\" directory.\n"; -print "-----------------------------------------------------\n\n"; - - -############### -# Subroutines # -############### -sub parseData -{ - my($vuln_str) = @_; - my $vuln_detail_filename; - my $current_vuln_xml; - my $current_vuln_url; - my $current_vuln_param; - my $current_uricontent; - my @current_params; - my $id = $vuln_count; - - print "Found a $vuln_str vulnerability.\n"; - - $current_vuln_xml = XML::Smart->new($all_vulnerabilities_filename); - $current_vuln_url = $url[$vuln_count]; - - print URL_LIST "$current_vuln_url\n"; - - # Validate url (need separate sub?) - print "Validating URL: $current_vuln_url\n"; - if(is_uri(to_string($current_vuln_url))){ - print "URL is well-formed\n"; - print "Continuing Rule Generation\n"; - } else { - print "URL is NOT well-formed. Breaking Out of Rule Generation\n"; - $num_bad_urls++; - - # Waits for keypress in test mode so you can - # see why the URL failed validation. - if($test_mode){ - wait_for_keypress(); - } - return; - } - - $current_uricontent = get_uricontent($current_vuln_url); - - - # Only need param if XSS attack,SQLINJ,XPATH - # and maybe for HTTPRS, DT. - # NOT for PRL and DI - - if(($vuln_str ne $VULN_CLASS_PRL) && ($vuln_str ne $VULN_CLASS_DI)){ - @current_params = $param[$vuln_count]; - - } - if(($vuln_str ne $VULN_CLASS_PRL) && ($vuln_str ne $VULN_CLASS_DI)){ - print "Current vulnerable Param(s): @current_params\n"; - } - - generate_patch($vuln_str,$current_uricontent,@current_params); - - -} - - -sub generate_patch -{ - my($type,$uricontent,@params,$current_vuln_xml) = @_; - my $rule = ""; - $id = "1".$vuln_count; - - switch($type) - { - case ($VULN_CLASS_XSS) - { - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - # Check to see if each vulnerable parameter is valid - # then generate a rule using both uricontent and the - # parameter - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/XSS',tag:'WASCTC/WASC-8',tag:'WASCTC/WASC-22',tag:'OWASP_TOP_10/A2',tag:'OWASP_AppSensor/IE1',tag:'PCI/6.5.1',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/XSS.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.xss_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# Arachni Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_XSS (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - } - } - } - } - - case ($VULN_CLASS_SQLI) - { - - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/SQL_INJECTION.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# Arachni Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_SQLI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - case ($VULN_CLASS_BLIND_SQLI) - { - - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/SQL_INJECTION.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# Arachni Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_SQLI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - case ($VULN_CLASS_LFI) - { - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/LFI',tag:'WASCTC/WASC-33',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/LFI.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# Arachni Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_LFI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - case ($VULN_CLASS_RFI) - { - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/RFI',tag:'WASCTC/WASC-05',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/RFI.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# Arachni Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_LFI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - case ($VULN_CLASS_HTTPRS) - { - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/RESPONSE_SPLITTING',tag:'WASCTC/WASC-25',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/RESPONSE_SPLITTING.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# Arachni Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_RFI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - } -} - -sub get_uricontent -{ - my($url) = @_; - my $regex = "http:\/\/+[a-zA-Z0-9.:-]*\/"; - - # First, trim the first part out of the URL: - # http://.../ - $url =~ /$regex/; - substr($url,index($url,$&),length($&)) = ""; - - # If the URL contains a php or cgi query with - # one or more params and values, trim those out. - # Trim from the question mark to the end. - if($url =~ /\?/){ - substr($url,index($url,"?")) = ""; - } - return $url; - -} diff --git a/util/virtual-patching/zap2modsec.pl b/util/virtual-patching/zap2modsec.pl deleted file mode 100755 index 03fa21e03..000000000 --- a/util/virtual-patching/zap2modsec.pl +++ /dev/null @@ -1,318 +0,0 @@ -#!/opt/local/bin/perl -T - -############################################# -# -=[ Virtual Patching Converter Script ]=- # -# Converts OWASP ZAP XML Output # -# https://code.google.com/p/zaproxy/ # -# # -# zap2modsec.pl # -# Version: 1.0 # -# # -# Copyright 2011 # -# Trustwave's SpiderLabs Research Team # -# www.trustwave.com # -# # -# Based On Code Originally Created by: # -# The Denim Group # -# www.denimgroup.com # -############################################# - -use XML::Smart; -use Switch; -use Data::Types qw(:all); -use Data::Validate::URI qw(is_uri); -use Getopt::Std; -use Acme::Comment type=>'C++', one_line=>1; #Block commenting, can be removed later - -############# -# Variables # -############# - -# [Configuration Vars] -my %param; -getopt("f",\%param); -$filename = $param{f}; -my $all_vulnerabilities_filename = "$filename"; - -unless ($filename) { - print "Flag:\n\n\t -f:\t path to ZAP xml report file\nUsage:\n\n\t./zap2modsec.pl -f ./zap_report.xml\n\n"; - exit; -} - - -my $modsec_rules_file = "./modsecurity_crs_48_virtual_patches.conf"; - -# [End Config Vars] - -my $VULN_CLASS_XSS = "Cross Site Scripting"; -my $VULN_CLASS_SQLI = "SQL Injection"; -my $VULN_CLASS_SQLI_FINGERPRINT = "SQL Injection Fingerprinting"; -my $VULN_CLASS_LFI = "Path Traversal"; -my $VULN_CLASS_RFI = "Remote File Inclusion"; -my $VULN_CLASS_HTTPRS = "HTTP Response Splitting"; - -# Only the vulnerabilities in this array will have -# rules generated for them. -my @supported_vulns = ($VULN_CLASS_XSS, $VULN_CLASS_SQLI, $VULN_CLASS_SQLI_FINGERPRINT, $VULN_CLASS_LFI, $VULN_CLASS_RFI, $VULN_CLASS_HTTPRS); - -my $num_rules_generated=0; -my $num_not_supported=0; -my $num_bad_urls=0; - -my $wait_for_keypress=1; -my $request_failed=0; - -my $all_vulns_xml; -my @type; -my @id; -my $vuln_count; - -my $num_attacks_flag=0; -my $num_attacks_noflag=0; - -# End Vars ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -############# -# Main # -############# - -# Clean up env so perl doesn't complain -# when trying to run the restart snort -# script. -delete @ENV{qw(IFS CDPATH ENV BASH_ENV PATH)}; - -$all_vulns_xml = XML::Smart->new($all_vulnerabilities_filename); - -@type = $all_vulns_xml->{OWASPZAPReport}{site}{alerts}{alertitem}('[@]','alert'); -@url = $all_vulns_xml->{OWASPZAPReport}{site}{alerts}{alertitem}('[@]','uri'); -@param = $all_vulns_xml->{OWASPZAPReport}{site}{alerts}{alertitem}('[@]','param'); - -open(my $MODSEC_RULES, '>' , $modsec_rules_file) || die "Unable to open modsecurity rules file $modsec_rules_file"; -$MODSEC_RULES->autoflush(1); - -$vuln_count = 0; - -foreach my $current_type (@type){ - print "==================================================================================================\n"; - print "Vulnerability[$vuln_count] - Type: $current_type\n"; - - if(exists {map { $_ => 1 } @supported_vulns}->{$current_type}){ - parseData(to_string($current_type)); - }else { - print "Vulnerability Type: $type is not supported in this version.\n"; - $num_not_supported++; - } - $vuln_count++; -} - -close($MODSEC_RULES); - -print "==================================================================================================\n"; - -print "\n\n************ END OF SCRIPT RESULTS *****************\n"; -print "Number of Vulnerabilities Processed: $vuln_count\n"; -print "Number of ModSecurity rules generated: $num_rules_generated\n"; -print "Number of Unsupported vulns skipped: $num_not_supported\n"; -print "Number of bad URLs (rules not gen): $num_bad_urls\n"; -print "****************************************************\n\n"; -print "----------------------------------------------------\n"; -print "To activate the virtual patching file ($modsec_rules_file),\n"; -print "copy it into the CRS \"base_rules\" directory and then create\n"; -print "a symlink to it in the \"activated_rules\" directory.\n"; -print "-----------------------------------------------------\n\n"; - - -############### -# Subroutines # -############### -sub parseData -{ - my($vuln_str) = @_; - my $vuln_detail_filename; - my $current_vuln_xml; - my $current_vuln_url; - my $current_vuln_param; - my $current_uricontent; - my @current_params; - my $id = $vuln_count; - - print "Found a $vuln_str vulnerability.\n"; - - $current_vuln_xml = XML::Smart->new($all_vulnerabilities_filename); - $current_vuln_url = $url[$vuln_count]; - - print URL_LIST "$current_vuln_url\n"; - - # Validate url (need separate sub?) - print "Validating URL: $current_vuln_url\n"; - if(is_uri(to_string($current_vuln_url))){ - print "URL is well-formed\n"; - print "Continuing Rule Generation\n"; - } else { - print "URL is NOT well-formed. Breaking Out of Rule Generation\n"; - $num_bad_urls++; - - # Waits for keypress in test mode so you can - # see why the URL failed validation. - if($test_mode){ - wait_for_keypress(); - } - return; - } - - $current_uricontent = get_uricontent($current_vuln_url); - - - # Only need param if XSS attack,SQLINJ,XPATH - # and maybe for HTTPRS, DT. - # NOT for PRL and DI - - if(($vuln_str ne $VULN_CLASS_PRL) && ($vuln_str ne $VULN_CLASS_DI)){ - @current_params = $param[$vuln_count]; - - } - if(($vuln_str ne $VULN_CLASS_PRL) && ($vuln_str ne $VULN_CLASS_DI)){ - print "Current vulnerable Param(s): @current_params\n"; - } - - generate_patch($vuln_str,$current_uricontent,@current_params); - - -} - - -sub generate_patch -{ - my($type,$uricontent,@params,$current_vuln_xml) = @_; - my $rule = ""; - $id = "1".$vuln_count; - - switch($type) - { - case ($VULN_CLASS_XSS) - { - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - # Check to see if each vulnerable parameter is valid - # then generate a rule using both uricontent and the - # parameter - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/XSS',tag:'WASCTC/WASC-8',tag:'WASCTC/WASC-22',tag:'OWASP_TOP_10/A2',tag:'OWASP_AppSensor/IE1',tag:'PCI/6.5.1',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/XSS.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.xss_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# OWASP ZAP Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_XSS (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - } - } - } - } - - case ($VULN_CLASS_SQLI) - { - - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/SQL_INJECTION.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# OWASP ZAP Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_SQLI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - case ($VULN_CLASS_BLIND_SQLI) - { - - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/SQL_INJECTION.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# OWASP ZAP Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_SQLI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - case ($VULN_CLASS_LFI) - { - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/LFI',tag:'WASCTC/WASC-33',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/LFI.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# OWASP ZAP Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_LFI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - case ($VULN_CLASS_RFI) - { - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/RFI',tag:'WASCTC/WASC-05',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/RFI.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# OWASP ZAP Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_LFI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - case ($VULN_CLASS_HTTPRS) - { - if($uricontent ne "" && @params){ - foreach(@params){ - if($_ ne ""){ - $rule = "SecRule REQUEST_FILENAME \"$uricontent\" \"chain,phase:2,t:none,block,msg:'Virtual Patch for $type',id:'$id',tag:'WEB_ATTACK/RESPONSE_SPLITTING',tag:'WASCTC/WASC-25',logdata:'%{MATCHED_VAR_NAME}',severity:'2'\"\n\tSecRule \&TX:\'\/RESPONSE_SPLITTING.*ARGS:$_\/\' \"\@gt 0\" \"setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}\""; - - print $MODSEC_RULES "#\n# OWASP ZAP Virtual Patch Details:\n# ID: $id\n# Type: $type\n# Vulnerable URL: $uricontent\n# Vulnerable Parameter: $_\n#\n".$rule."\n\n"; - print "$VULN_CLASS_RFI (uricontent and param) rule successfully generated and saved in $modsec_rules_file.\n"; - $num_rules_generated++; - - - } - } - } - } - - } -} - -sub get_uricontent -{ - my($url) = @_; - my $regex = "http:\/\/+[a-zA-Z0-9.:-]*\/"; - - # First, trim the first part out of the URL: - # http://.../ - $url =~ /$regex/; - substr($url,index($url,$&),length($&)) = ""; - - # If the URL contains a php or cgi query with - # one or more params and values, trim those out. - # Trim from the question mark to the end. - if($url =~ /\?/){ - substr($url,index($url,"?")) = ""; - } - return $url; - -}