原理:
沒有嚴(yán)格限制文件后綴名和文件類型,導(dǎo)致可以上傳任意PHP文件,并且將它們傳遞給PHP解釋器,就可以在遠(yuǎn)程服務(wù)器上執(zhí)行任意PHP腳本。
文件上傳校驗(yàn)方法:
- 客戶端javasscript校驗(yàn)(一般只校驗(yàn)后綴名)
- 服務(wù)端校驗(yàn)
-文件頭content-type字段校驗(yàn)
-文件內(nèi)容頭校驗(yàn)(GIF89a)
-后綴名黑名單校驗(yàn)
-后綴名白名單校驗(yàn)
-自定義正則校驗(yàn) - WAF設(shè)備校驗(yàn)
文件上傳繞過方式:
1.客戶端繞過
判斷方式:不上傳文件就點(diǎn)擊上傳按鈕時(shí),彈出報(bào)錯(cuò)如:只允許.jpg/.jpeg/.png格式的文件,而此時(shí)并沒有發(fā)送數(shù)據(jù)包。

圖片發(fā)自簡(jiǎn)書App
繞過方式:

圖片發(fā)自簡(jiǎn)書App
服務(wù)端繞過方式還不太熟悉,具體可參考該鏈接的內(nèi)容
修復(fù)建議:
在服務(wù)器端也要校驗(yàn)文件格式,對(duì)上傳文件大小做限制。