tomcat7.x遠程命令執行(CVE-2017-12615)漏洞漏洞復現
一、漏洞前言
2017年9月19日,Apache Tomcat官方確認並修復了兩個高危漏洞,漏洞CVE編號:CVE-2017-12615和CVE-2017-12616,該漏洞受影響版本為7.0-7.80之間,在一定條件下,攻擊者可以利用這兩個漏洞,獲取用戶服務器上 JSP 文件的源代碼,或是通過精心構造的攻擊請求,向用戶服務器上傳惡意JSP文件,通過上傳的 JSP 文件 ,可在用戶服務器上執行任意代碼,從而導致數據泄露或獲取服務器權限,存在高安全風險
二、漏洞名稱
CVE-2017-12615-遠程代碼執行漏洞
三、危害等級:
高危
四、漏洞描述:
CVE-2017-12616:信息泄露漏洞
當 Tomcat 中使用了 VirtualDirContext 時,攻擊者將能通過發送精心構造的惡意請求,繞過設置的相關安全限制,或是獲取到由 VirtualDirContext 提供支持資源的 JSP 源代碼。
CVE-2017-12615:遠程代碼執行漏洞
當 Tomcat 運行在 Windows 主機上,且啟用了 HTTP PUT 請求方法(例如,將 readonly 初始化參數由默認值設置為 false),攻擊者將有可能可通過精心構造的攻擊請求向服務器上傳包含任意代碼的 JSP 文件。之后,JSP 文件中的代碼將能被服務器執行。
通過以上兩個漏洞可在用戶服務器上執行任意代碼,從而導致數據泄露或獲取服務器權限,存在高安全風險。
五、漏洞利用條件和方式:
CVE-2017-12615漏洞利用需要在Windows環境,且需要將 readonly 初始化參數由默認值設置為 false,經過實際測試,Tomcat 7.x版本內web.xml配置文件內默認配置無readonly參數,需要手工添加,默認配置條件下不受此漏洞影響。
CVE-2017-12616漏洞需要在server.xml文件配置參數,經過實際測試,Tomcat 7.x版本內默認配置無VirtualDirContext參數,需要手工添加,默認配置條件下不受此漏洞影響。
六、漏洞影響范圍:
CVE-2017-12616影響范圍:Apache Tomcat 7.0.0 - 7.0.80
CVE-2017-12615影響范圍: Apache Tomcat 7.0.0 - 7.0.7
七、漏洞復現
姿勢一:python腳本的復現
CVE-2017-12615漏洞復現:
1.測試環境為tomcat7.0.70
2.需要手動配置web.xml,開啟http的put方法:
添加如下配置:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
3.通過CVE-2017-12615.py即可上傳shell:
4.遠程即可訪問shell:
注意:其利用腳本已上傳到我的github中,https://raw.githubusercontent.com/backlion/demo/master/CVE-2017-12615.py
姿勢二:利用文件名后綴加::$DATA繞過上傳
通過burpsuit抓包,上傳攔截get改成PUT方法,然后上傳:
姿勢三:利用在上傳文件名后綴名后加/可繞過上傳
姿勢四:通過在上傳文件后綴名加上%20可繞過
姿勢五:通過在上傳文件名后綴加上.可繞過上傳
八、漏洞修復建議
根據業務評估配置readonly和VirtualDirContext值為Ture或注釋參數,臨時規避安全風險;
官方已經發布Apache Tomcat 7.0.81 版本修復了兩個漏洞,建議升級到最新版本。