2017-05-02 131 views
0

我的目标是写一个规则,以检测一个简单的道理利用(SQLIsnort | PCRE |规则规范

的字符串例如是一种形式:

% ' or 1 = 1 # 

为了识别上述和一些串它的变化,我开发了以下pcre。

pcre: "/\W\s*\W\s*or\s*([\d\w])\s*\W\s*\1\s*\W/"; 

我跑了一个测试@regextester和我的正则表达式似乎工作。但是,在Snort中,此规则无法选择并且不会触发。

规则是一种格式

alert 192.168.x.x any -> 192.168.y.y 80 (msg: "SQL Query"; pcre: "/\W\s*\W\s*or\s*([\d\w])\s*\W\s*\1\s*\W/"; sid: 1001;); 

我想感谢所有帮助的

GET请求Whireshark

GET /dvwa/vulnerabilities/sqli/?id=%25+%27+or+1+%3D+1+%23&Submit=Submit 
+0

您是否收到错误消息,例如“规则选项必须包含在'('和')''中?在规则的末尾你不需要';'。 –

+0

它不会产生错误,文件中的其他两个规则可以正常工作,除了这一个 –

+0

如果包含一个pcap的流量,获得帮助可能会更容易。 –

回答

0

规则的原因失败是URL编码。 %25表示%,%27表示',+(or %20)表示space,%3D表示=https://www.w3schools.com/tags/ref_urlencode.asp

Snort有HTTP normalization module。但我认为这并不完美。

请参阅以下规则。

alert tcp any any -> any any (content:"+or+"; nocase; pcre:"/\+or\+\w\+%3D\+\w/";) 

单独使用pcre可能会降低性能。与内容一起使用时,它会缩小pcre检查的范围并提高性能。