¿Necesita saber el nombre de archivo para realizar un recorrido del Directorio?

0

Si mi sitio web tiene una vulnerabilidad de recorrido de directorio (linux) y mis otras páginas php tienen nombres de archivos complicados (por ejemplo, efj93ehdsijgdij3g.php), ¿podría un atacante acceder a otros archivos? ¿O un atacante necesita estrictamente el nombre de archivo correcto para realizar con éxito un recorrido de directorio?

    
pregunta worldends 28.02.2016 - 20:11
fuente

2 respuestas

2

El recorrido del directorio es una vulnerabilidad bastante amplia que puede provocar una variedad de ataques, según el contexto.

Por sí solo, solo significa que un atacante proporciona un nombre de archivo o directorio, y puede atravesar archivos o directorios fuera del directorio esperado. Esto puede facilitar ataques como:

  • LFI
  • Lectura de archivos fuera del directorio deseado
  • Cargar archivos fuera del directorio deseado, posiblemente llevando a la ejecución del código (por ejemplo, si lo único que impide la ejecución del código es asegurar el directorio deseado)
  • mover archivos fuera del directorio deseado
  • Ver directorios fuera del directorio deseado, lo que puede ayudar a un atacante a recopilar información sobre el sistema de destino
  • etc

Darle a sus archivos nombres de archivos complicados solo podría ayudar en el caso de leer archivos fuera del directorio, y solo si no proporciona la posibilidad de listar archivos.

El cambio de nombre de tus archivos puede parecer una buena idea como defensa en profundidad (la seguridad por oscuridad nunca debería ser tu única línea de defensa), pero realmente no vale la pena, ya que existen mayores superficies de ataque que leer tus archivos PHP.

En el caso de LFI, un atacante aún puede leer los archivos del sistema que pueden tener graves consecuencias. Dependiendo de su configuración, pueden:

  • lea / etc / shadow, descifre las contraseñas y obtenga acceso al sistema
  • inyecte código en varios archivos de registro e inclúyalos, lo que lleva a la ejecución del código
  • inyecte el código en proc / self / environ e inclúyalo, lo que lleva a la ejecución del código
  • etc

Por lo tanto, cambiar el nombre de los archivos puede impedir que un atacante lea esos archivos específicos, pero en realidad no limita el daño de LFI. También conduce a una menor capacidad de mantenimiento, lo que hace que no valga la pena.

    
respondido por el tim 28.02.2016 - 22:37
fuente
1

Tener que saber el nombre del archivo depende del código vulnerable, a veces puede obtener listas de directorios. Sin embargo, hay muchos otros archivos que un atacante vería en lugar de sus archivos php, como /etc/shadow .

Si su recorrido de directorio se usa en una declaración include() , tiene una vulnerabilidad rfi o lfi y, nuevamente, hay objetivos más fáciles como configurar el usuario-agente a <?php passthru($_GET['c]); ?> y atravesar a /proc/self/environ o los registros de su servidor web. O cualquier otra ubicación donde el atacante pueda controlar el contenido escrito en su disco duro (archivos cargados, archivos temporales, archivos de sesión, archivos de base de datos, registros smtpd / sshd, etc.). Si un atacante tiene éxito con la explotación de lfi, la complejidad de su nombre de archivo ya no importa, ya que un atacante podría ejecutar comandos como ls para listar archivos.

Una buena manera de prevenir ataques cruzados es comparar los datos proporcionados por el usuario con una matriz de valores aceptables, o simplemente llamar a basename() en los datos proporcionados por el usuario antes del include() siempre que no haya un usuario (atacante ) Archivos controlados en el mismo directorio.

    
respondido por el wireghoul 28.02.2016 - 22:37
fuente

Lea otras preguntas en las etiquetas