Quando carico un file php (file.php) con il seguente contenuto sul server Apache
<?php
$file = $_GET['file'];
include ( $file);
?>
Sono in grado di leggere qualsiasi file di Apache utilizzando gli URL di sotto
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
Sono un utente Linux quindi conosco il percorso comune dei file, sono quasi gli stessi su tutti i server Linux.
Non ho il controllo sul codice che i miei sviluppatori stanno caricando. Il processo di revisione del codice è pieno di difetti e questo tipo di codice può essere facilmente caricato sul server. L'unica cosa che possiamo fare è vietarlo attraverso i file di configurazione.
Come posso rimuovere questa vulnerabilità da Apache in modo che nessuno possa leggere i file di sistema anche se file.php è presente in htdocs?