Apache Tomcat es un contenedor de servelts utilizado como implementación
de referencia de las tecnologías de servlets Java y JSP (JavaServer
Pages). Se ha descubierto la existencia de un problema de seguridad que
puede ser utilizado para visualizar archivos teóricamente restringidos o
el código fuente de las páginas JSP.
Tomcat puede funcionar como servidor web independiente o bien integrado
dentro de otros servidores web como el propio Apache, Netscape o incluso
IIS. Existen actualmente varias ramas de desarrollo, siendo la versión
3.3.x la que se aconseja utilizar en entornos de producción, al ser la
más estable.
Se ha descubierto la existencia de dos vulnerabilidades en las versiones
anteriores a la 3.3.1 que pueden ser utilizadas por un atacante remoto
para visualizar el contenido de directorios (independientemente de la
existencia de un archivo índice) así como la visualización del contenido
de archivos y directorios cuyo acceso en teoría está restringido.
También puede utilizarse la vulnerabilidad para obtener el código fuente
de los archivos JSP.
La vulnerabilidad radica en las comprobaciones que realiza Tomcat en las
peticiones HTTP para determinar la posible existencia de caracteres
nulos o barras invertidas (\), lo que puede ser aprovechado por el
atacante para saltarse los mecanismos de restricción de acceso y la
protección del código fuente de los archivos JSP.
Una forma fácil de verificar si un servidor es vulnerable consiste en
ejecutar esta orden, utilizando perl y netcat:
$ perl -e ‘print «GET /\x00.jsp HTTP/1.0\r\n\r\n»;’ | nc servidor_web 8080
Si el servidor Tomcat es vulnerable, como resultado de esta petición
obtendremos un listado de todos los archivos existentes en el directorio
raíz del servidor (independientemente de la existencia de un archivo
índice en dicho directorio).
El acceso a los archivos restringidos puede verificarse mediante:
$ perl -e ‘print «GET /admin/WEB-INF\\classes/ContextAdmin.java\x00.jsp
HTTP/1.0\r\n\r\n»;’ | nc servidor_web 8080
(escribir la orden en una única línea).
Como respuesta a esta petición, el servidor web devolverá el contenido
del archivo ContextAdmin.java
En lo que se refieren a la obtención del código fuente de los archivos
JSP:
$ perl -e ‘print «GET /examples/jsp/cal/cal1.jsp\x00.html
HTTP/1.0\r\n\r\n»;’ |
nc servidor_web 8080
(escribir la orden en una única línea).
visualiza el código fuente del archivo cal1.jsp, uno de los ejemplos
incluidos en la distribución de Tomcat.
Como puede observarse con los ejemplos incluidos, es realmente una tarea
trivial aprovecharse de esta vulnerabilidad. Por tanto, conviene
actualizar lo antes posible cualquier versión anterior de Tomcat 3.3.x a
la nueva versión 3.3.1a.
xavi@hispasec.com
Deja una respuesta