今天就聊聊關于上傳繞過WAF的姿勢,WAF(Web Application Firewall)簡單的來說就是執行一系列針對HTTP/HTTPS的安全策略來專門為Web應用提供保護的一款產品。
上傳繞過不算什么技術了,正所謂未知防,焉知攻,先來了解一下網站的防御措施吧!
一、Bypass Waf
1.一般開發人員防御策略
客戶端javascript校驗(一般只校驗后綴名)服務端校驗1>文件頭content-type字段校驗(image/gif)2>文件內容頭校驗(GIF89a)3>后綴名黑名單校驗4>后綴名白名單校驗5>自定義正則校驗6>WAF設備校驗(根據不同的WAF產品而定)。
2.Bypass
2.1 有些waf不會防asp/php/jsp后綴的文件,但是他會檢測里面的內容。
eg1:
1.先上傳一個內容為木馬的txt后綴文件,因為后綴名的關系沒有檢驗內容
2.然后再上傳一個.php的文件。
此時,這個php文件就會去引用txt文件的內容,從而繞過校驗,下面列舉包含的語法:
訪問shell.php就可以執行php代碼 嘗試修改壓縮文件后綴為zip、phar、rar發現都是可以的。
2.2 WTS-WAF Bypass
2.3 Baidu cloud Bypass
發現百度云目前正在攔截后綴,百度云過上傳還跟?php前面是否有代碼還有很大關系,在這里就不要廢話了,大家自己去研究一下吧。
百度云繞過就簡單的很多很多,在對文件名大小寫上面沒有檢測php是過了的,Php就能過,或者PHP,一句話自己合成圖片用Xise連接即可。
2.4 阿里云WAF
Content-Disposition: form-data; name=“img_crop_file”; filename="1.jpg .Php"Content-Type: image/jpeg
Bypass:
Content-Disposition: form-data; name=“img_crop_file”; filename=“1.php”
Note:你看的沒錯,刪除Content-Type: image/jpeg即可繞過。
2.5 安全狗上傳Bypass(最新版不可繞)
Content-Disposition: form-data; name=“image”; filename="085733uykwusqcs8vw8wky.png"Content-Type: image/png
Bypass:
Content-Disposition: form-data; name=“image”; filename=“085733uykwusqcs8vw8wky.png
C.php”
Note:刪掉ontent-Type: image/jpeg只留下c,將.php加c后面即可,但是要注意額,雙引號要跟著c.php".原理就不多說了,自己研究。
2.6 云鎖上傳Bypass
Content-Disposition: form-data; name=“up_picture”; filename=“xss.php”
二、Defense
詳細說一下Type繞過防御機制,其他的防御機制自己可以下去研究。
1.目錄設為不可執行:
只要web容器無法解析該目錄下的文件,即使攻擊者上傳了腳本文件,服務器本身也不會受到影響,所以此點至關重要。
2.判斷文件類型:
判斷文件類型時,應結合MIME-Type、后綴檢查等方式、推薦使用白名單的方式。
3.用隨機數改寫:
文件上傳如果要執行代碼,則需要用戶能訪問到這個文件。在某些環境下,用戶能上傳,但是不能訪問。
三、Summary
研究WAF的繞過手段,是為了更好的提升WAF的防御能力。在研究突破的過程中,不要只是僅僅停留在正則表達式、基本漏洞原理,需要對涉及并深入更多的領域,例如HTTP協議理解和PHP、Tomcat對HTTP協議源碼分析,MySQL詞法分析,和Fuzz的思路等。在此過程中,會有許多樂趣,也會有各方面能力的提升。\