¿Cómo probar los ataques JWT?

Dec 27 2022
Hola a todos en este blog, intentaré resumir los ataques JWT. Tenemos 3 puntos sólidos principales de los que hablaremos: ¿Qué son los JWT?- ¿Qué son los ataques JWT?- Escenarios sobre los ataques JWT. ¡Comencemos! - ¿Qué son los JWT? Los tokens web JSON (JWT) son un formato estandarizado para enviar datos JSON firmados criptográficamente entre sistemas. A diferencia de los tokens de sesión clásicos, todos los datos que necesita un servidor se almacenan en el lado del cliente dentro del propio JWT.

Hola a todos en este blog, intentaré resumir los ataques JWT.

Tenemos 3 puntos sólidos principales de los que hablaremos
: ¿Qué son los JWT?
- ¿Qué son los ataques JWT?
- Escenarios sobre ataques JWT

Empecemos !!

- ¿Qué son los JWT ?

Los tokens web JSON (JWT) son un formato estandarizado para enviar datos JSON firmados criptográficamente entre sistemas. A diferencia de los tokens de sesión clásicos, todos los datos que necesita un servidor se almacenan en el lado del cliente dentro del propio JWT.
Un JWT consta de 3 partes: un encabezado , una carga útil y una firma . Cada uno de ellos está separado por un punto.xxxxx.yyyyy.zzzzz

Las partes de encabezado y carga útil de un JWT son solo objetos JSON codificados en base64url . En la mayoría de los casos, cualquier persona con acceso al token puede leer o modificar fácilmente los datos del encabezado y la carga útil. Por lo tanto, la seguridad de cualquier mecanismo basado en JWT depende en gran medida de la firma criptográfica .
Para crear la parte de la firma, debe tomar el encabezado codificado , la carga útil codificada , un secreto , el algoritmo especificado en el encabezado y firmarlo .

- ¿Qué son los ataques JWT?

Los ataques JWT involucran a un usuario que envía JWT modificados al servidor para lograr un objetivo malicioso.

- Escenarios sobre ataques JWT

Para resumir la idea que tenemos un objetivo es jugar con la firma. podemos jugar con la firma jugando con el contenido de la firma (carga útil - "alg" del encabezado - encabezado - secreto - firma todo lo mencionado). tenemos 7 escenarios en este blog y usaré la extensión JWT Editor, para saber más sobre esto desde aquí

  • El primer escenario: (juega solo con la carga útil)
imagen para El primer escenario
  • el segundo escenario: (jugar con la carga útil y "alg")

{
    "alg": "none",
    "typ": "JWT"
}

Pruebe las claves secretas de fuerza bruta usando hashcat , luego use la salida y codifíquela y haga clic en Nueva clave simétrica y reemplace el valor generado para la kpropiedad con el secreto codificado en Base64.

hashcat -a 0 -m 16500 <jwt> <wordlist>

Pruebe la inyección de JWT autofirmados a través del jwkparámetro haciendo clic en Nueva clave RSA y Generar jwk, luego ataque con el JWK incorporado

  • El quinto escenario: (jugar con el encabezado a través de un servidor externo)

{
    "keys": [

    ]
}

  • El sexto escenario:
  • El séptimo escenario:

Recursos