VULNERABILIDADES DE APLICACIONES WEB: PERMISOS INSEGUROS

25.01.2018 08:25
 
Otra vulnerabilidad relacionada con la Inclusión Local de Archivos (y no necesariamente sólo con la misma) es la de los Permisos Inseguros.
 
Supongamos que tenemos un directorio denominado "administrador" con un subdirectorio denominado "protegido". Dentro de "administrador" tenemos "ver_datos.php" y dentro de "protegido" tenemos un archivo .htaccess y el archivo "datos.txt":
 
/administrador/
/administrador/ver_datos.php
/administrador/protegido/
/administrador/protegido/.htaccess
/administrador/protegido/datos.txt
 
El archivo .htaccess es el siguiente:
 
AuthType Basic
AuthName "área restringida"
AuthUserFile /xampp/.htpasswd
require valid-user
 
Por su parte "ver_datos.php" es como sigue:
 
<?php
readfile('protegido/datos.txt');
?>
 
Si un usuario quiere ver "datos.txt" tipeando los siguiente el la barra de direcciones del navegador no podrá acceder al archivo sin una combinación de usuario/contraseña:
 
https://127.0.0.1/administrador/protegido/datos.txt
 
Sin embargo si tipea lo siguiente:
 
https://127.0.0.1/administrador/ver_datos.php
 
el contenido de "datos.txt" quedará expuesto. Las restricciones de .htaccess no se imponen a "ver_datos.php". Es muy importante tener claro este concepto, en caso contrario se podría estar exponiendo información sensible lo cual en algunos países es ilegal en sí mismo, además de constituir una vulnerabilidad. Hay muchos programadores que desconocen esta particularidad y sin embargo a los piratas informáticos no se les pasa por alto tan fácilmente.
 
El archivo "ver_datos.php" debería ser algo así:
 
<?php
$usuario = $_POST['usuario'];
$clave = $_POST['clave'];
if (($usuario == 'Juan') && ($clave == '12345')){
header('Location: ver_datos.php');
} else {
die;
}
?>
 
Hemos simplificado el archivo para facilitar su comprensión, obviamente el nombre de usuario y la clave deberían proceder de una base de datos y no estar incrustadas en "ver_datos.php", porque en caso contrario nuevamente estaríamos exponiendo información sensible, lo cual - insistimos - no sólo podría ser ilegal, sino que es una vulnerabilidad de proporciones.