Cuando subo un archivo php (archivo.php) con el siguiente contenido en el servidor Apache
<?php
$file = $_GET['file'];
include ( $file);
?>
Puedo leer cualquier archivo de Apache utilizando las siguientes URL
http://domain.com/file.php?file=/etc/passwd
http://domain.com/file.php?file=/etc/httpd/conf/httpd.conf
http://domain.com/file.php?file=/etc/php.ini
http://domain.com/file.php?file=/etc/my.cnf
Soy un usuario de Linux, así que conozco la ruta común de los archivos, son casi iguales en todos los servidores Linux.
No tengo control sobre qué código están cargando mis desarrolladores. El proceso de revisión del código está lleno de fallas y este tipo de código se puede cargar fácilmente en el servidor. Lo único que podemos hacer para prohibirlo es a través de los archivos de configuración.
¿Cómo puedo eliminar esta vulnerabilidad de Apache para que nadie pueda leer los archivos del sistema incluso si file.php está en htdocs?