| name | exploiting-jwt-algorithm-confusion-attack |
| description | Exploits JWT algorithm confusion vulnerabilities where the server's token verification library accepts the algorithm specified in the JWT header rather than enforcing a fixed algorithm. The tester manipulates the alg header to switch from RS256 to HS256 (using the RSA public key as the HMAC secret), sets alg to none to bypass signature verification, or exploits kid/jku/x5u header injection to supply attacker-controlled keys. Use when working with exploiting jwt algorithm confusion attack. |
| domain | cybersecurity |
| tags | ["api-security","jwt","algorithm-confusion","token-forgery","cryptographic-attack"] |
| subdomain | api-security |
| version | 1.0.0 |
| author | oyi77 |
| license | Apache-2.0 |
| nist_csf | ["PR.PS-01","ID.RA-01","PR.DS-10","DE.CM-01"] |
Exploiting Jwt Algorithm Confusion Attack
Overview
Cybersecurity skill for exploiting jwt algorithm confusion attack. Follows industry best practices and security standards.
When to Use
Trigger phrases:
-
"exploiting jwt algorithm confusion attack"
-
"Exploits JWT algorithm confusion vulnerabilities where the server's token verifi"
-
Testing APIs that use RS256 (asymmetric) JWT tokens for authentication to check for algorithm downgrade to HS256
-
Assessing JWT implementations for alg:none bypass where the server skips signature verification
-
Evaluating JWT libraries for key confusion vulnerabilities where the public key is used as HMAC secret
-
Testing kid (Key ID), jku (JWK Set URL), and x5u (X.509 URL) header parameters for injection
-
Validating that the API server enforces a specific algorithm and does not trust the JWT header
Do not use without written authorization. JWT exploitation can lead to authentication bypass and account takeover.
When NOT to Use
- When you lack proper authorization for testing
- For production systems without change management
- When the task requires legal or compliance expertise beyond technical scope
Prerequisites
- Written authorization specifying the target API and JWT-based authentication in scope
- A valid JWT token from the target API (obtained through legitimate authentication)
- The server's RSA public key (obtainable from JWKS endpoint, TLS certificate, or public key endpoint)
- Python 3.10+ with
PyJWT, cryptography, and requests libraries
- jwt_tool for automated JWT attack testing
- Burp Suite with JWT Editor extension
Legal Notice: This skill is for authorized security testing and educational purposes only. Unauthorized use against systems you do not own or have written permission to test is illegal and may violate computer fraud laws.
Workflow
import re
IOC_PATTERNS = {
"ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",
"domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",
: ,
: ,
}
() -> :
{k: re.findall(v, text) k, v IOC_PATTERNS.items()}