Como testar ataques JWT?

Dec 27 2022
Olá a todos neste blog, tentarei resumir os ataques JWT Temos 3 principais pontos sólidos sobre os quais falaremos - O que são JWTs?- O que são ataques JWT?- Cenários sobre ataques JWT Vamos começar !! - O que são JWTs? JSON web tokens (JWTs) são um formato padronizado para enviar dados JSON assinados criptograficamente entre sistemas. Ao contrário dos tokens de sessão clássicos, todos os dados de que um servidor precisa são armazenados no lado do cliente no próprio JWT.

Olá a todos neste blog, tentarei resumir os ataques JWT

Temos 3 principais pontos sólidos sobre os quais falaremos
- O que são JWTs?
- O que são ataques JWT?
- Cenários sobre ataques JWT

Vamos começar !!

- O que são JWTs ?

JSON web tokens (JWTs) são um formato padronizado para enviar dados JSON assinados criptograficamente entre sistemas. Ao contrário dos tokens de sessão clássicos, todos os dados de que um servidor precisa são armazenados no lado do cliente no próprio JWT.
Um JWT consiste em 3 partes: um cabeçalho , uma carga útil e uma assinatura . Estes são separados por um ponto.xxxxx.yyyyy.zzzzz

As partes de cabeçalho e carga útil de um JWT são apenas objetos JSON codificados em base64url . Na maioria dos casos, os dados de cabeçalho e carga podem ser facilmente lidos ou modificados por qualquer pessoa com acesso ao token. Portanto, a segurança de qualquer mecanismo baseado em JWT depende muito da assinatura criptográfica .
Para criar a parte da assinatura, você deve pegar o cabeçalho codificado , a carga útil codificada , um segredo , o algoritmo especificado no cabeçalho e assiná-lo .

- O que são ataques JWT?

Os ataques JWT envolvem um usuário enviando JWTs modificados ao servidor para atingir um objetivo malicioso.

- Cenários sobre ataques JWT

Para resumir a ideia que temos um objetivo é brincar com a assinatura. podemos brincar com a assinatura jogando com o conteúdo da assinatura (payload — “alg” do cabeçalho — cabeçalho — segredo — assinar todos os mencionados). temos 7 cenários neste blog e usarei a extensão JWT Editor, para saber mais sobre isso aqui

  • O primeiro cenário: (jogue apenas com a carga útil)
imagem para o primeiro cenário
  • o segundo cenário: (brincar com o payload & “alg” )

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

Teste as chaves secretas de força bruta usando hashcat , em seguida, use a saída e codifique-a e clique em Nova chave simétrica e substitua o valor gerado pela kpropriedade pelo segredo codificado em Base64.

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

Teste para injetar JWTs autoassinados por meio do jwkparâmetro, clique em Nova chave RSA e gere jwk, em seguida, ataque com JWK incorporado

  • O quinto cenário: (jogar com o cabeçalho via servidor externo)

{
    "keys": [

    ]
}

  • O sexto cenário:
  • O sétimo cenário:

Recursos