2017-05-02 145 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檢查的範圍並提高性能。