BOOK THIS SPACE FOR AD
ARTICLE ADLos BChecks son una serie de verificaciones automáticas que Burp Suite Professional realiza para detectar vulnerabilidades en aplicaciones web. Existen varias ya creadas pero lo mejor de todo es que podemos crear verificaciones personalizadas. 🙂
Dentro de Burp, estos se encuentran y añaden desde Extensions > BChecks. Por defecto viene sin contenido, es decir, sin ninguno cargado. Es posible descargar los .bchecks desde el repositorio de Portswigger e ir incorporando en base a nuestras necesidades y/o pruebas a realizar.
Una vez descargados los BChecks https://github.com/PortSwigger/BChecks se puede importar la carpeta completa desde el botón Import.
Entre las opciones podrían encontrarse:
Identificar una vulnerabilidad específica, por ejemplo, asociada a un CVE en particular.Identificar una clase de vulnerabilidad, por ejemplo, SSTI, SSRF, CSV Injection, entre otras.Identificar componentes utilizados en respuestas.Identificar secretos, tokens, datos sensibles, etc.Buscar errores o variables interesantes entre las solicitudes.Si queres crear tus propios BChecks es posible hacerlo teniendo en cuenta lo siguiente:
Se agregan importando archivos .bcheck en Burp Suite Professional. Estos archivos utilizan un lenguaje de definición personalizado, más info acá, para especificar el comportamiento de la verificación.
Lógica condicional.Expresiones Regulares (RegEx).Envío de solicitudes HTTP en raw.Interactuar con Burp Collaborator.Posibilidad de ejecutar payloads en puntos de inserción definidos.Generar Issues con descripciones, recomendaciones, etc.Funciones auxiliares para MD5, SHA1, SHA256 y Base64, etc.Existen algunas reglas de estructura que se deben seguir para crear BChecks válidos:
Cada definición debe comenzar con un objeto de metadatos (metadata)Cada definición debe tener exactamente una instrucción given… then.Las declaraciones condicionales sólo pueden aparecer en una instrucción given… then.Cualquier declaración del tipo define o run for each debe colocarse después del bloque de metadatos (metadata) pero antes de la instrucción given… then.Las variables declaradas usando run for each tienen alcance externo, mientras que aquellas declaradas usando define tienen alcance interno. Esto significa que no se puede usar una variable declarada mediante define en una declaración run for each subsiguiente.Recientemente se ha incorporado el resaltado de sintaxis, dentro de Burp Suite. De esa forma, es mucho más fácil crear y comprobar si la estructura es válida.
Habiendo creado nuestro BCheck, podemos validar la sintaxis, ejecutar una prueba, ver las Solicitudes/Respuestas HTTP que coinciden con la verificación.
En el tab de Issue activity, si todo funciona correctamente deberíamos ver el típico Advisory con los detalles, en este caso es del tipo Information.
Algo a tener en cuenta, existen Templates previamente definidos que pueden ser útiles para crear nuestros primeros BChecks. Se pueden ver en Extensions > BChecks > Clic en New y luego From template.
Es posible personalizar nuestros escaneos, accediendo a la sección Auditing > Issues Reported y seleccionar BCheck generated issue. En este caso podrían incluirse o no las verificaciones creadas mediante BChecks.
Invitamos a que nos comenten si han utilizando los BChecks, y en caso afirmativo, cuáles son sus favoritos.
BCheck definitionsCreating BChecksWhat’s new with BChecks?GitHub — Portswigger BChecks