JWT algorithms can use a server’s public key if alg
is HS256
. If the public half of the keypair used to sign the JWT is available somehow (for example, if it’s been re-used as the server’s HTTPS certificate), then we can harvest it and use it to forge new JWTs.
The base64-encoded version of {"typ":"JWT","alg":"HS256"}
is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9Cg
.
Use the following to generate a signature with the above $HEADER
and the PEM-formatted $PUBLIC_KEY_FILE
half of the public/private key to validate the JWTs (when alg
is RS256
):