1.1 漏洞描述
上傳漏洞這個顧名思義,就是攻擊者通過上傳木馬文件,直接得到WEBSHELL,危害等級超級高,現在的入侵中上傳漏洞也是常見的漏洞。
導致該漏洞的原因在於代碼作者沒有對訪客提交的數據進行檢驗或者過濾不嚴,可以直接提交修改過的數據繞過擴展名的檢驗。
1.2 漏洞危害
1)可以得到WEBSHELL
2)上傳木馬文件,可以導致系統癱瘓
1.3 漏洞演示
我們來看看下面這段文件上傳代碼,使用的是common-fileupload.jar和common-io.jar UploadServlet.java訪問路徑/UploadServlet
/**
* 文件上傳
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
String root = request.getServletContext().getRealPath("/upload");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> list = upload.parseRequest(request);
for(FileItem it:list){
//如果是file文件類型
if(!it.isFormField()){
it.write(new File(root+"/"+it.getName()));
response.getWriter().write("success");
}
}
} catch (Exception e) {
try {
response.getWriter().write("exception");
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
前端index.jsp有一個上傳文件的表單
<form action="/load/UploadServlet" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="submit"/>
</form>
我們將項目發布到tomcat並且訪問http://localhost:8080/load/
選擇要上傳的文件提交表單.文件上傳也成功,在upload目錄下也有我們所上傳的文件. (如果是你一個剛畢業剛入行的新人,你可能看不出任何問題),可能很多老鳥大神都知道這個上傳功能存在什么問題,要罵我sb! 對沒錯,這個功能還有一個最大的問題就是沒有對上傳的文件格式做限制,如果我這里實現寫好了一個腳本a.jsp代碼如下
<%@page import="java.io.File"%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%
String root = request.getServletContext().getRealPath("");
out.write("系統部署絕對路徑:"+root);
File file = new File(root+"/index.jsp");
file.delete();
%>
上傳完畢,我們在訪問localhost:8080/load/upload/a.jsp,然后你在返回你就會發現一件恐怖的事情,這里不限於做刪除操作,還可以自定義主頁,看你自己怎么寫了! 所以說我們在做上傳的時候必須要對上傳的文件格式做處理,在上傳的時候加入一句判斷語句(當然只判斷后綴,還可能存在一些問題,最好在加上判斷文件前4個字節一起判斷(不同文件類型前4字節不同),這樣就能很好的避免上述問題!
1.4 修復方案
1)對文件格式限制,只允許某些格式上傳
2)對文件格式進行校驗,前端跟服務器都要進行校驗(前端校驗擴展名,服務器校驗擴展名、Content_Type等)
3)將上傳目錄防止到項目工程目錄之外,當做靜態資源文件路徑,並且對文件的權限進行設定,禁止文件下的執行權限。
1.5 相關參考
http://blog.csdn.net/worn_xiao/article/details/52357167
http://www.ituring.com.cn/article/177592
http://sec.chinabyte.com/352/13843352.shtml
http://www.2cto.com/article/201602/490414.html
---------------------
作者:TaneRoom
來源:CSDN
原文:https://blog.csdn.net/tanzhen1991910/article/details/53260446?utm_source=copy
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!