Un ataque transversal de ruta permite a los atacantes acceder a directorios a los que no deberían acceder, como archivos de configuración o cualquier otro archivo/directorio que pueda contener datos del servidor que no están destinados al público.
Mediante un ataque de recorrido de ruta (también conocido como recorrido de directorio), un atacante puede acceder a los datos almacenados fuera de la carpeta raíz web (normalmente /var/www/). Mediante la manipulación de variables que hacen referencia a archivos con secuencias “punto-punto-barra (../)” y sus variaciones o mediante el uso de rutas de archivo absolutas, es posible acceder a archivos y directorios arbitrarios almacenados en el sistema de archivos, incluido el código fuente o la configuración de la aplicación. y archivos críticos del sistema.
Supongamos que tenemos un sitio web ejecutándose en
http://www.mywebsite.com.
Supongamos también que el servidor web es vulnerable a un ataque de cruce de ruta. Esto permite que un atacante use secuencias de caracteres especiales, como ../, que en los directorios de Unix apunta a su directorio principal, para atravesar la string de directorios y acceder a archivos fuera de /var/www o archivos de configuración como este.
Un ejemplo típico de aplicación vulnerable en código PHP es:
<?php $template = 'red.php'; if (isset($_COOKIE['TEMPLATE'])) $template = $_COOKIE['TEMPLATE']; include ("/home/users/phpdemo/templates/" . $template); ?>
Usando la misma técnica ../, un atacante puede escapar del directorio que contiene los archivos PDF y acceder a cualquier cosa que desee en el sistema.
http://www.mywebsite.com/?template= ../../../../../../../../../etc/passwd
Prevención
Un posible algoritmo para evitar el cruce de directorios sería:
- Dar los permisos apropiados a directorios y archivos. Un archivo PHP generalmente se ejecuta como usuario de www-data en Linux. No debemos permitir que este usuario acceda a los archivos del sistema. Pero esto no impide que este usuario acceda a los archivos de configuración específicos de la aplicación web.
- Procese las requests de URI que no den como resultado una solicitud de archivo, por ejemplo, ejecutar un gancho en el código de usuario, antes de continuar a continuación.
- Cuando se va a realizar una solicitud de URI para un archivo/directorio, cree una ruta completa al archivo/directorio, si existe, y normalice todos los caracteres (p. ej., %20 convertido a espacios).
- Se supone que se conoce una ruta ‘Raíz del documento’ completamente calificada y normalizada, y esta string tiene una longitud N. Suponga que no se puede servir ningún archivo fuera de este directorio.
- Asegúrese de que los primeros N caracteres de la ruta completa al archivo solicitado sean exactamente iguales a la ‘Raíz del documento’.
- El uso de una extensión de archivo predefinida codificada como sufijo de la ruta no limita el alcance del ataque a los archivos de esa extensión de archivo.
Fuentes
https://en.wikipedia.org/wiki/Directory_traversal_attack
http://projects.webappsec.org/w/page/13246952/Path%20Traversal
https://www.owasp.org/index.php/Path_Traversal
Este artículo es una contribución de Akash Sharan . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA