2 minuto(s) de lectura

Cuando se analiza la seguridad de una aplicación web, uno de los puntos más importantes a revisar es como funciona la autorizacion y el control de acceso. Esto es vital para detectar problemas de autorización y autenticación también llamados problemas de pérdida de control de acceso. Vulnerabilidad que encontramos en el número 5 del TOP 10 de OWASP. En esta entrada veremos como con Burp podemos realizar esta verificación de forma sencilla con la extensión Autorize.

Instalación

Para utilizar esta extensión deberemos tener descargado el standalone de Jython que podremos descargar de: http://www.jython.org/downloads.html

Una vez descargado vamos a Extender – Options y en Python Environment seleccionamos el fichero JAR descargado.

Tras esto vamos a la pestaña BApp Store, seleccionamos Autorize y clicamos en Install para instalar la extensión:

extensión autorize

Una vez realizada la instalación nos aparecerá una pestaña nueva llamada Autorize:

extensión autorize

Configuración

Para este tipo de pruebas necesitamos al menos dos usuarios. Si la aplicación tiene usuarios administradores y/o usuarios con más privilegios será interesante tener diferentes usuarios con diferentes permisos. Así podremos verificar que los usuarios con menos permisos no pueden acceder ni modificar la información de los usuarios con mayores privilegios.

Una vez tenemos los usuarios  debemos acceder a la aplicación con el perfil con menos privilegios. Después de acceder obtendremos una cookie de sesión. En la mayoría de los casos es trivial saber cuál es la cookie de sesión ya que se entrega justo después de introducir nuestros datos de acceso y suele tener un nombre como JSESSIONID (Java EE), PHPSESSID (PHP) o ASPSESSIONID (Microsoft ASP). Si la cookie no es ninguna de estas, lo que podemos hacer para verificar cuál es la cookie de sesión es realizar la misma petición eliminando de una en una las cookies, con esto podremos ver que al eliminar la cookie de sesión no veremos los mismos datos. Si eliminamos todas las cookies y seguimos viendo datos sensibles, posiblemente tenemos un problema de autenticación.

Una vez tenemos la cookie de sesión de un usuario, la configuramos en la extensión Autorize:

Adicionalmente podemos configurar en los apartados Enforcement Detector y Detector Unauthenticated los mensajes con los que responde el servidor si el usuario es incorrecto (Enforcement Detector) o el mensaje si no estas autenticado (Detector Unauthenticated). Por ejemplo:

Utilización

Una vez hemos configurado la extensión hacemos clic en el botón Autorize is off para que cambie a Autorize is on:

En este momento comenzamos a navegar por la aplicación con un usuario con más privilegios. Burp enviará dos peticiones por cada petición realizada, una con la cookie con menos privilegios y otra sin cookie. Con esto podremos comparar las respuestas de la web y ver si tenemos problemas de autorización y autenticación:

Esto lo podremos ver mediante los mensajes Enforced! y Bypassed! que muestra la extensión Autorize, las peticiones marcadas como Bypassed deberemos revisarlas para ver si contienen información sensible. De ser así, significará que un usuario con menos privilegios puede acceder a esta información. Incluso una persona sin tener una sesión podría acceder a esta información.

Un saludo!