VULNERABILIDADES DE APLICACIONES WEB: FUNCIONALIDADES OLVIDADAS Y FUNCIONALIDADES OCULTAS

12.01.2018 09:19
En el presente capítulo nuevamente alteraremos un poco la taxonomía clásica de las vulnerabilidades de las aplicaciones web, simplemente para fusionar dos en una.
 
Supongamos que tenemos el archivo adelante.html con el siguiente código:
 
<html>
<body>
<h1>Bienvenido</h1>
<form action="atras.php" method="get"><br>
<input type="text" name="usuario"><br>
<input type="password" name="clave"><br>
<input type="submit"><br>
</form>
</body>
</html>
 
siendo atras.php:
 
<?php
error_reporting(0);
$debugger = $_GET['debugger'];
if (isset($debugger)) { 
    header("Location:debugger.php");
    exit;
} elseif (($_GET['usuario'] == "Juan") && ($_GET['clave'] == "clave12345")) {
    echo "Bienvenido a nuestro sitio";
} else {
    header("Location:principal.htm");
}
/* ¡Cuidado, el código fue simplificado para facilitar su comprensión. No use combinaciones usuario/contraseña incrustadas en el programa, mucho menos en texto plano! */
?>
 
y debugger.php:
 
<?php
echo "Bienvenido al debugger";
$archivo = $_GET['archivo'];
echo file_get_contents($archivo);
?>
 
Vemos que por olvido o intencionalmente el programador dejó en la aplicación una porción de código por medio de la cual puede acceder a una página desde cual puede ver el contenido de diferentes archivos sin necesidad de autenticarse:
 
https://127.0.0.1/codigo-olvidado/atras.php?debugger=1
 
Si un usuario malicioso la encuentra y sabe explotarla tendrá una especie de puerta trasera que le permitirá planear ataques con mayor facilidad.
 
Las funcionalidades olvidadas (a menudo llamadas "sobrantes") u ocultas pueden tener un matiz totalmente diferente a la del ejemplo presentado arriba. Pueden contener una sorpresa del estilo "huevo de Pascua", un juego o código lisa y llanamente malicioso. Sean maliciosas o no y por razones que exceden el alcance de este artículo, las mismas constituyen un problema de seguridad.