Experimente el impacto de la vulnerabilidad Path Traversal, culpable de los recientes problemas de Apache

Publicado el 18 de octubre de 2021
por Charlie Eriksen
ESTUDIO DE CASO

Experimente el impacto de la vulnerabilidad Path Traversal, culpable de los recientes problemas de Apache

Publicado el 18 de octubre de 2021
por Charlie Eriksen
Ver recurso
Ver recurso

A principios de octubre, Apache lanzó la versión 2.4.49 para corregir una vulnerabilidad de Path Traversal y Ejecución Remota de Código y posteriormente la 2.4.50 para solucionar el hecho de que la corrección de la 2.4.49 estaba incompleta. Quizás hayas visto en las redes sociales la importancia de actualizar a la última versión para evitar estos riesgos, dado que Apache alimenta el 25% de Internet según algunas estimaciones. Pero, ¿cuál es el problema? ¿Qué riesgo existe en este caso?

¿Por qué no lo pruebas tú mismo? 

Hemos creado una misión para demostrar los riesgos en un entorno real y la hemos hecho pública para que todos puedan probarla. En esta misión, le mostraremos cómo la vulnerabilidad Path Traversal puede afectar a su infraestructura y aplicaciones. Haga clic a continuación para entrar directamente, o continúe leyendo para aprender más sobre la vulnerabilidad en detalle.

Banner que dice que pruebe la Misión Apache CVE-2021-41773
Ir a la Misión pública


Acerca de la vulnerabilidad Path Traversal 

La vulnerabilidad se introdujo en la versión 2.4.49(debido a un cambio en la función de normalización de URL), donde se introdujo una nueva función de normalización de rutas. Desgraciadamente, no normalizó correctamente las rutas codificadas en la URL. Esto hace que sea posible realizar un ataque de path traversal si la siguiente configuración no está presente:

Denegar o permitir el acceso al sistema de archivos del directorio


Y si mod_cgi está habilitado, también puede ser aprovechado en una vulnerabilidad de Ejecución Remota de Código. Pero primero vamos a profundizar en la codificación de la URL para entender mejor lo que salió mal.

Codificación de la URL

En su forma más básica, la vulnerabilidad se produce debido a la falta de consideración de las URL con codificación de URL. La función de normalización de rutas introducida recientemente no manejaba completamente los casos en los que los puntos estaban codificados como URL. 

Recuerde que para llevar a cabo un ataque de travesía de ruta, necesitará atravesar con la secuencia ../. La función de normalización, sin embargo, es lo suficientemente inteligente como para eliminar eso. Entonces, ¿qué se puede hacer? Puede codificar la URL con un .(punto) hasta %2e, y utilizar una secuencia como .%2e/. Eso funcionaría en muchos casos contra Apache 2.4.40. Pero también puede ir un paso más allá y codificarla doblemente. La versión codificada de la URL de . %2e/ es .%252e/. Esto puede evitar el intento de normalización por parte de Apache.

Pero hay una trampa

Si alguien quisiera intentar explotar esta vulnerabilidad directamente en su navegador, no tendría éxito. Esto se debe a que los navegadores también intentan normalizar las URL que se envían a los servidores. Esto significa que incluso nuestra secuencia doblemente codificada será eliminada. También significa que no podemos usar simplemente un navegador para demostrar esto.

Puede utilizar cURL para demostrarlo utilizando la bandera --path-as-is , que impide que normalice la URL antes de enviarla:

Ruta de curl como es el código con el enlace

Prevención y mitigación

Para evitar completamente el problema, es importante mantenerse al día con los últimos parches de Apache. Específicamente, usted querrá actualizar a 2.4.51 como mínimo. Pero es una buena práctica para actualizar en un horario regular para mantenerse al día.

Para mitigar este problema si está ejecutando la versión 2.4.49, asegúrese de haber incluido lo siguiente en su configuración de Apache:

Etiquetas de código de directorio con allowoverride none y require all denied rules

Y para evitar la ejecución remota de código, desactive mod_cgi si no lo utiliza.

Experimente usted mismo el impacto

¿Está interesado en explorar exactamente lo que ocurrió y probarlo usted mismo? 


Ver recurso
Ver recurso

Autor

Charlie Eriksen

¿Quieres más?

Sumérjase en nuestras últimas ideas sobre codificación segura en el blog.

Nuestra amplia biblioteca de recursos tiene como objetivo potenciar el enfoque humano de la mejora de la codificación segura.

Ver blog
¿Quieres más?

Obtenga las últimas investigaciones sobre la seguridad impulsada por los desarrolladores

Nuestra amplia biblioteca de recursos está repleta de recursos útiles, desde libros blancos hasta seminarios web, que le ayudarán a iniciarse en la codificación segura orientada a los desarrolladores. Explórela ahora.

Centro de recursos

Experimente el impacto de la vulnerabilidad Path Traversal, culpable de los recientes problemas de Apache

Publicado el 18 de octubre de 2021
Por Charlie Eriksen

A principios de octubre, Apache lanzó la versión 2.4.49 para corregir una vulnerabilidad de Path Traversal y Ejecución Remota de Código y posteriormente la 2.4.50 para solucionar el hecho de que la corrección de la 2.4.49 estaba incompleta. Quizás hayas visto en las redes sociales la importancia de actualizar a la última versión para evitar estos riesgos, dado que Apache alimenta el 25% de Internet según algunas estimaciones. Pero, ¿cuál es el problema? ¿Qué riesgo existe en este caso?

¿Por qué no lo pruebas tú mismo? 

Hemos creado una misión para demostrar los riesgos en un entorno real y la hemos hecho pública para que todos puedan probarla. En esta misión, le mostraremos cómo la vulnerabilidad Path Traversal puede afectar a su infraestructura y aplicaciones. Haga clic a continuación para entrar directamente, o continúe leyendo para aprender más sobre la vulnerabilidad en detalle.

Banner que dice que pruebe la Misión Apache CVE-2021-41773
Ir a la Misión pública


Acerca de la vulnerabilidad Path Traversal 

La vulnerabilidad se introdujo en la versión 2.4.49(debido a un cambio en la función de normalización de URL), donde se introdujo una nueva función de normalización de rutas. Desgraciadamente, no normalizó correctamente las rutas codificadas en la URL. Esto hace que sea posible realizar un ataque de path traversal si la siguiente configuración no está presente:

Denegar o permitir el acceso al sistema de archivos del directorio


Y si mod_cgi está habilitado, también puede ser aprovechado en una vulnerabilidad de Ejecución Remota de Código. Pero primero vamos a profundizar en la codificación de la URL para entender mejor lo que salió mal.

Codificación de la URL

En su forma más básica, la vulnerabilidad se produce debido a la falta de consideración de las URL con codificación de URL. La función de normalización de rutas introducida recientemente no manejaba completamente los casos en los que los puntos estaban codificados como URL. 

Recuerde que para llevar a cabo un ataque de travesía de ruta, necesitará atravesar con la secuencia ../. La función de normalización, sin embargo, es lo suficientemente inteligente como para eliminar eso. Entonces, ¿qué se puede hacer? Puede codificar la URL con un .(punto) hasta %2e, y utilizar una secuencia como .%2e/. Eso funcionaría en muchos casos contra Apache 2.4.40. Pero también puede ir un paso más allá y codificarla doblemente. La versión codificada de la URL de . %2e/ es .%252e/. Esto puede evitar el intento de normalización por parte de Apache.

Pero hay una trampa

Si alguien quisiera intentar explotar esta vulnerabilidad directamente en su navegador, no tendría éxito. Esto se debe a que los navegadores también intentan normalizar las URL que se envían a los servidores. Esto significa que incluso nuestra secuencia doblemente codificada será eliminada. También significa que no podemos usar simplemente un navegador para demostrar esto.

Puede utilizar cURL para demostrarlo utilizando la bandera --path-as-is , que impide que normalice la URL antes de enviarla:

Ruta de curl como es el código con el enlace

Prevención y mitigación

Para evitar completamente el problema, es importante mantenerse al día con los últimos parches de Apache. Específicamente, usted querrá actualizar a 2.4.51 como mínimo. Pero es una buena práctica para actualizar en un horario regular para mantenerse al día.

Para mitigar este problema si está ejecutando la versión 2.4.49, asegúrese de haber incluido lo siguiente en su configuración de Apache:

Etiquetas de código de directorio con allowoverride none y require all denied rules

Y para evitar la ejecución remota de código, desactive mod_cgi si no lo utiliza.

Experimente usted mismo el impacto

¿Está interesado en explorar exactamente lo que ocurrió y probarlo usted mismo? 


Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Enviar
Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.