martes, 19 de agosto de 2014

Jugando con las redirecciones

¡Saludos!

  Más allá del clásico uso para phising, las webs que permiten redireccionar hacia donde nosotros deseamos pueden ser aprovechadas en otros escenarios para nuestro beneficio.

  Cuando se protegen áreas de una web que requieren cierto privilegio para su visualización (áreas de miembros, zonas de administración, estadísticas, etc.) se suele utilizar una redirección a través de un código 3xx para evitar que un usuario sin dichos privilegios pueda acceder. Realizar esto con PHP, por ejemplo, es algo trivial. ¿Pero qué ocurre si no se implementa de la forma correcta? Veamos el siguiente ejemplo:

<?php
...
...
if ($_SESSION['log'] !== TRUE) {
header("Location: http://foo.es/login.php);
}
....
.....
?>
<h1>Texto que no deberías de poder ver porque no estás logueado</h1>

   En el ejemplo vemos como símplemente se utiliza la función header() para realizar la redirección pero no se corta el flujo de lo que se muestra después, por lo que si hacemos que se ignore la petición de redirección podremos ver esa web restringida.

   El bypass de esta medida se puede realizar fácilmente colocando un proxy en medio para que bloquee el response con el 302, o elimine el header "location". Otra opción mucho más rápida de implementar es utilizar algún add-on que bloquee las redirecciones cuando se navega, como "NoRedirect" de Firefox. Activando el add-on podremos acceder a las zonas restringidas sin estar logueado.


    Otra situación donde podemos abusar de una redirección es cuando ésta es realizada a través de JavaScript (usando document.location.href por ejemplo) y la dirección es pasada a través de una variable a la cual se le realiza un filtrado con htmlentities o funciones similares. De este tipo suelen ser aquellas webs que muestran un mensaje de "Serás redireccionado en X segundos" o te muestran una alerta de que estás abandonando el dominio.

  En estas situaciones estamos ante un XSS no-persistente, ya que podemos usar el viejo truco de "data:text/html;base64,AquiJavaScriptenBase64" para ejecutar javascript.  Como ejemplo:

<script language="JavaScript" type="text/javascript">
document.location.href = '<?php echo htmlentities($_GET['url']); ?>';
</script>



Byt3z!




5 0verl0ad Labs: Jugando con las redirecciones ¡Saludos!   Más allá del clásico uso para phising, las webs que permiten redireccionar hacia donde nosotros deseamos pueden ser aprovechad...
< >