Tomcat put文件上傳漏洞(CVE-2017-12615)
漏洞描述:
當Tomcat運行在Windows操作系統上,且啟用了HTTP PUT請求方法(將 readonly 初始化參數由默認值設置為 false),攻擊者將有可能可通過精心構造的攻擊請求上傳任意文件,包括JSP類型的木馬。
影響范圍:
Apache Tomcat 7.0.0 - 7.0.81
環境准備:
虛擬機: VMware

操作系統: Windows7

java環境(jdk 1.7.0-ea)

Tomcat版本(7.0.65)

漏洞復現
修改web.xml文件, 開啟http的put方法(文件路徑: tomcat\conf\web.xml):

修改完,重新啟動tomcat,訪問8080端口

用burp抓包, 攔截將GET改為PUT方法,嘗試直接上傳test.jsp文件:

上傳失敗返回404
原因: Tomcat在某種程度上檢查了文件后綴(無法直接編寫jsp)
利用文件上傳繞過方式進行繞過
方式一: 利用Windows文件流(::DATA)繞過

返回409
響應狀態碼 409 Conflict 表示請求與服務器端目標資源的當前狀態相沖突。
沖突最有可能發生在對 PUT 請求的響應中。例如,當上傳文件的版本比服務器上已存在的要舊,從而導致版本沖突的時候,那么就有可能收到狀態碼為 409 的響應。
願因: 這兒應該是版本沖突(猜測), 這個方式應該是可行的,參考時以實踐結果為標准
方式二: 直接在上傳文件后綴名后加/繞過(Tomcat存在去掉最后/的特性,此方法影響所有的Apache Tomcat 版本)

返回201, 成功創建文件,訪問文件,成功訪問(這里可上傳一句話木馬)

方式三: 在上傳文件后綴名后加上%20繞過

修復方案:
1.配置readonly為true(默認為true)
2.根據官方補丁升級最新版本
