archivos PHP con capacidad de navegación: ¿es esto una vulnerabilidad?

41

Tengo un amigo que tiene un sitio web desarrollado en PHP en el que podemos examinar todos sus archivos uno tras otro (por supuesto, no podemos leer el contenido de los archivos PHP).

¿Crees que esto es un agujero de seguridad? Si es así, ¿en qué sentido?

    
pregunta Anders 24.04.2014 - 11:20
fuente

6 respuestas

59

Lo que estás describiendo es una lista normal de directorios

Ensímismo,lalistadedirectoriosnoesunproblemadeseguridad.Silaseguridaddesusistemasevecomprometidadespuésdeaveriguarlaestructuradesusarchivosydirectorios,entoncesestáconfiandoenlaseguridadde a través de la oscuridad , que es malo. Ejemplos de esta mala práctica incluyen:

  • Usar nombres de directorios secretos para acceder a archivos confidenciales.
  • Limitar las funciones con privilegios de ejecución para acceder solo a sus URL en lugar de usar los permisos adecuados.
  • Dejar puertas / puertas traseras especiales para desarrolladores.

Sin embargo , como parte de una buena política de seguridad, después de implementar las medidas de seguridad adecuadas, es beneficioso ocultar las partes funcionales de su sistema. Cuanto menos muestres sobre tu sistema, menos información puede tener un atacante, lo que significa que estás dificultando su trabajo.

"Entonces, ¿qué debo hacer?" usted pregunta. Simple: deshabilite el listado de directorios en las configuraciones de su servidor web. En Apache, ve a tu httpd.conf y encuentra la línea donde dice

Options Includes Indexes

Elimine Indexes de la línea, luego reinicie su apache.

    
respondido por el Adi 24.04.2014 - 11:41
fuente
15

Para agregar a las respuestas de @adnan y @ william-calvin:

"Puede" ser un problema;)

  1. Revela nombres de archivos a los que solo pueden acceder, por ejemplo, los usuarios autenticados (piense en "change_settings.php" para los usuarios que han iniciado sesión). Ahora esto en sí mismo no es un problema. Si su sitio web está bien escrito, entonces realizará las comprobaciones de autorización adecuadas antes de cargar cada archivo. Desde otro punto de vista, un buen rastreador / araña "mapeará" todos los archivos que sean accesibles de todas formas.

  2. Si está desordenado con los archivos de copia de seguridad (piense: secret.bak o blah.php.old), otros podrán leer estos archivos. Este es también el caso de los archivos rápidos phpinfo () y db_dump.sql .

  3. Puede incluir archivos y tenerlos con una extensión que no sea php, como db.inc, dependiendo de la configuración de Apache, un atacante puede leer estos.

Entonces, como explican los demás, es una mala práctica. Da más información de la que debería.

    
respondido por el ndrix 24.04.2014 - 12:46
fuente
5

Sí. Esto es definitivamente un problema.

Si conozco su estructura, podré comprender mejor su sistema, lo que me facilita atacar su sistema.

Se recomienda desactivar la lista del directorio (consulte este tutorial si están en CPanel)

Cuanto menos saben los hackers, más difícil tienen que pensar ...

    
respondido por el William Calvin 24.04.2014 - 11:32
fuente
2

Sí, con respecto a las respuestas anteriores, no quiero compartir la misma información, sino el evento real que ocurrió en mi organización.

Teníamos un servidor web (en el que los clientes pueden ver la información de su cuenta de Internet, la capacidad de recarga, etc.).

El desarrollador cargó un BigDump para hacer una copia de seguridad de los datos del servidor triple A, mientras que un atacante revisó el directorio escuchando y encontró un archivo de volcado que contiene todas las tarjetas de rascar y la información de la cuenta. Esperamos que me informara y resolviera este problema. .

Como también se mencionó, confiando en la seguridad a través de la oscuridad, es mejor deshabilitar la escucha del directorio, hice una política para mi organización de que esta función debería estar deshabilitada en todos los servidores web.

    
respondido por el Akam 24.04.2014 - 18:52
fuente
2

Para agregar a la respuesta de Adnan, algunos marcos PHP, como PyroCMS, resuelven el problema en su pregunta usando una combinación de archivos .htaccess y teniendo un archivo de índice, llamado algo así como index.php , en todos y cada uno de los directorios.

Un archivo .htaccess es como una extensión de la configuración de su servidor en archivos como php.config , pero puede incluirse directamente en las carpetas del sitio, aunque en algunos casos es posible que no estén permitidos o que no funcionen debido al servidor. archivos. Además, puede usarlos incluso si no tiene acceso a los archivos del servidor, por ejemplo, si tiene un sitio en la nube en algún lugar. Se pueden usar para limitar el acceso a los archivos en el directorio en el que se encuentran o en las carpetas secundarias. PyroCMS y otros marcos a menudo tienen un archivo htaccess en cada carpeta, muchas de las cuales limitan o deniegan el acceso a la carpeta y todas sus subcarpetas.

index.php es una de las páginas predeterminadas que se muestran cuando la URL apunta a la carpeta, aunque puede configurar estas páginas predeterminadas en los archivos de su servidor. Por ejemplo, si el usuario navega a example.com/folder y no hay ninguno de estos archivos predeterminados en este directorio, la página mostrará lo que probablemente vea su amigo, que es probablemente la vista que muestra Adnan en su respuesta. Sin embargo, si hay un archivo index.php en esa carpeta, la página mostrará lo que está en <site folder>/folder/index.php . Los marcos PHP a menudo tienen un index.php en todas o casi todas las carpetas y subcarpetas para usted. Muchos de estos archivos tienen algo como:

<div>Forbidden!!!</div>
    <div>Please don't go here! It's very sensitive!</div>

Como estos archivos .htaccess y index.php ya están en todas estas carpetas, no tiene que hacerlo usted mismo, aunque puede eliminarlos si quiere o necesita que se ajuste a su sitio. Incluso si finalmente no usa estos marcos, descargar un par y ver lo que hacen puede ser útil para diseñar su sitio. Sin embargo, tenga cuidado si hace esto, ya que muchos de ellos son cientos de megabytes.

Por cierto, sí, es una mala práctica tener estos archivos navegables. El punto con esta respuesta es que hay herramientas que puedes usar para evitar que tengas que repetir el código repetitivo miles de veces, a veces literalmente, y al mismo tiempo, los temas de esta pregunta involucran el código repetitivo con el que estas herramientas pueden ayudar.

    
respondido por el trysis 24.04.2014 - 17:11
fuente
-1

Por cierto, no hay httpd.conf en Ubuntu (ahora mismo en 14.04; no lo busque, editará el archivo apache2.conf ).

Para guardar su sitio web basado en PHP desde los guiones de los niños, puede leer mi largo tutorial para reforzar WordPress (proporcioné un enlace para la protección de derechos de autor y probablemente sepa más puntos vulnerables desconocidos). WordPress es solo un ejemplo, en realidad el contenido es aplicable a cualquier PHP-MySQL o incluso a un sitio web impulsado por PHP.

En segundo lugar, no relacionado con la pregunta original; El kernel de Linux debe ser endurecido también. Puedes ver mi información: enlace

Normalmente, PHP no se abre en el navegador como un archivo de texto, pero muestra la ruta, el nombre y probablemente indica que el administrador del servidor no tiene mucha experiencia y lo hace más vulnerable.

No intente controlar desde el nivel de .htaccess , mantenga .htaccess lo más ligero posible. En realidad está en el directorio público ...

    
respondido por el Dr. Abhishek Ghosh 25.04.2014 - 16:02
fuente

Lea otras preguntas en las etiquetas