Tutorial de Burp Suite III – Interceptando peticiones
En la primera entrada aprendimos qué es Burp Suite. En la segunda aprendimos cuáles son las funcionalidades con las que cuenta, y cómo configurarlo todo para su uso. Ahora que ya podemos comenzar a usar la herramienta, vamos a empezar con la tercera entrega del tutorial de Burp Suite. En esta tercera entrega vamos a aprender a interceptar peticiones haciendo uso de la funcionalidad principal: el proxy.
Índice de contenidos
Proxy
Como ya he mencionado otras veces, el proxy es el componente principal de Burp Suite. Es la base de prácticamente todo lo que podemos hacer con esta herramienta. El proxy nos sirve para interceptar el tráfico entre nuestro navegador y el servidor que aloja la aplicación web. Una vez interceptada una petición a través del proxy de Burp Suite, podemos hacer con ella infinidad de cosas. Desde estudiar el contenido de la petición (cabeceras, cuerpo del mensaje…) hasta modificar dicho contenido antes de permitir que siga su camino hasta el servidor o realizar peticiones recursivas cambiando ciertas variables automáticamente.
La pestaña correspondiente al proxy de Burp Suite cuenta con varias subpestañas:
Intercept
Es la subpestaña encargada de interceptar y mostrar peticiones y respuestas que resultan de la comunicación con la página. Cuenta con cuatro botones que son los encargados de controlar el proxy de Burp Suite:
-
Intercept is on/Intercept is off: Nos permite iniciar/detener la intercepción.
-
Forward: Permite a la petición interceptada continuar su curso hacia el servidor de destino.
-
Drop: Descarta la petición interceptada.
-
Action: Despliega un conjunto de acciones a realizar sobre la petición interceptada como, por ejemplo, enviar la petición interceptada a alguno de los demás componentes de Burp Suite.
También nos permite editar el contenido de las peticiones y respuestas.
Interceptar peticiones con Burp Suite
Llegados a este punto, podemos hacer nuestra primera prueba. Vamos a interceptar nuestra primera petición. Para ello, debemos de asegurarnos de que el botón «Intercept is on/Intercept is off» esté en «Intercept is on».
Si usáis Burp Suite con una sola pantalla, mi recomendación es dividirla de forma que podáis ver al mismo tiempo el explorador de Internet y el panel de Burp Suite, tal y como se ve en las capturas del tutorial. De esta forma, podréis ver lo que ocurre en el panel en todo momento al tiempo que realizáis las acciones pertinentes en la aplicación web que estáis auditando.
Una vez tenemos activo el Intercept, el proxy comenzará a capturar peticiones. De hecho, posiblemente ya tengáis alguna petición interceptada sin haber tocado nada en el explorador. Esto puede ser por algún intento de comunicación subyacente del explorador, del que normalmente no somos conscientes. Si ese fuera el caso, podéis desactivar de nuevo el interceptor o pulsar en «Drop» o en «Forward» repetidamente hasta que la ventana con los datos de la petición quede limpia de nuevo.
Con la ventana de datos de petición en blanco y el interceptor activo navegamos por la web a auditar. Si ya la tenéis abierta, basta con actualizar la página y ver los resultados en el panel de Burp Suite.
Al ser la petición interceptada, la aplicación quedará cargando hasta que hagáis click en «Forward» y la dejéis continuar su camino hacia el servidor. Al hacerlo, veremos que la ventana con los datos de la petición vuelve a quedar en blanco. Antes de darle a «Forward», cuando la petición está aún capturada y la aplicación a la espera, es un buen momento para analizar los datos de la petición y sacar algo de información sobre la aplicación que estamos auditando. Aunque también podemos hacerlo más tarde. Accediendo a la petición desde la subpestaña «HTTP history», que veremos más adelante, podemos ver todas las peticiones que se han interceptado.
Con esto ya hemos interceptado nuestra primera petición.
Puede que al navegar por la aplicación web que estéis auditando os salte un aviso de que la página no es segura y os obligue a añadir la excepción cada dos por tres. Para evitarlo debemos generar un certificado digital y exportarlo al explorador de Internet que estemos usando. Para ello, debemos ir a la subpestaña «Options» de la pestaña «Proxy». Una vez ahí, en la sección «Proxy Listeners» hacemos click en «Import/export CA certificate».
En la ventana que se nos abre, debemos marcar «Certificate in DER format» y hacemos click en «Next».
A continuación, seleccionamos dónde queremos guardar el certificado y le damos un nombre.
Y para terminar, hacemos click en «Close».
Ahora debemos importarlo a nuestro explorador de Internet, para que lo reconozca y confíe en él durante la navegación. Para eso, en Mozilla Firefox en mi caso, accedemos a «Preferences->Privacy & Security->View Certificates«.
En la ventana que se nos abre hacemos click en «Import». Ahora, buscamos el certificado que hemos exportado de Burp Suite en la ruta en que lo hemos guardado. Puede que no nos aparezca. Para solucionar este problema, debemos marcar que nos muestre todos los tipos de archivos. Una vez lo hemos seleccionado y abierto, debemos marcar las dos casillas de la ventana que nos aparece y hacer click en «OK».
Y ya tenemos el certificado importado en nuestro explorador. Con esto, ya no debemos tener problemas.
Options
Esta subpestaña ya la conocemos de la entrega anterior, cuando configuramos el proxy, aunque entonces solamente tocamos la sección llamada «Proxy Listeners». Sin embargo, aquí podemos también generar certificados digitales (como hemos visto hace un momento) y otras configuraciones adicionales. En mi opinión, las más interesantes son:
Intercept Client Request
Podría darse el caso de que, al navegar por la web, las imágenes no se descarguen y fallen. Si así fuera, debemos asegurarnos de que en la sección llamada «Intercept Client Request» se haya marcado la opción que permite la captura de imágenes. Para ello, nos aseguramos de tener marcada la casilla que está rodeada en la siguiente imagen.
Match and Replace
También podemos configurar el interceptor para que sustituya automáticamente ciertas partes de la petición, como la cabecera por otras cabeceras diferentes, antes de dejar a la petición continuar su camino. Esto podemos configurarlo en la sección llamada «Match and Replace».
Un ejemplo en el que podría sernos útil esta opción del Proxy sería si quisiéramos observar el comportamiento de la aplicación web en dispositivos móviles. Para hacerlo, deberíamos marcar la casilla «Enabled» para el valor de «Replace» correspondiente a iOS y Android. En el listado de la imagen de arriba sería la segunda y tercera línea, por ejemplo. Al hacerlo, el proxy sustituiría el User-Agent de la cabecera de la petición por los que hemos marcado antes de dejar que la petición continúe su camino hacia el servidor.
Response Modification
Otro ejemplo sería si quisiéramos modificar algunas de las restricciones que la aplicación web tenga sobre los formularios de la página, como validaciones de formularios por JavaScript, campos ocultos o desactivados, etc. Para ello, marcaríamos la opción deseada en la sección «Response Modification».
Burp Proxy History
Como mencioné antes, Burp Suite guarda un historial de las peticiones interceptadas. Lo hace separándolas en dos tablas diferentes: «HTTP history» y «WebSockets history». En el panel superior de «HTTP history» es donde se muestra la lista de las peticiones HTTP. Éstas son las que nos interesan en esta serie de tutoriales. Podemos hacer click en la petición que nos interese analizar y hacerlo en el panel que se abre debajo de la lista de peticiones interceptadas o aplicarles cualquiera de las acciones que se despliegan al hacer click derecho sobre cada una de ellas.
Conociendo todo esto ya podemos empezar a sacarle el jugo a Burp Suite. Analizando las cabeceras de las peticiones interceptadas podemos sacar mucha información, como por ejemplo el tipo de servidor con el que nos estamos comunicando, la versión que usa, información sobre las cookies… Y todo esto puede darnos, a su vez, información sobre diferentes vulnerabilidades existentes y ya conocidas. Por ejemplo, si vemos que el servidor usa una versión de PHP desactualizada, podríamos buscar vulnerabilidades conocidas de la versión que el servidor que estamos auditando use y explotarlas en nuestro beneficio.
¡Y nada más por hoy! Como digo, con lo aprendido en esta entrega ya tenemos para entretenernos un rato. El proxy es uno de los componentes fundamentales de Burp Suite. Sería una buena idea que practiquéis su uso, analizando las capturas y haciéndoos al manejo de esta funcionalidad. Y como siempre, cualquier sugerencia o consulta podéis hacérmela llegar enviando un correo electrónico a sugerencias@manusoft.es o dejando un comentario en la entrada. ¡Muchas gracias por visitar ManuSoft.es!