1. 程式人生 > 其它 >Tomcat PUT方法任意寫檔案漏洞(CVE-2017-12615)

Tomcat PUT方法任意寫檔案漏洞(CVE-2017-12615)

Tomcat版本:8.5.19

環境搭建

docker-compose build
docker-compose up -d

執行完成後訪問 http://your-ip:8080 即可看到Tomcat的Example頁面。

漏洞描述

當 Tomcat執行在Windows作業系統時,且啟用了HTTP PUT請求方法(例如,將 readonly 初始化引數由預設值設定為 false),攻擊者將有可能可通過精心構造的攻擊請求資料包向伺服器上傳包含任意程式碼的 JSP 檔案,JSP檔案中的惡意程式碼將能被伺服器執行。導致伺服器上的資料洩露或獲取伺服器許可權。

漏洞原理

當在Tomcat的conf(配置目錄下)/web.xml配置檔案中新增readonly設定為false時,將導致該漏洞產生,(需要允許put請求)
漏洞本質Tomcat配置了可寫(readonly=false),導致我們可以往伺服器寫檔案:

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

雖然Tomcat對檔案字尾有一定檢測(不能直接寫jsp),但我們使用一些檔案系統的特性(如Linux下可用/)來繞過了限制。

漏洞復現

支援三種上傳繞過方式 預設使用put 加檔名是失敗的 需要繞過

PUT /xxx.jsp%20
PUT /xxx.jsp::$DATA
PUT /xxx.jsp/

冰蠍連線成功

修復

設定readonly為true

本文來自部落格園,作者:oldliutou,轉載請註明原文連結:https://www.cnblogs.com/oldliutou/p/15759868.html