Hola buenas.
¿De que manera podría parchear un Remote File Disclosure?
Ejemplo código:
<?php
$filename = $_GET['filename'];
$fp = fopen($filename, 'r'); echo $doc;
?>
Con este tipo de fallo el atacante podría leer cualquier archivo de texto plano:
http://localhost/archivovulnerable.php?filename=/etc/group¿Qué formas habría de solucionar este fallo?
Salu2
Pues la solucion depende de lo que quieres hacer con tu script, por ejemplo:
Digamos que ese script lo quieres para leer un datos o varios datos dentro del mismo directorio donde trabaja el script con la finalidad de obtener informacion que has ido resguardando, entonces solo utilizas un
strchr(); para verificar la existencia de un caracter, de modo que evitas la existencia de carateres como '/'. Por otro lado si vas a leer archivos (sin saber el nombre) de un directorio en especifico, pues vuleves a utilizar
strchr() para verificar que exista el nombre del directorio dentro del valor $_GET[].
Todo seria en cuestion de: Que quieres que haga ese script ?....
bye bye
<?php
function seguridad_archivos( $archivo )
{
//aqui pondremos todas las comparaciones que debe pasar la variable
//strchr() es igual que stristr(), solo que stristr() ignora si son mayusculas o minusculas
//en el caso que leamos del directorio actual, sin movernos, asi que no debera existir un /
return 0; //no pasa
//esta seria en caso que deseamos leer de un directorio unicamente
//oviamente no utilizariamos el condicional anterior xD
else if( !stristr( $archivo, "carpeta/") ) return 0; //no paso
return 1; //si paso
}
if( seguridad_archivos($_GET['filename']) )
{
$filename = $_GET['filename'];
$fp = fopen($filename, 'r'); echo $doc;
}
else
echo "Anti-Hack Activado jejejej :P";
?>