CVE-2019-0232:Apache Tomcat RCE復現


CVE-2019-0232:Apache Tomcat RCE復現

0X00漏洞簡介

該漏洞是由於Tomcat CGI將命令行參數傳遞給Windows程序的方式存在錯誤,使得CGIServlet被命令注入影響。

該漏洞只影響Windows平台,要求啟用了CGIServlet和enableCmdLineArguments參數。但是CGIServlet和enableCmdLineArguments參數默認情況下都不啟用。

漏洞影響范圍:  Apache Tomcat 9.0.0.M1 to 9.0.17

                           Apache Tomcat 8.5.0 to 8.5.39

         Apache Tomcat 7.0.0 to 7.0.93

0X01漏洞環境搭建

1.進行變量配置:

首先下載jdk文件安裝,成功后開始變量配置。

以win7為例開始→我的電腦→右鍵屬性→高級系統設置→環境變量→系統變量→新建

新建變量名為JAVA_HOME的變量變量值為你安裝jdk的路徑

例:變量名:JAVA_HOME變量值:C:\Program Files (x86)\Java\jdk1.8.0_73

新建變量名為JRE_HOME的變量變量值為你安裝jdk文件夾中jre文件夾的路徑

例:變量名JRE_HOME變量值: C:\Program Files (x86)\Java\jdk1.8.0_73\jre

新建變量名為CLASSPATH的變量變量值為.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(ps:前面有個點)

在變量path新增變量值為;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(ps:前面有;)

配好變量后打開cmd命令框輸入java –version出現java版本號等信息則說明變量安裝成功。

 

2.將你的tomcat文件解壓到你要安裝的文件夾,進入文件夾中的bin文件夾,使用cmd命令執行startup.bat文件,出現加載界面,待加載完成后在瀏覽器訪問http://localhost:8080界面訪問成功則說明tomcat安裝成功。

https://archive.apache.org/dist/tomcat/ 該鏈接為tomcat各個版本下載鏈接

3.修改配置文件

Tomcat的CGI_Servlet組件默認是關閉的,在 conf/web.xml 中找到注釋的CGIServlet部分,去掉注釋,並配置enableCmdLineArguments和executable(需要取消掉注釋的一共是倆部分)

(ps:下方紅框內的內容需要手打,原文件本來沒有這個參數,9.0版本默認關閉)

接着修改conf/context.xml中的<Context>添加privileged="true"語句

然后在C:\Users\lenovo\Desktop\apache-tomcat-9.0.13\apache-tomcat-9.0.13

\webapps\ROOT\WEB-INF下創建一個cgi-bin文件夾,並在文件夾內創建一個bat文件可以什么都不寫或者寫一些bat語句。

到此所有的環境准備完成。

4.重啟tomcat服務(確保配置生效)

5.利用payload為:

http://localhost:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Ccalc.exe

該payload為打開計算器

訪問之后成功打開計算器

0X02漏洞原理

 

漏洞相關的代碼在 tomcat\java\org\apache\catalina\servlets\CGIServlet.java 中,CGIServlet提供了一個cgi的調用接口,在啟用 enableCmdLineArguments 參數時,會根據RFC 3875來從Url參數中生成命令行參數,並把參數傳遞至Java的 Runtime 執行。 這個漏洞是因為 Runtime.getRuntime().exec 在Windows中和Linux中底層實現不同導致的。

但是在tomcat9.0.13中已經嚴格限制了有效字符

0X03漏洞修復

因為在9.版本以上CGIServlet和enableCmdLineArguments參數默認情況下都不啟用

所以影響不是很大。

開發者在URLDecoder.decode解碼后增加一個正則表達式驗證,毋庸置疑,目的肯定是檢測url解碼后的字符串輸入的合法性。

因此最有效的修復方式是:

  1. 禁用enableCmdLineArguments參數。
  2. 在conf/web.xml中覆寫采用更嚴格的參數合法性檢驗規則。
  3. 升級tomcat到9.0.17以上版本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM