Saltar al contenido
Portada » Blog – Laprovittera Carlos » TryHackMe Burp Suite Repeater

TryHackMe Burp Suite Repeater

Hola hacketones! Bienvenidos a un nuevo CTF de la ruta completa de Web Fundamentals, en este capítulo veremos:  TryHackMe Burp Suite Repeater

¡Bienvenido a la sala Burp Suite Repeater!

En esta sala, exploraremos las capacidades avanzadas del framework Burp Suite, centrándonos en el módulo Burp Suite Repeater. Basándonos en los conocimientos básicos de Burp Suite , profundizaremos en las potentes funciones de la herramienta Repeater. Aprenderá a manipular y reenviar solicitudes capturadas, y exploraremos las diversas opciones y funcionalidades disponibles en este excepcional módulo. A lo largo de la sala, presentaremos ejemplos prácticos, incluyendo un ejercicio real, para consolidar su comprensión de los conceptos tratados.

Si eres nuevo en Burp Suite o no has completado la sala de Fundamentos de Burp, te recomendamos que lo hagas antes de continuar. Esta sala establece los conocimientos fundamentales necesarios para esta sala y enriquecerá tu aprendizaje.

¿Qué es Repeater?

Antes de utilizar Burp Suite Repeater, familiaricémonos con su propósito y funcionalidad.

En esencia, Burp Suite Repeater nos permite modificar y reenviar solicitudes interceptadas a un destino de nuestra elección. Nos permite tomar las solicitudes capturadas en el proxy Burp y manipularlas, enviándolas repetidamente según sea necesario. Como alternativa, podemos crear solicitudes manualmente desde cero, de forma similar a usar una herramienta de línea de comandos como cURL.

La capacidad de editar y reenviar solicitudes varias veces hace que Repeater sea invaluable para la exploración y prueba manual de endpoints. Proporciona una interfaz gráfica intuitiva para crear cargas útiles de solicitudes y ofrece diversas vistas de la respuesta, incluyendo un motor de renderizado para una representación gráfica.

La interfaz del repetidor consta de seis secciones principales, como se muestra en el diagrama anotado a continuación:

  1. Lista de solicitudes : En la parte superior izquierda de la pestaña, se muestra la lista de solicitudes del repetidor. Se pueden gestionar varias solicitudes simultáneamente, y cada nueva solicitud enviada al repetidor aparecerá aquí.
  2. Controles de solicitud : ubicados directamente debajo de la lista de solicitudes, estos controles nos permiten enviar una solicitud, cancelar una solicitud bloqueada y navegar a través del historial de solicitudes.
  3. Vista de Solicitud y Respuesta : Esta sección, que ocupa la mayor parte de la interfaz, muestra las vistas de Solicitud y Respuesta . Podemos editar la solicitud en la vista de Solicitud y luego reenviarla, mientras que la respuesta correspondiente se mostrará en la vista de Respuesta.
  4. Opciones de diseño : Ubicadas en la esquina superior derecha de la vista Solicitud/Respuesta, estas opciones permiten personalizar el diseño de las vistas. La configuración predeterminada es un diseño horizontal, pero también se puede elegir un diseño vertical o combinarlas en pestañas independientes.
  5. Inspector : Ubicado en el lado derecho, el Inspector nos permite analizar y modificar solicitudes de forma más intuitiva que con el editor sin formato. Exploraremos esta función en una tarea posterior.
  6. Destino : Situado encima del Inspector, el campo Destino especifica la dirección IP o el dominio al que se envían las solicitudes. Cuando se envían solicitudes a Repeater desde otros componentes de Burp Suite , este campo se rellena automáticamente.

Responda las preguntas a continuación

¿Qué secciones nos dan un control más intuitivo sobre nuestras solicitudes?

inspector

Uso básico

Sabemos cómo se ve la interfaz de la aplicación en este momento, pero ¿cómo podemos utilizarla de manera efectiva?

Si bien la elaboración manual de solicitudes es una opción, es más común capturar una solicitud utilizando el módulo Proxy y luego transmitirla a Repeater para su posterior edición y reenvío.

Una vez que se ha capturado una solicitud en el módulo Proxy , podemos enviarla a Repeater haciendo clic derecho en la solicitud y seleccionando Enviar a Repeater , o utilizando el atajo de teclado Ctrl + R.

Volviendo a centrarnos en Repeater, podemos observar que nuestra solicitud capturada ahora es accesible en la vista Solicitud:

Las secciones «Objetivo» e «Inspector» ahora muestran información relevante, aunque actualmente no hay respuesta. Al hacer clic en el botón » Enviar» , la vista de respuesta se completa rápidamente:

Si deseamos modificar algún aspecto de la solicitud, simplemente podemos escribir en la vista Solicitud y pulsar » Enviar» de nuevo. Esta acción actualizará la vista Respuesta a la derecha. Por ejemplo, al cambiar el encabezado de Conexión a «abrir» en lugar de «cerrar», se obtiene una respuesta con el valor «mantener activo» :

Además, podemos utilizar los botones de historial situados a la derecha del botón Enviar para navegar a través de nuestro historial de modificaciones, permitiéndonos avanzar o retroceder según sea necesario.

Barra de herramientas de análisis de mensajes

Responda las preguntas a continuación

¿Qué vista se completará al enviar una solicitud desde el módulo Proxy al Repetidor?

request

Barra de herramientas de análisis de mensajes

Repeater nos proporciona varias opciones de presentación de solicitudes y respuestas, que van desde una salida hexadecimal hasta una página completamente renderizada.

Para explorar estas opciones, podemos referirnos a la sección ubicada encima del cuadro de respuesta, donde están disponibles los siguientes cuatro botones de visualización:

Se nos presentan las siguientes opciones de visualización:

  1. Bonito : esta es la opción predeterminada, que toma la respuesta sin procesar y aplica ligeras mejoras de formato para mejorar la legibilidad.
  2. Sin procesar : esta opción muestra la respuesta sin modificar recibida directamente del servidor sin ningún formato adicional.
  3. Hex : al seleccionar esta vista, podemos examinar la respuesta en una representación a nivel de byte, lo que es particularmente útil cuando se trabaja con archivos binarios.
  4. Renderizar : La opción de renderizado nos permite visualizar la página tal como se vería en un navegador web. Aunque no se utiliza comúnmente en Repeater, ya que nos centramos generalmente en el código fuente, ofrece una función valiosa. En la mayoría de los casos, la opción Pretty suele ser suficiente. Sin embargo, conviene familiarizarse con el uso de las otras tres opciones.

Junto a los botones de vista, a la derecha, se encuentra el botón «Mostrar caracteres no imprimibles» ( \n). Esta función permite mostrar caracteres que podrían no ser visibles con las opciones Pretty o Raw . Por ejemplo, cada línea de la respuesta suele terminar con los caracteres \r\n, que representan un retorno de carro seguido de una nueva línea. Estos caracteres desempeñan un papel importante en la interpretación de los encabezados HTTP .

Si bien no es obligatorio para la mayoría de las tareas, esta opción puede resultar ventajosa en determinadas situaciones.

Si bien no es obligatorio para la mayoría de las tareas, esta opción puede resultar ventajosa en determinadas situaciones.

Responda las preguntas a continuación

¿Qué opción  nos permite visualizar la página tal como aparecería en un navegador web?

render

Inspector

El Inspector es una función complementaria a las vistas de Solicitud y Respuesta del módulo Repetidor. También se utiliza para obtener un desglose visual de las solicitudes y respuestas, así como para experimentar cómo los cambios realizados con el Inspector de nivel superior afectan a las versiones sin procesar equivalentes.

El Inspector se puede utilizar tanto en el módulo Proxy como en el módulo Repetidor. En ambos casos, se encuentra en el extremo derecho de la ventana y presenta una lista de componentes dentro de la solicitud y la respuesta:

Entre estos componentes, las secciones correspondientes a la solicitud suelen modificarse, lo que permite añadir, editar y eliminar elementos. Por ejemplo, en la sección «Atributos de la solicitud» , podemos modificar elementos relacionados con la ubicación, el método y el protocolo de la solicitud. Esto incluye modificar el recurso que se desea recuperar, cambiar el método HTTP de GET a otra variante o cambiar el protocolo de HTTP /1 a HTTP /2.

Otras secciones disponibles para visualización y/o edición incluyen:

  1. Parámetros de consulta de la solicitud: Hacen referencia a los datos enviados al servidor mediante la URL. Por ejemplo, en una solicitud GET como [nombre de la solicitud] https://admin.tryhackme.com/?redirect=false, el parámetro de consulta » redirect» tiene el valor «false».
  2. Parámetros del cuerpo de la solicitud: Similares a los parámetros de consulta, pero específicos de las solicitudes POST. Todos los datos enviados como parte de una solicitud POST se mostrarán en esta sección, lo que nos permitirá modificar los parámetros antes de reenviarlos.
  3. Cookies de solicitud: esta sección contiene una lista modificable de cookies enviadas con cada solicitud.
  4. Encabezados de solicitud: Nos permiten ver, acceder y modificar (incluyendo añadir o eliminar) los encabezados enviados con nuestras solicitudes. Editar estos encabezados puede ser útil para examinar cómo responde un servidor web a encabezados inesperados.
  5. Encabezados de respuesta: Esta sección muestra los encabezados devueltos por el servidor en respuesta a nuestra solicitud. No se puede modificar, ya que no tenemos control sobre ellos. Tenga en cuenta que esta sección solo es visible después de enviar una solicitud y recibir una respuesta.

Si bien la representación textual de estos componentes se encuentra en las vistas de Solicitud y Respuesta, el formato tabular de Inspector facilita su visualización e interacción. Experimentar con la adición, eliminación y edición de encabezados en Inspector ayuda a comprender cómo cambia la versión sin procesar correspondiente en respuesta.

Responda las preguntas a continuación

¿Qué sección del Inspector es específica para las solicitudes POST?

Body Parameters

Ejemplo práctico

El repetidor es especialmente adecuado para tareas que requieren el envío repetitivo de solicitudes similares, generalmente con modificaciones menores. Esto resulta especialmente útil para actividades como la comprobación manual de vulnerabilidades de inyección SQL (que se abordará en una próxima tarea), el intento de eludir los filtros del firewall de aplicaciones web o el ajuste de parámetros en el envío de un formulario.

Comencemos con un ejemplo extremadamente simple: utilizar Repeater para modificar los encabezados de una solicitud enviada a un destino.

Captura una solicitud http://MACHINE_IP/en el módulo Proxy y envíala al Repetidor.

Envíe la solicitud una vez desde Repeater  :  debería ver el código fuente HTML de la página que solicitó en la vista de Respuesta.

Intente ver esto en una de las otras opciones de visualización (por ejemplo, Hex).

Usando Inspector (o manualmente, si lo prefieres), agrega un encabezado llamado FlagAuthorisedy configúralo para que tenga un valor de True, como se muestra a continuación:

Responda las preguntas a continuación

¿Cuál es la bandera que recibes?

THM{Yzg2MWI2ZDhlYzdlNGFiZTUzZTIzMzVi}

Desafío

En la tarea anterior, demostramos el uso de Repeater añadiendo un encabezado y enviando una solicitud. Esto sirvió como ejemplo ilustrativo del uso de Repeater. ¡Ahora es el momento de un desafío sencillo!

Para empezar, asegúrate de que la intercepción esté desactivada en tu módulo Proxy y navega hasta http://MACHINE_IP/products/. A continuación, intenta hacer clic en algunos de los enlaces «Ver más» .

Observe que se le redirige a un punto final numérico (por ejemplo, /productos/3).

El objetivo es validar el punto final, confirmando la existencia del número al que se desea navegar y asegurándose de que sea un entero válido. Sin embargo, considere lo que podría ocurrir si este punto final no se valida adecuadamente.

Desafío de la milla extra

¿Cuál es la bandera que recibes cuando provocas un error 500 en el punto final?

THM{N2MzMzFhMTA1MmZiYjA2YWQ4M2ZmMzhl}

Esta tarea está diseñada para poner a prueba tus habilidades en un escenario real ligeramente más desafiante utilizando Burp Repeater. Si tienes la experiencia para realizar una inyección SQL manual de forma independiente , puedes saltar a la pregunta final e intentarlo a ciegas. Sin embargo, a continuación se proporcionará una guía detallada si necesitas ayuda.

Conocimientos previos

Antes de comenzar este desafío, se recomienda familiarizarse con los principios de la inyección SQL . Si aún no lo ha hecho, considere explorar la sala de inyección SQL dedicada a este tema. Si bien se proporcionará una guía completa paso a paso, tener conocimientos básicos de los principios de la inyección SQL será beneficioso para completar esta tarea.

Objetivo del desafío

Su objetivo en este desafío es identificar y explotar una vulnerabilidad de inyección SQL de Union presente en el parámetro ID del /about/IDendpoint. Aprovechando esta vulnerabilidad, su tarea consiste en lanzar un ataque para recuperar las notas sobre el CEO almacenadas en la base de datos.

Tutorial

Sabemos que hay una vulnerabilidad y dónde está. ¡Ahora solo falta explotarla!

Comencemos capturando una solicitud http://MACHINE_IP/about/2en el proxy Burp. Una vez capturada, envíela al repetidor con Ctrl + Ro haciendo clic derecho y seleccionando «Enviar al repetidor».

Ahora que nuestra solicitud está lista, confirmemos la existencia de una vulnerabilidad. Añadir un solo apóstrofo ( ‘) suele ser suficiente para que el servidor genere un error cuando hay una SQLi simple . Por lo tanto, ya sea usando el Inspector o editando la ruta de la solicitud manualmente, añada un apóstrofo después del «2» al final de la ruta y envíe la solicitud:

Debería ver que el servidor responde con un «500 Error interno del servidor», lo que indica que interrumpimos correctamente la consulta:

Si revisamos el cuerpo de la respuesta del servidor, vemos algo muy interesante alrededor de la línea 40. El servidor nos está indicando la consulta que intentamos ejecutar:

Este es un mensaje de error extremadamente útil que el servidor no debería enviarnos, pero el hecho de que lo tengamos hace que nuestro trabajo sea mucho más sencillo.

El mensaje nos dice un par de cosas que serán invaluables a la hora de explotar esta vulnerabilidad:

  • La tabla de base de datos que estamos seleccionando se llama people.
  • La consulta selecciona cinco columnas de la tabla: firstName, lastName, pfpLink, roley bio. Podemos adivinar su ubicación en la página, lo cual será útil al elegir dónde colocar nuestras solicitudes.

Con esta información, podemos omitir los pasos de enumeración del número de columna de consulta y el nombre de la tabla.

Aunque hemos logrado eliminar gran parte de la enumeración necesaria aquí, aún necesitamos encontrar el nombre de nuestra columna de destino.

Como conocemos el nombre de la tabla y el número de filas, podemos usar una consulta de unión para seleccionar los nombres de las columnas de la peopletabla columnsde la information_schemabase de datos predeterminada.

Una consulta sencilla para esto es la siguiente:

/about/0 UNION ALL SELECT column_name,null,null,null,null FROM information_schema.columns WHERE table_name=»people»

Esto crea una consulta de unión y selecciona nuestro objetivo, luego cuatro columnas nulas (para evitar errores en la consulta). Observe que también cambiamos el ID desde el que seleccionamos 2a 0. Al establecer el ID en un número no válido, nos aseguramos de no recuperar nada con la consulta original (legítima); esto significa que la primera fila devuelta por la base de datos será la respuesta deseada de la consulta inyectada.

Al observar la respuesta devuelta, podemos ver que el nombre de la primera columna ( id) se ha insertado en el título de la página:

Hemos extraído correctamente el nombre de la primera columna de la base de datos, pero ahora tenemos un problema. La página solo muestra el primer elemento coincidente  ;  necesitamos ver todos los elementos coincidentes.

Afortunadamente, podemos usar SQLi para agrupar los resultados. Aunque todavía solo podemos recuperar un resultado a la vez, con la group_concat() función podemos fusionar todos los nombres de columna en una única salida:

/about/0 UNION ALL SELECT group_concat(column_name),null,null,null,null FROM information_schema.columns WHERE table_name=»people»

Este proceso se muestra a continuación:

Hemos identificado con éxito ocho columnas en esta tabla: id, firstName, lastName, pfpLink, role, shortRole, bio, y notes.

Teniendo en cuenta nuestra tarea, parece una apuesta segura que nuestra columna objetivo es notes.

Finalmente, estamos listos para tomar la bandera de esta base de datos: tenemos toda la información que necesitamos:

  • El nombre de la tabla: people.
  • El nombre de la columna de destino: notes.
  • El ID del CEO es 1; esto se puede encontrar simplemente haciendo clic en el perfil de Jameson Wolfe en la /about/página y verificando el ID en la URL.

Creemos una consulta para extraer esta bandera:

0 UNION ALL SELECT notes,null,null,null,null FROM people WHERE id = 1

¡Y listo, tenemos una bandera!

Responda las preguntas a continuación

Explotar la vulnerabilidad de inyección SQL de la unión en el sitio.

¿Qué es la bandera?

THM{ZGE3OTUyZGMyMzkwNjJmZjg3Mzk1NjJh}

Conclusión

¡Felicitaciones por completar la sala Burp Suite Repeater!

A estas alturas, ya deberías tener una sólida comprensión del uso eficaz de Repeater para editar, manipular y reenviar solicitudes. Además, deberías haber adquirido conocimientos sobre las numerosas aplicaciones prácticas de esta herramienta.

En la siguiente sala del módulo, exploraremos el módulo Intruder de Burp Suite . Intruder permite realizar ataques automatizados y personalizables, lo que lo convierte en una herramienta potente para diversos escenarios de pruebas de seguridad.

¡Buena suerte con la próxima habitación y disfruta explorando las capacidades de Burp Suite Intruder !

Responda las preguntas a continuación

¡Puedo usar Burp Suite Repeater!

Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *