💡Interceptando solicitudes
Última actualización
Última actualización
Ahora que hemos configurado nuestro proxy, podemos usarlo para interceptar y manipular varias solicitudes HTTP enviadas por la aplicación web que estamos probando. Comenzaremos por aprender a interceptar solicitudes web, modificarlas y luego enviarlas a su destino previsto.
En Burp, podemos navegar hasta la pestaña Proxy
y la interceptación de solicitudes debería estar activada de forma predeterminada. Si queremos activar o desactivar la interceptación de solicitudes, podemos ir a la subpestaña Intercept
y hacer clic en el botón Intercept is on/off
para hacerlo:
Una vez que activamos la interceptación de solicitudes, podemos iniciar el navegador preconfigurado y luego visitar nuestro sitio web de destino después de generarlo a partir del ejercicio al final de esta sección. Luego, una vez que volvamos a Burp, veremos la solicitud interceptada esperando nuestra acción y podemos hacer clic en forward
para reenviar la solicitud:
Nota: como en este caso se interceptará todo el tráfico de Firefox, es posible que veamos que se ha interceptado otra solicitud antes de esta. Si esto sucede, haga clic en "Reenviar" hasta que llegue la solicitud a nuestra IP de destino, como se muestra arriba.
En ZAP, la interceptación está desactivada de forma predeterminada, como lo muestra el botón verde en la barra superior (el verde indica que las solicitudes pueden pasar y no ser interceptadas). Podemos hacer clic en este botón para activar o desactivar la intercepción de solicitudes, o podemos usar el acceso directo [ CTRL+B
] para activarla o desactivarla:
A continuación, podemos iniciar el navegador preconfigurado y volver a visitar la página web del ejercicio. Veremos la solicitud interceptada en el panel superior derecho y podemos hacer clic en el + (a la derecha del botón rojo break
) para reenviar la solicitud:
ZAP también tiene una característica poderosa llamada Heads Up Display (HUD)
, que nos permite controlar la mayoría de las características principales de ZAP desde el navegador preconfigurado. Podemos habilitarla en el HUD
haciendo clic en su botón al final de la barra de menú superior:
El HUD tiene muchas funciones que cubriremos a medida que avancemos en el módulo. Para interceptar solicitudes, podemos hacer clic en el segundo botón desde la parte superior del panel izquierdo para activar la interceptación de solicitudes:
Ahora, una vez que actualizamos la página o enviamos otra solicitud, el HUD interceptará la solicitud y nos la presentará para que tomemos acción:
Podemos elegir step
para enviar la solicitud y examinar su respuesta y deshacer las solicitudes posteriores, o podemos elegir continue
y dejar que la página envíe las solicitudes restantes. El botón step
es útil cuando queremos examinar cada paso de la funcionalidad de la página, mientras que continue
es útil cuando solo nos interesa una única solicitud y podemos reenviar las solicitudes restantes una vez que alcanzamos nuestra solicitud objetivo.
Consejo: La primera vez que utilices el navegador ZAP preconfigurado, se te presentará el tutorial del HUD. Puedes considerar realizar este tutorial después de esta sección, ya que te enseñará los conceptos básicos del HUD. Incluso si no comprendes todo, las próximas secciones deberían cubrir todo lo que te hayas perdido. Si no obtienes el tutorial, puedes hacer clic en el botón de configuración en la parte inferior derecha y elegir "Realizar el tutorial del HUD".
Una vez que interceptamos la solicitud, permanecerá bloqueada hasta que la reenviemos, como hicimos anteriormente. Podemos examinar la solicitud, manipularla para realizar los cambios que queramos y luego enviarla a su destino. Esto nos ayuda a comprender mejor qué información envía una aplicación web en particular en sus solicitudes web y cómo puede responder a los cambios que realicemos en esa solicitud.
Existen numerosas aplicaciones para esto en las pruebas de penetración web, como por ejemplo:
Inyecciones SQL
Inyecciones de comandos
Bypass de subida de archivos
Omisión de autenticación
XSS
XXE
Manejo de errores
Deserialización
Y muchas otras vulnerabilidades web potenciales, como veremos en otros módulos. Por lo tanto, vamos a mostrar esto con un ejemplo básico para demostrar cómo interceptar y manipular las solicitudes web.
Activemos nuevamente la interceptación de solicitudes en la herramienta que elijamos, establezcamos el valor IP
en la página y luego hagamos clic en el botón Ping
. Una vez que se intercepte nuestra solicitud, deberíamos obtener una solicitud HTTP similar a la siguiente:
Por lo general, solo podemos especificar números en el IP
campo mediante el navegador, ya que la página web nos impide enviar caracteres no numéricos mediante JavaScript en el front-end. Sin embargo, con el poder de interceptar y manipular las solicitudes HTTP, podemos intentar usar otros caracteres para "romper" la aplicación ("romper" el flujo de solicitud/respuesta manipulando el parámetro de destino, sin dañar la aplicación web de destino). Si la aplicación web no verifica ni valida las solicitudes HTTP en el back-end, es posible que podamos manipularla y explotarla.
Entonces, cambiemos el valor ip
del parámetro de 1
a ;ls;
y veamos cómo la aplicación web maneja nuestra entrada:
En BurpSuite si hacemos click derecho y lo enviamos al Repeater podremos hacer pruebas de inyección de código enviando una y otra vez solicitudes manipuladas:
Una vez que hacemos clic en Send
, veremos que la respuesta cambió de la salida de ping predeterminada a la salida ls
, lo que significa que manipulamos con éxito la solicitud para inyectar nuestro comando:
De igual manera por ejemplo podríamos cambiar el comando ;ls;
por otro para leer la flag:
Hasta podríamos leer el archivo /etc/passwd
donde se almacenan todos los usuarios del sistema:
Esto demuestra un ejemplo básico de cómo la interceptación y manipulación de solicitudes puede ayudar a probar aplicaciones web en busca de diversas vulnerabilidades, lo que se considera una herramienta esencial para poder probar diferentes aplicaciones web de manera efectiva.
Nota: Como se mencionó anteriormente, en este módulo no cubriremos ataques web específicos, sino cómo los servidores proxy web pueden facilitar varios tipos de ataques. Otros módulos posteriores cubren este tipo de ataques en profundidad.