打鼾| PCRE |规则说明

时间:2017-05-02 22:22:44

标签: pcre snort

我的目标是编写一条规则来检测一个简单的真实漏洞( SQLi

字符串示例的格式为:

% ' 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;);

我很感激任何帮助

来自 Whireshark

GET 请求

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

1 个答案:

答案 0 :(得分: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检查的范围并提高性能。