漏洞原理
Tomcat配置文件web.xml中,servlet配置了readonly=fasle時,會引發任意文件上傳漏洞。
readonly參數默認是true,即不允許delete和put操作,所以通過XMLHttpRequest對象的put或者delete方法訪問就會報告http 403錯誤。但很多時候為了支持REST服務,會設置該屬性為false。
復現環境
在ubuntu 16.04虛擬機中用vulhub靶場提供的docker容易來復現
jdk版本1.7
Tomcat版本8.5.19
復現過程
1. 進入vulhub目錄:tomcat/CVE-2017-12615
2.啟動docker容器,tomcat頁面正常訪問:
進入容器查看一下web.xml的readonly配置:
3. 抓包,嘗試上傳jsp木馬,沒成功,不能直接傳jsp文件
4.繞過以下,再次上傳(其他類型的文件也可以上傳的,傳jsp文件是方便執行jsp中的代碼):
5.進入docker容器內部查看上傳文件:
6.訪問該文件,執行成功:
防御實驗
將readonly參數改為false,在發一次PUT請求:
本文僅用於技術學習和交流,嚴禁用於非法用途,否則產生的一切后果自行承擔。