codifica JWT utilizzando HMAC con chiave asimmetrica come segreto

1

Al momento sto sfruttando la vulnerabilità discussa qui

link

Dove l'algoritmo digita JWT può essere cambiato da RSA a HMAC e firma il token con una determinata chiave pubblica.

Tuttavia, ho scritto il seguente codice Python:

import jwt
import base64

# consider 'publickey' as the servers public key
code = 
jwt.encode({'login':'test'},'publickey',algorithm='HS256')

Questo genera un errore:

InvalidKeyError: The specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.

Sto cercando un'alternativa dove posso firmarlo con successo usando la chiave asimmetrica.

Grazie

    
posta Goron 07.06.2018 - 13:41
fonte

2 risposte

1

Utilizza una vecchia versione di pyjwt (0.4.3) in cui questa eccezione non è stata ancora implementata.

pip install pyjwt==0.4.3
    
risposta data 07.06.2018 - 16:38
fonte
0

Durante l'esecuzione del programma, riporta la riga che genera l'eccezione:

  File "/some-path/site-packages/jwt/algorithms.py", line 151, in prepare_key
    'The specified key is an asymmetric key or x509 certificate and'
jwt.exceptions.InvalidKeyError: The specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.

Quindi modifica il file /some-path/site-packages/jwt/algorithms.py attorno alla riga 151, in modo che non generi più l'eccezione.

Ad esempio, inserisci qui:

invalid_strings = []
    
risposta data 07.06.2018 - 16:04
fonte

Leggi altre domande sui tag