WAF(web應用防火牆)逐漸成為安全解決方案的標配之一。正因為有了它,許多公司甚至已經不在意web應用的漏洞。遺憾的是,並不是所有的waf都是不可繞過的!本文將向大家講述,如何使用注入神器SQLMap繞過WAFs/IDSs。
svn下載最新版本的sqlmap
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
我們關注的重點在於使用tamper腳本修改請求從而逃避WAF的規則檢測。許多時候,你需要聯合使用多個tamper腳本。
所有tamper腳本請參考:https://svn.sqlmap.org/sqlmap/trunk/sqlmap/tamper/
在這里,我們以針對Mysql的space2hash.py和space2morehash.py為例。這兩個腳本將會自動轉換所有空格為隨機注釋,而此腳本的拓展版本(space2morehash.py)也會幫助到你來“打亂”方法函數以繞過WAF的檢測。
Example: * Input: 1 AND 9227=9227
* Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227
好了,接下來我們講重點了。
你可以使用命令–tamper 來調用腳本,如下:
./sqlmap.py -u http://127.0.0.1/test.php?id=1 -v 3 –dbms “MySQL” –technique U -p id –batch –tamper “space2morehash.py”
由上圖我們可以看到,請求中的空格被替換為URL編碼后的%23randomText%0A
而CHAR(), USER(),CONCAT() 這種函數被替換為FUNCTION%23randomText%0A()
還有兩個空格替換腳本:space2mssqlblank.py and space2mysqlblank.py,如下圖
charencode.py andchardoubleencode.py是兩個用來打亂編碼的tamper腳本,他們在繞過不同的關鍵詞過濾時很有作用。
如果web應用使用asp/asp.net開發,charunicodeencode.py和percentage.py可以幫助你逃避Waf的檢測。
有意思的是,asp允許在字符之間使用多個%號間隔,比如 AND 1=%%%%%%%%1 是合法的!
總結:
以上列舉了一部分有代表性的tamper腳本來幫助我們繞過waf,每個腳本都有自己的使用場景,還是需要靈活使用。
參考文章:《利用SQLMap進行cookie注入》《通過HTTP參數污染繞過WAF攔截》