El día de mañana arranca oficialmente una nueva plataforma de Bug Bounty, se trata de Epic Bounties, una plataforma de origen español que muchos estamos deseosos de descubrir e iniciar con la cacería de fallas de seguridad en los programas disponibles. Ya en otro momento les hablaré más detenidamente de la plataforma y sus bondades, por ahora simplemente les invito a registrarse y participar, como digo arrancan maquinarias mañana 2 de Agosto.
Y les comento de los amigos de Epic Bounties por que el pasado 16 de Julio en la presentación de su plataforma regalaron (inicialmente por sorteo «fallido») 5 licencias de Burp Bounty Pro, herramienta que revisaremos hoy. Pues resulta que la quinta licencia me la lleve yo, pero esta no por sorteo (que normalmente la suerte no va de mi lado), sino que fue respondiendo el primero a una pregunta formulada por el interlocutor. Bien, pues he aprovechado la ocasión para traerles aquí le herramienta, inicialmente en su versión free, para que vayamos introduciéndonos en su manejo.

Entonces, el día de hoy les vengo a hablar a colación de los programas de Bug Bounty, sobre una de las herramientas que más emplearemos tanto en estos programas, como en las auditorías web en general que hagamos, me refiero a Burp Suite y en este caso nos centraremos en las posibilidades que tenemos de «vitaminar» a una ya robusta solución como es Burp Suite, esta vez a través de una de las extensiones más usadas por los bug hunter (los cazadores de vulnerabilidades), como lo es Burp Bounty. Para presentarles la herramienta a los que puedan no conocerla por el momento o no hayan oído hablar de ella, vamos a extraer (con permiso) la definición del GitHub del proyecto:

Esta extensión de Burp Suite te permite, de forma rápida y sencilla, mejorar su escáner activo y pasivo mediante reglas personalizadas a través de una interfaz gráfica muy intuitiva. Mediante una búsqueda avanzada de patrones y una mejora de los payloads a enviar, podemos crear nuestros propios perfiles de incidencia tanto en el escáner activo como en el pasivo.

Por tanto, aquí les dejo un pequeño tutorial de como generar un perfil pasivo y otro perfil activo para la identificación de potenciales vulnerabilidades.

Creación de perfil pasivo

En este caso haremos que nuestro Burp Suite identifique de forma pasiva y nos indique cuando estemos en frente de una página web de tipo Moodle. Para ello primeramente un breve análisis manual del objetivo.

Tomando como referencia el siguiente objetivo:

Observemos la petición que estamos generando desde nuestro navegador al objetivo con la simple visualización:

El nombre de la cookie (MoodleSession) ya es bastante revelador, por tanto tomaremos este recurso de la cabecera de la petición (Insertion Point) para generar nuestra alerta (mediante un Passive Request Profile), una que nos indique que tenemos identificada una instancia de Moodle.

Debemos definir los siguiente valores básicos:

  • En la pestaña Request
    • Name.- Es el nombre que le queremos dar a nuestro perfil.
    • Author.- Podemos indicar el creador del perfil.
    • Grep.- Indicaremos la cadena (MoodleSession) que queremos identificar en la petición. Si esta cadena existe en la petición, nos mostrará la alerta.
    • Match Type.- Le indicaremos que tomaremos un «Simple string«.

  • En la pestaña Issue
    • Issue Name.- Vamos a definir el nombre que le queremos dar a la alerta.
    • Severity.- La severidad de la alerta, en este caso la dejaremos como Information.
    • Confidence.- El valor aquí lo dejaremos como Certain.
    • Description.- Un texto descriptivo para la alerta nos será de mucha utilidad.

  • En la pestaña Tags
    • Tag.- El apartado de etiquetas no debería pasar por alto para tener una organización idónea de nuestros perfiles.

Bien, ahora con el perfil creado, vamos a dirigirnos a nuestro navegador para genera trafico sobre el objetivo y revisar como reacciona Burp Suite.

En la sección Target, en concreto el apartado Issues mostrará la alerta que hemos generado a través del perfil creado.

Si vamos a la pestaña Request evidenciaremos la coincidencia encontrada que se muestra resaltada:

Ahora pasaremos a ver la parte de los perfiles activos.

Creación de perfil activo

Debemos tener en cuenta que Burp Suite pondrá en marcha los perfiles activos únicamente al lanzar un escaneo sobre el objetivo. Pero eso lo veremos luego, primero vamos a configurar nuestro perfil tomando como referencia la vulnerabilidad CVE-2021-32478, que trata de una vulnerabilidad de XSS (Cross Site Scripting).

Vamos a definir los siguiente valores:

  • En la pestaña Request
    • Name.- Es el nombre que le queremos dar a nuestro perfil.
    • Author.- Podemos indicar el creador del perfil.
    • Payload.- Aquí indicaremos el payload que deseamos incluir en la petición al objetivo. En concordancia a la vulnerabilidad de referencia indicaremos la siguiente cadena «mod/lti/auth.php?redirect_uri=javascript:alert(document.domain)» que se compone de la ruta (conjunto de directorios y fichero), el parámetro afectado por la vulnerabilidad y finalmente el payload propiamente dicho.
    • Payload position.- Elegiremos la opción Replace ya que lo que pretendemos es que se incluya la cadena sobre el activo.
    • Insertion point type.- De todos los puntos de inserción tan solo nos interesa que nuestra cadena (payload) sea insertada como si fuera parte de la URL, en plan: http(s)://OBJETIVO/PAYLOAD/. Para más información sobre como funcionan los puntos de inserción en Burp Suite, podemos revisar las referencias que dejo al final del post. Por tanto la opción elegida será «URL path folder«.

  • En la pestaña Response
    • Match Type.- Indicaremos que tomaremos un «Simple string«.
    • Grep.- Aquí definiremos la cadena que debe ser localizada en la respuesta del servidor objetivo para que se nos presente la alerta. Para este caso lo dejaré como: «javascript:alert(document.domain)«.
    • Grep Options.- Para una mayor optimización de los resultados tan solo marcaré los checkbox «Exclude HTTP headers» y «Status code«.

En la pestaña Issue

  • Issue Name.- Vamos a definir el nombre que le queremos dar a la alerta.
  • Severity.- La severidad de la alerta, en este caso la dejaremos como Medium.
  • Confidence.- El valor aquí lo dejaremos como Certain.
  • Description.- Un texto descriptivo para la alerta nos será de mucha utilidad.

En la pestaña Tags

  • Set Tags.- El apartado de etiquetas no debería pasar por alto para tener una organización idónea de nuestros perfiles.

Con esto ya definido llega la hora de dirigirnos la sección Target y poner en marcha nuestro escaneo activo haciendo uso de nuestro reciente perfil creado. Para ello haremos click derecho sobre el objetivo y elegiremos la opción Scan.

Se nos desplegará a continuación una nueva ventana para confirmar el escaneo que lanzaremos. En este caso lo haremos sobre los siguiente items:

Ahora nos desplazaremos a la siguiente sección (Scan configuration) y esta vez pulsaremos sobre el botón de la parte inferior que pone Select from library, con esto nos aparecerá otra ventana. Aquí elegiremos la opción Audit checks – extensions only.

Después de realizar la selección volveremos al apartado de Scan configuration, aquí veremos un resumen:

Si nos vamos a la sección Dashboard en el apartado de Tasks observaremos nuestro escaneo en marcha. Aquí la muestra del proceso acabado:

De vuelta sobre la sección Target obtendremos la alerta sobre la vulnerabilidad identificada:

Ahora para interiorizarnos con la alerta y entender el porque del hallazgo revisemos tanto la petición como la respuesta del objetivo:

Desde el navegador el resultado visual será la siguiente PoC (prueba de concepto):

Bien, pues a partir de aquí podremos configurar y definir todos los perfiles que nosotros requiramos para nuestro día a día. La herramienta ya cuenta con más de 100 perfiles predefinidos en su versión free y algunos más en su versión Pro (que pronto les traeré en próximas entradas). De forma adicional les comparto en mi GitHub algunos perfiles que he preparado haciendo los laboratorios para esta entrada, estos perfiles (activos y pasivos) incluyen: Moodle, Jira y uno de SSTI. Espero que os resulte de utilidad.

Referencias: