CVE-2019-0232 Tomcat远程代码执行漏洞
该漏洞只存在于Windows下安装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 的Tomcat,由于使用enableCmdLineArguments在Windows上运行时,远程执行代码漏洞(CVE-2019-0232)驻留在公共网关接口(CGI)Servlet中,java运行时环境(JRE)将命令行参数传递给Windows的方式存在缺陷导致。但是默认情况下禁用了CGI Servlet,并且在Tomcat 9.0.x中默认情况下禁用了其选项enableCmdLineArguments,因此远程代码执行漏洞被评为中危。
要想复现环境需要修改tomcat安装目录中conf目录下的web.xml,内容如下
还需要将servlet-mapping中的注释去掉,内容如下
servlet-mapping最后将conf文件夹下的context.xml中context元素添加设置privileged="true",内容如下
context.xml修改完成配置,然后在webapps下创建一个新的文件夹,并且在文件中新建一个WEB-INF文件夹,其中再创建一个cgi-bin目录,将xxx.bat文件写入到cgi-bin目录下,内容如下
xxx.bat上述内容完成后,进入Tomcat的bin目录下,运行startup.bat,访问http://127.0.0.1:8080/
tomcat 页面成功,尝试访问我们创建的xxx.bat文件
访问 bat证明访问成功,文件存在。
使用poc进行测试
http://127.0.0.1:8080/test/cgi-bin/test.bat?&C%3a%5cwindows%5csystem32%5cipconfig
必须使用URL编码进行访问
返回结果如下
执行结果
利用成功
也可以使用GitHub上的python脚本进行测试,需要修改url_dir为自己的cgi文件位置。
https://github.com/jas502n/CVE-2019-0232/blob/master/CVE-2019-0232.py