Web安全-之文件上傳漏洞場景

1   上傳漏洞危害介紹

上傳是Web中最多見的功能,若是上傳功能存在設計、編碼缺陷,就容易造成上傳漏洞,從而成爲致命的安全問題,攻擊者能夠經過上傳腳本木馬,實現查看/篡改/刪除源碼和任意塗鴉網頁,能夠鏈接和操做對應的數據庫,還能夠經過操做系統漏洞、配置缺陷、信息泄露進行提權,獲取操做系統提權,所以上傳功能是Web安全測試中重點關注的高風險模塊。php

2   上傳漏洞緣由分析

上傳漏洞造成的緣由,主要由如下幾種狀況:數據庫

2.1   無安全防禦措施,能夠直接上傳腳本

漏洞緣由:上傳功能未考慮安全問題,能夠任意上傳*.asp、*.aspx、*.php、*.jsp等可執行的腳本文件,不須要任意的繞過就能夠直接獲取Web權限。數組

緣由分析:上傳功能必定要考慮上傳的安全性,須要理解上傳漏洞的危害和風險。安全

2.2   採用黑名單擴展名,致使過濾不嚴格

漏洞緣由:上傳文件判斷文件擴展名時,採用了黑名單機制,只是禁止*.asp、*.aspx、*.php、*.jsp這種已知的可執行文件擴展名,但沒有限制*.cer、*.asa、*.PHP、*.JSP這類擴展名,從而致使過濾不嚴格,造成上傳漏洞。服務器

緣由分析:上傳文件判斷擴展名時,應該採用名單機制,例如業務須要上傳用戶頭像照片,那麼咱們能夠寫一個數組,只容許.jpg、.gif、.png、.bmp這些文件,當攻擊者上傳不在白名單中的文件擴展名時,應禁止上傳並提示擴展名不正確。jsp

2.3   僅經過客戶端判斷,存在繞過限制的漏洞

漏洞緣由:上傳文件判斷文件類型時,經過客戶端語言JavsScrip判斷文件大小、類型和擴展名,上傳白名單僅在JS中實現,而客戶端過濾很容易經過工具繞過限制,達到攻擊的目的。編輯器

緣由分析:能夠經過JS來判斷文件大小、類型和擴展名,這樣能夠提升效率和應用性,但還須要在服務器端進行判斷,服務器端判斷是指經過php、jsp腳本代碼來判斷。工具

2.4   上傳設計未考慮解析器的安全,致使發生解析漏洞

漏洞緣由:上傳設計時使用了白名單機制,但容許用戶控制上傳文件的文件名和保存文件時上級文件夾的名稱。測試

緣由分析:儘可能避免用戶能夠操控上傳到服務器的文件名稱、上級文件夾名稱,若是用戶能夠控制上級文件夾名稱,那麼須要對文件夾名稱進行過濾,禁止上傳攜帶特殊符號的文件目錄,防止攻擊者生成畸形的文件名而致使解析漏洞。例如:在IIS 6.0中,會將/hack.asp/test.jpg當成asp解析,所以必需要對test.jpg上級全部目錄進行過濾(若是用戶能夠新建文件夾等場景,表示用戶能夠控制hack.asp這個值),避免解析漏洞。編碼

2.5   Web容器配置漏洞,使用不安全HTTP方法實現上傳攻擊

漏洞緣由:Web容器支撐PUT、MOVE、COPY等不安全的HTTP方法,但權限配置存在問題,致使攻擊者能夠經過PUT、COPY、MOVE上傳腳本文件。

緣由分析:儘可能避免使用不安全的HTTP方法,若是是業務須要(例如REST接口),儘可能使用原生態的類和方法,避免二次開發、擴展過程當中出現上傳漏洞,嚴格上講這類不安全的HTTP方法,屬於配置漏洞,所以不在本次討論範圍內。

2.6   第三方編輯器漏洞,例如FCK、eWebeditor

漏洞緣由:不少產品使用了FCK、eWebeditor編輯器,方便富文件上傳和管理,而這些編輯器版本較多,不少低版本自己就存在上傳漏洞,所以也是上傳漏洞的重災區。

做者:jz

相關文章
相關標籤/搜索