Introducción
En este laboratorio, aprenderá a utilizar una de las potentes funciones de Burp Intruder: 'Grep - Extract'. Esta función le permite definir reglas para extraer fragmentos de texto específicos de las respuestas recibidas durante un ataque de Intruder. Es increíblemente útil para recopilar información valiosa que puede cambiar con cada solicitud, como tokens CSRF, IDs de sesión u otros datos generados dinámicamente.
Al final de este laboratorio, podrá configurar Burp Intruder para encontrar y mostrar automáticamente datos personalizados de las respuestas, haciendo que su flujo de trabajo de pruebas de seguridad sea más eficiente. Simularemos un escenario en el que necesitamos extraer un token oculto de la respuesta de una página web.
En Intruder > Options, Desplácese hasta la Sección 'Grep - Extract'
En este paso, comenzaremos lanzando Burp Suite y enviando una solicitud de ejemplo a la herramienta Intruder. Esto preparará el escenario para configurar nuestras reglas de extracción.
Primero, necesita lanzar Burp Suite. Normalmente puede encontrarlo en el menú de aplicaciones de su entorno de escritorio.
- Abra la Terminal desde su escritorio.
- Lance Burp Suite ejecutando el comando
burpsuite. Seleccione un proyecto temporal y haga clic en "Next", luego en "Start Burp". - Vaya a la pestaña Proxy > Intercept y asegúrese de que "Intercept is on".
- Abra el navegador Chromium integrado yendo a Proxy > Intercept y haciendo clic en "Open Browser".
- En el navegador, navegue a cualquier sitio web sencillo, por ejemplo,
http://portswigger.net. - La solicitud será interceptada en Burp Suite. Haga clic derecho en cualquier lugar del área de texto de la solicitud y seleccione Send to Intruder.
- Ahora, navegue a la pestaña Intruder. Verá la solicitud que acaba de enviar.
- Dentro de la pestaña Intruder, haga clic en la subpestaña Options.
- Desplácese hacia abajo en la página hasta encontrar la sección titulada Grep - Extract. Aquí es donde configuraremos nuestras reglas de extracción de datos.
Ahora ha localizado con éxito la sección 'Grep - Extract' y está listo para añadir una regla.
Añadir una Nueva Regla de Extracción
En este paso, añadirá una nueva regla vacía a la sección 'Grep - Extract'. Esta regla se configurará más tarde para definir qué datos específicos queremos extraer de las respuestas del servidor.
La función 'Grep - Extract' funciona creando una lista de reglas. Cada regla define un patrón a buscar en la respuesta. Cuando una respuesta coincide con una regla, la parte especificada de la respuesta se extrae y se muestra en una nueva columna en la tabla de resultados de Intruder.
Para añadir una nueva regla, simplemente siga esta instrucción:
- En la sección Grep - Extract que localizó en el paso anterior, haga clic en el botón Add.
Después de hacer clic en Add, aparecerá una nueva entrada en la tabla de reglas. Esta nueva entrada tendrá configuraciones predeterminadas, que configuraremos en el siguiente paso. El diálogo para definir la extracción también aparecerá, listo para su entrada.
Definir Delimitadores de Inicio y Fin para Extraer Datos (por ejemplo, un token oculto)
En este paso, configurará la regla que acaba de añadir. Le diremos a Burp qué extraer definiendo el texto que viene inmediatamente antes y después de nuestros datos objetivo. Esto se hace utilizando delimitadores de inicio y fin.
Para este laboratorio, imaginemos que estamos intentando extraer un token CSRF de una respuesta que contiene el siguiente fragmento HTML:
<input type="hidden" name="csrf_token" value="a1b2c3d4e5f6g7h8i9j0" />
Nuestro objetivo es extraer el valor a1b2c3d4e5f6g7h8i9j0.
- Después de hacer clic en "Add" en el paso anterior, aparece un diálogo "Define extract grep". Si no está abierto, haga clic en la nueva regla que añadió para abrirlo.
- La herramienta recupera automáticamente la respuesta de la solicitud original que envió a Intruder. Puede verla en la vista de respuesta en la parte inferior.
- Para definir la extracción, especificaremos un delimitador de inicio y fin. La forma más fiable es utilizar la opción "Define start and end".
- Encuentre una pieza de texto única en la respuesta que desee extraer. Para nuestro ejemplo, pretendamos que la respuesta contiene el fragmento HTML anterior.
- En la vista de respuesta, resalte el valor que desea extraer (por ejemplo,
a1b2c3d4e5f6g7h8i9j0). - Los campos "Start" y "End" se rellenarán automáticamente.
- El campo Start after expression debe contener el texto que precede inmediatamente a sus datos objetivo. Para nuestro ejemplo, esto sería
name="csrf_token" value=". - El campo End at delimiter debe contener el texto que sigue inmediatamente a sus datos objetivo. Para nuestro ejemplo, esto sería
".
- El campo Start after expression debe contener el texto que precede inmediatamente a sus datos objetivo. Para nuestro ejemplo, esto sería
- Haga clic en OK para guardar la regla.
Ahora ha configurado una regla que buscará en cada respuesta el texto entre name="csrf_token" value=" y ", y lo extraerá.
Ejecutar un Ataque Intruder
En este paso, configurará un payload básico y lanzará el ataque Intruder. A medida que el ataque se ejecuta, Burp aplicará la regla Grep-Extract a cada respuesta que reciba.
Primero, necesitamos establecer una posición para el payload.
- Navegue a la sub-pestaña Intruder > Positions.
- Aquí se muestra la plantilla de solicitud. Por defecto, Burp puede haber añadido automáticamente marcadores de payload (
§...§) alrededor de los valores de los parámetros. Para este ejercicio, no importa dónde esté el payload, ya que nos centramos en la respuesta. Puede dejar los marcadores predeterminados o eliminarlos y añadir uno en cualquier lugar. Por ejemplo, podría añadirlo a un valor de cookie o a un parámetro. - Asegúrese de que el tipo de ataque esté configurado como Sniper.
A continuación, configuramos un payload simple.
- Navegue a la sub-pestaña Intruder > Payloads.
- En Payload Sets, mantenga el conjunto de payloads como
1. - En Payload Options, seleccione Numbers en la lista desplegable.
- Configure para que se ejecute de
1a5con un paso de1. Esto enviará 5 solicitudes.
Finalmente, inicie el ataque.
- Haga clic en el botón Start attack en la esquina superior derecha de la pestaña Intruder.
- Se abrirá una nueva ventana de "Intruder attack", que mostrará los resultados del ataque en tiempo real.
El ataque se está ejecutando ahora, y Burp está ocupado extrayendo datos basándose en la regla que creó.
Ver los Datos Extraídos en las Nuevas Columnas de la Tabla de Resultados
En este paso final, observará los resultados de su configuración de Grep-Extract. Los datos que le indicó a Burp que encontrara ahora están organizados de forma ordenada en la ventana de resultados del ataque.
- Observe la ventana Intruder attack que se abrió en el paso anterior.
- Verá una tabla con columnas como "Request", "Position", "Payload", "Status", "Length", etc.
- Desplace la tabla hacia la derecha. Debería ver una nueva columna. Por defecto, se llamará Extract 1. Si añadió más reglas, se llamarían Extract 2, y así sucesivamente.
- Esta nueva columna contiene los datos que se extrajeron de cada respuesta utilizando la regla que definió.
Si el sitio web al que se dirigió no contiene realmente la cadena csrf_token que usamos como ejemplo, esta columna podría estar vacía. Sin embargo, la presencia de la columna confirma que su regla estaba activa. Si hubiera dirigido un token real y dinámico en una página de inicio de sesión, esta columna ahora estaría llena con los tokens únicos de cada respuesta, listos para que usted los analice o los utilice en ataques posteriores.
Puede hacer clic derecho en la cabecera de la tabla para añadir o eliminar columnas, o hacer clic en una cabecera de columna para ordenar los resultados basándose en esos datos.
Resumen
En este laboratorio, ha aprendido con éxito a utilizar la función 'Grep - Extract' en Burp Intruder. Ha recorrido todo el proceso, desde enviar una solicitud a Intruder, añadir y configurar una regla de extracción con delimitadores específicos, ejecutar un ataque y, finalmente, ver los datos extraídos en la ventana de resultados.
Esta habilidad es esencial para automatizar el proceso de recopilación de datos dinámicos de aplicaciones web, lo cual es una tarea común en las pruebas de penetración y el análisis de seguridad. Ahora puede aplicar este conocimiento para extraer tokens CSRF, identificadores de sesión, claves API o cualquier otra información específica de las respuestas HTTP durante sus evaluaciones de seguridad.
