VULNERABILIDADES DE APLICACIONES WEB: EJECUCIÓN DESPUÉS DE UNA REDIRECCIÓN

01.01.2018 23:11
Esta vulnerabilidad y el ataque asociado a ella son más conocidos por su nombre en inglés: Execution After Redirect. Resultan de un error de comprensión por parte del desarrollador de la semántica de la redirección. Los programadores suelen asumir que la aplicación web se detendrá después de llamar a una función que realiza una redirección. Ciertos entornos de programación, sin embargo, no detienen la ejecución en una redireccionamiento y ejecutan todo el código que sigue a la redirección.
 
Veamos un ejemplo:
 
<?php
header('Location: http://geoestrategia.webnode.es');
//
$a=fopen('evidencia.txt', 'w');
fwrite($a,headers_sent());
fclose($a);
?>
 
Si el lector ejecuta el programa será redirigido a nuestra página web pero a la vez podrá ver que, en el directorio donde se encuentra el script, será creado el archivo evidencia.txt, prueba de que el código siguió ejecutándose.
 
Una forma muy simple de demostrar que la vulnerabilidad puede ser explotada es usar JavaScript para la redirección:
 
<?php
if (!$clave_correcta) {
    print "<script>RubicusFrontendIns.location = 'http://geoestrategia.webnode.es';</script>\n\n";
}
?>
<h1>Un intruso no deberia poder llegar hasta aca</h1>
<a href="http://geoestrategia.webnode.es/news/vulnerabilidades-de-aplicaciones-web-inyeccion-html/">Informacion exclusiva</a>
 
Si se desabilita la ejecución de JavaScript en el navegador y dado que el código continuará ejecutándose se tendrá acceso a un área restringida.
 
Para prevenir este ataque hay que asegurarse de que el código no continuará ejecutándose después de un redireccionamiento. En PHP en muchos casos esto se puede lograr con la función die(). A los programadores les recomendamos desarrollar siempre código simple. La innecesaria complejidad del código es el origen de muchos errores y vulnerabilidades.