Ataque transversal de ruta y prevención

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *