我想检测和发送警报以:
request /abc/abc.jsp and
cookie abc value is null
我尝试了:
alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORT (sid:xxx; gid:1; content:"/abc/abc.php"; http_uri; pcre:"abc=''"; msg:"BLACKLIST - request without cookie ";)
,但似乎不起作用...
您的PCRE内容未遵循正确的语法。您需要将内容放在前斜线之间(/)之间。在这里查看手册。因此,您的PCRE选项应该如下:
pcre:"/abc=''/"
我还要注意,此PCRE可能不足以完成您想做的事情。我会做以下类似的事情:
pcre:"/abc=('|")(1)/C"
这将允许您同时查找单引号,因此这将匹配以下任何一个:
abc =''
ABC ="
还在PCRE的末尾添加C,将告诉Snort仅检查以下内容:
匹配归一化的HTTP请求或HTTP响应cookie
它更有效且易于假阳性,因为它仅检查归一化的cookie含量。它也不太容易出现虚假负面因素,因为它正在检查cookie的归一化内容,因为如果cookie出于某种原因编码了cookie,则为%27,并且"将为%22,而PCRE则不匹配。给C选项Snort将检查归一化有效载荷并将匹配。
因此您的最终规则可能看起来像:
alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORT (sid:xxx; gid:1; content:"/abc/abc.php"; http_uri; pcre:"/abc=('|")(1)/C"; msg:"BLACKLIST - request without cookie ";)
cookie结构: name=value;
如果您想检测cookie abc值为null,请使用模式abc=;
alert tcp any any -> any any (msg:"test-cookie"; content:"abc=;"; http_cookie; nocase;)