waf攔截
在打某市 Hvv 第一天就找到一個文件上傳的點,經過測試,可以直接任意文件上傳,沒有什么道理。
直接嘗試上傳 php 文件,被 waf 攔截了
2021最新整理網絡安全/滲透測試/安全學習/100份src技術文檔(全套視頻、CTF、大廠面經、精品手冊、必備工具包、路線)一>關注我,私信回復“資料”獲取<一
嘗試了一系列的繞過,發現利用換行+chunk 可以過后綴
之后就要過內容檢測的 waf,但是在這里死活過不去
Webshell內容+chunk編碼過后綴 會提示 502
之后嘗試上傳 txt,想先看看能不能先繞過內容檢測,發現這個 waf 檢測不能同時存在<? 和 ()
如<?phpinfo(); 這種語句,就會被攔截。因為他同時出現了<?和 ()
如果你的內容檢測沒有同時出現()和<?時,就可以過內容檢測,不知道市面上有沒有這種類型的webshell,我找了一圈好像都有。
host碰撞繞過
該站點為某個單位的類似官網的站點,然后網站有超鏈接,該超鏈接定向跳轉到某些ip
因為這種單位很喜歡將自己的服務器部署在C段的分散的IP上,于是猜測,這個類似官網網站的站點也很有可能就搭建在這個超鏈接的C段上,我們不妨 host 碰撞一下,如果找到了真實IP的話,那么久可能繞過云 waf
于是直接用 host 碰撞的 py 腳本去碰撞一下該C段IP,發現居然成功了。
直接修改Target為碰撞出來的真實IP,之后就不用 chunk +后綴換行也能過后綴waf攔截了(需要換行,不用chunk)。
但是這里內容檢測還是過不了,但是不會顯示云 waf 地址或者 502了,猜測肯定是過了 cdn, 但是不知道是什么攔截住了(可能為本地的硬件防火墻)
content-Encoding繞過
于是翻了翻筆記,找到以前屢試不爽的上傳 Tips ————添加 Accept-Encoding: deflate
發現這種方法已經過時了,換成 Accept-Encoding: gzip 發現還是過不了這個攔截
在http協議中,可以對內容(也就是body部分)進行編碼, 可以采用gzip這樣的編碼。從而達到壓縮的目的。也可以使用其他的編碼把內容攪亂或加密,以此來防止未授權的第三方看到文檔的內容。
Accept-Encoding——瀏覽器發給服務器,聲明瀏覽器(客戶端)支持的編碼類型。
當服務端接收到請求,并且從header里拿到編碼標識時,就可以選擇其中一種方式來進行編碼壓縮,然后返給客戶端。
發現還有一個 header 字段 Content-Encoding 這個字段大概意思是:決定文件接收方將以什么形式、什么編碼讀取這個文件,指定服務器響應的 HTTP 內容類型。
一般來說:
Accept-Encoding設置在請求頭當中,會告訴服務器,我可以接受哪種編碼壓縮。
Content-Encoding設置在響應頭中,會告訴客戶端,我用的是哪種編碼壓縮。但是也可以放在Header頭上
嘗試了一下,發現content-Encoding居然可以繞過
如果沒找到真實IP,這樣也是過不了的。
之后就可以直接上傳了。但是后來發現該服務器的 disable_function 賊難繞,這是后話了。
總 結:
1、通 過 host 碰 撞 找 到 真 實 IP 繞 過 云 waf(fofa 這 種 是 搜 不 到 真 實 IP 的)
2、Content-Encoding=deflate 繞過本地防火墻內容檢測
gzip 也是能繞的






