安全漏洞問題5:上傳任意檔案
安全漏洞問題5:上傳任意檔案
1.1. 漏洞描述
上傳任意檔案漏洞是指使用者可以上傳所有檔案,程式沒有檢測上傳檔案大小、型別是否是符合期望,或僅僅在客戶端對上傳檔案大小、上傳檔案型別進行限制,未在伺服器端進行驗證。惡意使用者可以利用例如上傳一些惡意的程式,比如圖片木馬。
1.2. 漏洞危害
如果上傳檔案指令碼未對使用者所上傳檔案進行任何限制,或者上傳檔案檢測可以被繞過,則可能會對伺服器造成很大危害。惡意使用者可以通過上傳木馬檔案,獲取目標伺服器的控制許可權。
1.3. 解決方案
針對上傳任意檔案漏洞, 應採取如下措施進行防範:
對上傳檔案型別進行檢查
僅允許上傳特定的檔案型別,該檢查不能依據HTTP HEAD資訊,可以直接檢查上傳檔案的副檔名,如下示例:
//程式碼示例:限制上傳檔案為XLS
String xlsPath = props.getProperty(“xls”);
bis = new BufferedInputStream(file.getInputStream());
File upload = new File(xlsPath + “/” + fileName);
if ("".equals(fileName)) {
ActionMessages messages = new ActionMessages();
messages.add("file", new ActionMessage("檔名不能為空!",false));
saveErrors(request, messages);
return mapping.findForward("fetchxls");
}
String[] fArray = fileName.split("\.");
if (fArray.length == 1) {
ActionMessages messages = new ActionMessages();
messages.add("file", new ActionMessage("檔案格式無效!",false));
saveErrors(request, messages);
return mapping.findForward("fetchxls");
}
if (!"xls".equalsIgnoreCase(fArray[fArray.count()-1])) {
ActionMessages messages = new ActionMessages();
messages.add("file", new ActionMessage("檔案格式無效!",false));
saveErrors(request, messages);
return mapping.findForward("fetchxls");
}
if (file.getFileSize() == 0) {
ActionMessages messages = new ActionMessages();
messages.add("file", new ActionMessage("檔案長度為0,上傳失敗!",false));
saveErrors(request, messages);
return mapping.findForward("fetchxls");
}
bos = new BufferedOutputStream(new FileOutputStream(upload));
int available = bis.available();
限制上傳檔案的訪問許可權
在伺服器利用系統許可權限制上傳檔案和目錄的許可權,拒絕執行許可權
將上傳目錄從WEB空間移出,保證使用者無法直接從URL訪問到上傳檔案
相關文章
- 任意檔案上傳漏洞修復
- Web 安全漏洞之檔案上傳Web
- 上傳檔案超時問題
- 文字檔案上傳漏洞[任意.繞過.解析]
- fckeditor<=2.6.4任意檔案上傳漏洞
- PHP未明遠端任意檔案上傳漏洞(轉)PHP
- 檔案上傳需要注意的問題
- liunx下vsftpd上傳檔案問題FTP
- Html5 檔案上傳HTML
- html5檔案上傳HTML
- Struts2教程7:上傳任意多個檔案
- 上傳檔案專題
- 記一個 FormData 多檔案上傳問題ORM
- 請教一個檔案上傳的問題
- 關於檔案上傳的問題smartUpload
- 【檔案上傳繞過】路徑拼接問題導致上傳漏洞
- HTML5拖拽檔案上傳HTML
- 有關swoole+laravel 上傳檔案的問題Laravel
- php檔案上傳之多檔案上傳PHP
- PHP 上傳檔案找不到 tmp_name 臨時檔案的問題PHP
- 關於檔案上傳下載的編碼問題
- 用java+ftp實現檔案上傳的問題?JavaFTP
- [提問交流]【小白求助】onethink後臺檔案上傳問題
- 請問上傳的檔案如何傳送post
- 請教一個問題,關於上傳檔案和圖片的問題
- 單個檔案上傳和批量檔案上傳
- confluence上傳檔案附件預覽亂碼問題
- 上傳檔案時路徑總是C:\fakepath\的問題
- 請教在java application中檔案上傳的問題JavaAPP
- 診斷oracle clusterware問題,需要收集並上傳的檔案Oracle
- 檔案上傳
- SpringMVC 單檔案上傳與多檔案上傳SpringMVC
- 米安程式碼審計 06 PHPYUN V3.0 任意檔案上傳漏洞PHP
- Asp.Net 上傳大檔案專題(1)--概述:上傳大檔案的難點ASP.NET
- Java大檔案上傳、分片上傳、多檔案上傳、斷點續傳、上傳檔案minio、分片上傳minio等解決方案Java斷點
- 檔案上傳下載中的安全問題(上傳漏洞與目錄遍歷攻擊)
- 過濾器解決檔案上傳下載跨域問題過濾器跨域
- 處理檔案上傳時的訊息格式轉換問題