概要
TomCat RCE漏洞 CVE-2019-0232 :漏洞成因是CGIServlet.java类。
CGI介绍:
CGI(公共网关接口)定义了一种web服务器与外部内容生成程序交互的方式,这些程序通常被称为CGI程序或CGI脚本。
在Tomcat中,当您使用Tomcat作为HTTP服务器并需要CGI支持时,可以添加CGI支持。通常,在开发过程中,当您不想运行Apache httpd之类的web服务器时,可以这样做。Tomcat的CGI支持在很大程度上与Apache httpd兼容,但是有一些限制(例如,只有一个cgi-bin目录)。
CGI支持是使用Servlet类org . Apache . catalina . servlets . CGI servlet实现的,传统上,这个servlet被映射到URL模式“/cgi-bin/*”。
默认情况下,Tomcat中禁用CGI支持。
漏洞PayLoad
漏洞分析
漏洞核心是利用了Windows 系统在CreateProcess时会将字符串合并作为输入,程序启动后调用 GetCommandLine 获取参数,并调用 CommandLineToArgvW 传至 argv。当 CreateProcess 中的参数为 bat 文件或是 cmd 文件时,会调用 cmd.exe , 故最后会变成 cmd.exe /c “arg.bat & dir”,而Java的调用过程并没有做任何的转义,所以在Windows下会存在漏洞。
Runtime.getRuntime(),调用exec()