CVE-2019-0232:Apache TomcatのRCE再現

-2019-0232 CVE:Apache TomcatのRCE再現

0X00の脆弱性プロファイル

CGIServletがコマンド影響を注射されて脆弱性は、道のWindowsプログラムでエラーに渡されたTomcatのCGIコマンドライン引数によるものです。

脆弱性は、Windowsプラットフォームに影響を与えて、CGIServletとenableCmdLineArgumentsパラメータを有効にする必要があり。だがて、CGIServletとenableCmdLineArgumentsは、パラメータはデフォルトで有効になっていません。

9.0.17にApache Tomcatの9.0.0.M1:脆弱性は、範囲に影響を与えます

                           Apache Tomcatの8.5.0 8.5.39へ

         Apache Tomcatの7.0.0 7.0.93へ

脆弱性0X01を構築するための環境

1.変数の設定:

まず、成功したスタートの変数の設定後に、JDKをインストールするファイルをダウンロードしてください。

win7のスタート→マイコンピュータ→右のプロパティ→システムの詳細設定→環境変数→[新規]→[システム変数を持つたとえば、

JDKをインストールしたパスのJAVA_HOME値をという名前の新しい変数変数変数

例:変数名:JAVA_HOME変数値:C:\プログラムファイル(x86の)\ Javaの\ jdk1.8.0_73

インストール・ファイルのパス、JDK、JREフォルダのJRE_HOME値という名前の変数を新しい変数

例:変数名JRE_HOME変数値:C:\プログラムファイル(x86の)\ Javaの\ jdk1.8.0_73 \ JRE

新しい変数のCLASSPATH変数が変数の値を命名;%JAVA_HOME%\ libに;%JAVA_HOME%\ libに\ tools.jarを(詩:ポイントの手前で)。

変数パスに新しい変数値;%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以上版本。

おすすめ

転載: www.cnblogs.com/L0ading/p/12312064.html