Introducción

En este post veremos cómo explotar y solucionar una vulnerabilidad sutil y, a menudo pasada por alto relacionada con la autenticación de una aplicación web. La siguiente prueba de concepto la realizaremos en una web real. ¡Vamos a ello!

Para comenzar trataremos de acceder al siguiente panel de administración: https://illegal.team/admin/. Al intentarlo podemos apreciar que la página web realiza una redirección 302 a https://illegal.team/panel para evitar que usuarios accedan sin permiso y que se les obligue a iniciar sesión.

Hasta ahora todo parece perfecto, pero la realidad es que un atacante podría parar cualquier redirección 302 y si la aplicación web no posee una función que finalice la ejecución del código después de la redirección tendremos una vulnerabilidad que nos permitirá seguir cargando todo el resto del contenido de la página.

Explotación

Vamos a ver dos maneras diferentes para explotar esta vulnerabilidad:

Mediante Burp Proxy

En este caso interceptamos la petición al tratar de acceder a https://illegal.team/admin, solicitamos a Burp Suite que intercepte la respuesta de la petición y modificamos «302 Found» por «200 OK»:

Mediante el add-on NoRedirect para Mozilla Firefox

En este ejemplo simplemente añadimos un filtro en NoRedirect para evitar ser redireccionados a https://illegal.team/:

Reparación de la vulnerabilidad

El código vulnerable es el siguiente:

if ($adminlvl == 0) {
  header('Location: /panel');
}

Si nos fijamos después de la función header() no tenemos nada que finalice la ejecución del código, para solucionar este problema es tan sencillo como agregar en la siguiente línea una función exit; de la siguiente manera:

if ($adminlvl == 0) {
  header('Location: /panel');
  exit;
}

Una vez modificado el código este es el resultado al intentar explotar la vulnerabilidad nuevamente:

¡Y listo, hemos parcheado la vulnerabilidad con éxito!

¿Me ayudas a compartirlo?
Última modificación: 3 mayo 2019

Autor

Comentarios

Comenta o responde a los comentarios

Tu dirección de correo no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.