
SignSaboteur es una extensión de Burp Suite para editar, firmar y verificar varios tokens web firmados
SignSaboteur es una extensión de Burp Suite para editar, firmar, verificar y atacar tokens firmados. Soporta diferentes tipos de tokens: Django TimestampSigner, ItsDangerous Signer, Express cookie-session middleware, OAuth2 Proxy, Tornado’s signed cookies, Ruby Rails Signed cookies, Ruby Rails Encrypted cookies, Nimbus JOSE + JWT y cadenas firmadas desconocidas.
Puedes encontrar más información sobre la extensión en la entrada del blog de Portswigger Research - Introducing SignSaboteur: forge signed web tokens with ease.
Proporciona detección automática y edición en línea de tokens dentro de solicitudes/respuestas HTTP y mensajes WebSocket, firma de tokens y automatización de ataques de fuerza bruta contra implementaciones de tokens firmados.
Fue inspirada por la extensión de JWT Token de Fraser Winterborn y Dolph Flynn. El código fuente original se puede encontrar aquí y aquí.
./gradlew jarsign-saboteur-1.0.6.jar dentro del directorio build/libsExtensions, subpestaña Installed, haciendo clic en Add y cargando
el archivo JAR
La Vista de lista de palabras permite importar archivos de listas de secretos y sales. La extensión tiene sus propias listas de diccionario preconstruidas. La mayoría
de los secretos provienen de jwt-secrets. Como
opción, se puede usar Flask-Unsign-Wordlist. La extensión soporta
formato de cadenas JSON para caracteres especiales; para usarlo, entrecomilla la cadena secreta con ".
La Vista de editor soporta varios tokens firmados: Django, Dangerous, Flask, Express, OAuth2 y Tornado. Permite
la modificación de los tokens firmados en la vista de Solicitud/Respuesta HTTP de Burp Suite en las herramientas Proxy, History y Repeater.
La pestaña Dangerous se puede usar tanto para tokens Flask como Django, los cuales se seleccionan dependiendo de si se detecta un token Dangerous
o Django.
La pestaña Unknown se puede usar para forzar por fuerza bruta cadenas firmadas desconocidas. El modo de adivinanza funciona solo con ataques de fuerza bruta Balanced y Deep. Soporta diferentes técnicas de derivación de mensajes, incluyendo:
Se proporciona un editor de texto JSON para editar cada componente que contenga contenido JSON:
Se proporciona un editor de marcas de tiempo para editar cada componente que lo contenga:
Se proporciona un editor hexadecimal para todos los tokens firmados, excepto las firmas Express. NOTA La pestaña Express aún no soporta la actualización automática de firma. Por favor, cópiala manualmente a la cookie de firma correspondiente.
Sign presenta un diálogo de firma que se puede usar para actualizar la Firma firmando el token usando una clave de
la Vista de claves que tenga capacidades de firma
Fuerza bruta intentará encontrar la clave secreta que se usó para generar la firma. Si se encuentra una clave secreta, se
presentará un diálogo.
La opción Fuerza bruta implementa tres tipos de ataques contra las firmas de tokens firmados:
La opción Ataque implementa ocho ataques de autorización bien conocidos contra tokens firmados:
Estos se describen en más detalle a continuación.
Todos estos ataques se pueden usar juntos. Ten en cuenta que la extensión no soporta la modificación del payload del token en el modo Ataque, por lo que tu payload será reemplazado por uno nuevo.
El formato de token ID de OpenID Connect es usado comúnmente por las librerías de firma para almacenar información sobre el usuario autenticado.
La extensión generará un marcador de posición para el token ID del usuario admin.
Igual que el ataque User claims pero lo colocará dentro del atributo JSON user.
Otra forma común de almacenar detalles de usuario son los atributos JSON username y password. La extensión generará un
marcador de posición para el usuario admin.
La información de sesión de usuario autenticado de Flask, si se almacena en el lado del cliente, debe incluir los atributos JSON id, _id, user_id
o _user_id. La extensión generará una sesión para el primer usuario, normalmente admin.
El framework Express usa el atributo JSON passport para almacenar detalles de usuario. La extensión generará un marcador de posición para el usuario
admin.
Algunos frameworks pueden usar el envoltorio account para almacenar información sobre el usuario autenticado. Para la explotación, puede ser
necesario usar también Authenticated claims.
Authenticated claims implementa 12 indicadores de autorización bien conocidos.
La opción User access_token genera un token ID de JWT OpenID Connect firmado con la misma clave y el mismo algoritmo hash
sin realizar ninguna derivación de clave.