Skip to content

Commit ff9aa5c

Browse files
committed
Adds support to the variable SESSIONID
1 parent a2a4779 commit ff9aa5c

File tree

3 files changed

+74
-1
lines changed

3 files changed

+74
-1
lines changed

src/actions/set_sid.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ bool SetSID::evaluate(Rule *rule, Transaction *t) {
4747
#endif
4848

4949
t->m_collections.m_session_collection_key = colNameExpanded;
50+
t->m_collections.storeOrUpdateFirst("SESSIONID", colNameExpanded);
5051

5152
return true;
5253
}

src/parser/seclang-scanner.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ OPERATOR_GEOIP (?i:@geoLookup)
116116
TRANSFORMATION t:(?i:(cmdLine|sha1|hexEncode|lowercase|urlDecodeUni|urlDecode|none|compressWhitespace|removeWhitespace|replaceNulls|removeNulls|htmlEntityDecode|jsDecode|cssDecode|trim|normalizePathWin|normalisePathWin|normalisePath|length|utf8toUnicode|urldecode|removeCommentsChar|removeComments|replaceComments))
117117

118118

119-
VARIABLE (?i:(RESOURCE|ARGS_COMBINED_SIZE|ARGS_GET_NAMES|ARGS_POST_NAMES|FILES_COMBINED_SIZE|FULL_REQUEST_LENGTH|REQUEST_BODY_LENGTH|REQUEST_URI_RAW|UNIQUE_ID|SERVER_PORT|SERVER_ADDR|REMOTE_PORT|REMOTE_HOST|MULTIPART_STRICT_ERROR|PATH_INFO|MULTIPART_CRLF_LF_LINES|MATCHED_VAR_NAME|MATCHED_VAR|INBOUND_DATA_ERROR|OUTBOUND_DATA_ERROR|FULL_REQUEST|AUTH_TYPE|ARGS_NAMES|REMOTE_ADDR|REQUEST_BASENAME|REQUEST_BODY|REQUEST_FILENAME|REQUEST_HEADERS_NAMES|REQUEST_METHOD|REQUEST_PROTOCOL|REQUEST_URI|RESPONSE_BODY|RESPONSE_CONTENT_LENGTH|RESPONSE_CONTENT_TYPE|RESPONSE_HEADERS_NAMES|RESPONSE_PROTOCOL|RESPONSE_STATUS|REQBODY_PROCESSOR))
119+
VARIABLE (?i:(RESOURCE|ARGS_COMBINED_SIZE|ARGS_GET_NAMES|ARGS_POST_NAMES|FILES_COMBINED_SIZE|FULL_REQUEST_LENGTH|REQUEST_BODY_LENGTH|REQUEST_URI_RAW|UNIQUE_ID|SERVER_PORT|SERVER_ADDR|REMOTE_PORT|REMOTE_HOST|MULTIPART_STRICT_ERROR|PATH_INFO|MULTIPART_CRLF_LF_LINES|MATCHED_VAR_NAME|MATCHED_VAR|INBOUND_DATA_ERROR|OUTBOUND_DATA_ERROR|FULL_REQUEST|AUTH_TYPE|ARGS_NAMES|REMOTE_ADDR|REQUEST_BASENAME|REQUEST_BODY|REQUEST_FILENAME|REQUEST_HEADERS_NAMES|REQUEST_METHOD|REQUEST_PROTOCOL|REQUEST_URI|RESPONSE_BODY|RESPONSE_CONTENT_LENGTH|RESPONSE_CONTENT_TYPE|RESPONSE_HEADERS_NAMES|RESPONSE_PROTOCOL|RESPONSE_STATUS|REQBODY_PROCESSOR|SESSIONID))
120120
VARIABLE_COL (?i:(SESSION|GLOBAL|ARGS_POST|ARGS_GET|ARGS|FILES_SIZES|FILES_NAMES|FILES_TMP_CONTENT|MULTIPART_FILENAME|MULTIPART_NAME|MATCHED_VARS_NAMES|MATCHED_VARS|FILES|QUERY_STRING|REQUEST_COOKIES|REQUEST_HEADERS|RESPONSE_HEADERS|GEO|IP|XML|REQUEST_COOKIES_NAMES))
121121

122122
VARIABLE_TX (?i:TX)
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
[
2+
{
3+
"enabled":1,
4+
"version_min":300000,
5+
"title":"Testing SESSIONID variable (1/2)",
6+
"expected":{
7+
"debug_log": "Target value: \"rAAAAAAA2t5uvjq435r4q7ib3vtdjq1202\""
8+
},
9+
"client":{
10+
"ip":"200.249.12.31",
11+
"port":123
12+
},
13+
"request":{
14+
"headers":{
15+
"Host":"localhost",
16+
"User-Agent":"curl/7.38.0",
17+
"Accept":"*/*",
18+
"User-Agent":"My sweet little browser",
19+
"Cookie": "PHPSESSID=rAAAAAAA2t5uvjq435r4q7ib3vtdjq120"
20+
},
21+
"uri":"/?key=value&key=other_value",
22+
"method":"GET"
23+
},
24+
"server":{
25+
"ip":"200.249.12.31",
26+
"port":80
27+
},
28+
"rules":[
29+
"SecRuleEngine On",
30+
"SecDebugLog \/tmp\/modsec_debug.log",
31+
"SecRule REQUEST_HEADERS:User-Agent \"^(.*)$\" \"id:'900018',phase:1,t:none,t:sha1,t:hexEncode,setsid:%{REQUEST_COOKIES:PHPSESSID}%,nolog,pass\"",
32+
"SecRule REQUEST_HEADERS \".*\" \"id:'900021',phase:1,setvar:SESSION.score=+10\"",
33+
"SecRule REQUEST_HEADERS:User-Agent \"^(.*)$\" \"id:'900068',phase:1,t:none,t:sha1,t:hexEncode,setsid:%{REQUEST_COOKIES:PHPSESSID}2,nolog,pass\"",
34+
"SecRule REQUEST_HEADERS \".*\" \"id:'900022',phase:1,setvar:SESSION.score=+5\"",
35+
"SecRule SESSIONID \".*\" \"id:1239,phase:1,log,pass\""
36+
]
37+
},
38+
{
39+
"enabled":1,
40+
"version_min":300000,
41+
"title":"Testing SESSIONID variable (2/2)",
42+
"expected":{
43+
"debug_log": "Target value: \"whee\""
44+
},
45+
"client":{
46+
"ip":"200.249.12.31",
47+
"port":123
48+
},
49+
"request":{
50+
"headers":{
51+
"Host":"localhost",
52+
"User-Agent":"curl/7.38.0",
53+
"Accept":"*/*",
54+
"User-Agent":"My sweet little browser",
55+
"Cookie": "PHPSESSID=whee"
56+
},
57+
"uri":"/?key=value&key=other_value",
58+
"method":"GET"
59+
},
60+
"server":{
61+
"ip":"200.249.12.31",
62+
"port":80
63+
},
64+
"rules":[
65+
"SecRuleEngine On",
66+
"SecDebugLog \/tmp\/modsec_debug.log",
67+
"SecRule REQUEST_HEADERS:User-Agent \"^(.*)$\" \"id:'900018',phase:1,t:none,t:sha1,t:hexEncode,setsid:%{REQUEST_COOKIES:PHPSESSID}%,nolog,pass\"",
68+
"SecRule REQUEST_HEADERS \".*\" \"id:'900021',phase:1,setvar:SESSION.score=+10\"",
69+
"SecRule SESSIONID \".*\" \"id:1239,phase:1,log,pass\""
70+
]
71+
}
72+
]

0 commit comments

Comments
 (0)