如何繞過WAF和本地防火牆雙重防護?

waf攔截

在打某市 Hvv 第一天就找到一個檔案上傳的點,經過測試,可以直接任意檔案上傳,沒有什麼道理。

如何繞過WAF和本地防火牆雙重防護?

直接嘗試上傳 Php 檔案,被 waf 攔截了

如何繞過WAF和本地防火牆雙重防護?

如何繞過WAF和本地防火牆雙重防護?

2021最新整理網路安全/滲透測試/安全學習/100份src技術文件(全套影片、CTF、大廠面經、精品手冊、必備工具包、路線)一>關注我,私信回覆“資料”獲取<一

嘗試了一系列的繞過,發現利用換行+chunk 可以過後綴

如何繞過WAF和本地防火牆雙重防護?

如何繞過WAF和本地防火牆雙重防護?

之後就要過內容檢測的 waf,但是在這裡死活過不去

如何繞過WAF和本地防火牆雙重防護?

Webshell內容+chunk編碼過後綴 會提示 502

如何繞過WAF和本地防火牆雙重防護?

之後嘗試上傳 txt,想先看看能不能先繞過內容檢測,發現這個 waf 檢測不能同時存在<? 和 ()

如<?phpinfo(); 這種語句,就會被攔截。因為他同時出現了<?和 ()

如果你的內容檢測沒有同時出現()和<?時,就可以過內容檢測,不知道市面上有沒有這種型別的webshell,我找了一圈好像都有。

host碰撞繞過

該站點為某個單位的類似官網的站點,然後網站有超連結,該超連結定向跳轉到某些ip

如何繞過WAF和本地防火牆雙重防護?

因為這種單位很喜歡將自己的伺服器部署在C段的分散的IP上,於是猜測,這個類似官網網站的站點也很有可能就搭建在這個超連結的C段上,我們不妨 host 碰撞一下,如果找到了真實IP的話,那麼久可能繞過雲 waf

如何繞過WAF和本地防火牆雙重防護?

於是直接用 host 碰撞的 py 指令碼去碰撞一下該C段IP,發現居然成功了。

如何繞過WAF和本地防火牆雙重防護?

直接修改Target為碰撞出來的真實IP,之後就不用 chunk +字尾換行也能過後綴waf攔截了(需要換行,不用chunk)。

如何繞過WAF和本地防火牆雙重防護?

但是這裡內容檢測還是過不了,但是不會顯示雲 waf 地址或者 502了,猜測肯定是過了 cdn, 但是不知道是什麼攔截住了(可能為本地的硬體防火牆)

如何繞過WAF和本地防火牆雙重防護?

content-Encoding繞過

於是翻了翻筆記,找到以前屢試不爽的上傳 Tips ————新增 Accept-Encoding: deflate

發現這種方法已經過時了,換成 Accept-Encoding: gzip 發現還是過不了這個攔截

如何繞過WAF和本地防火牆雙重防護?

在http協議中,可以對內容(也就是body部分)進行編碼, 可以採用gzip這樣的編碼。從而達到壓縮的目的。也可以使用其他的編碼把內容攪亂或加密,以此來防止未授權的第三方看到文件的內容。

Accept-Encoding——瀏覽器發給伺服器,宣告瀏覽器(客戶端)支援的編碼型別。

當服務端接收到請求,並且從header裡拿到編碼標識時,就可以選擇其中一種方式來進行編碼壓縮,然後返給客戶端。

發現還有一個 header 欄位 Content-Encoding 這個欄位大概意思是:決定檔案接收方將以什麼形式、什麼編碼讀取這個檔案,指定伺服器響應的 HTTP 內容型別。

一般來說:

Accept-Encoding設定在請求頭當中,會告訴伺服器,我可以接受哪種編碼壓縮。 Content-Encoding設定在響應頭中,會告訴客戶端,我用的是哪種編碼壓縮。但是也可以放在Header頭上

嘗試了一下,發現content-Encoding居然可以繞過

如何繞過WAF和本地防火牆雙重防護?

如果沒找到真實IP,這樣也是過不了的。

如何繞過WAF和本地防火牆雙重防護?

之後就可以直接上傳了。但是後來發現該伺服器的 disable_function 賊難繞,這是後話了。

如何繞過WAF和本地防火牆雙重防護?

總 結:

1、通 過 host 碰 撞 找 到 真 實 IP 繞 過 雲 waf(fofa 這 種 是 搜 不 到 真 實 IP 的)2、Content-Encoding=deflate 繞過本地防火牆內容檢測

gzip 也是能繞的

如何繞過WAF和本地防火牆雙重防護?