Que fait api-auth-and-jwt-abuse ?
Playbook d'authentification API et d'abus JWT. À utiliser lors du test des jetons Bearer, des clés API, de la confiance des revendications (claims), de l'usurpation d'en-têtes, des limites de débit et des faiblesses des limites d'authentification API.
Vue d'ensemble
Ce playbook fournit une approche structurée pour tester et exploiter les faiblesses d'authentification et d'autorisation dans les API RESTful et GraphQL. Il couvre les techniques courantes d'abus JWT, de falsification d'en-têtes et de contournement des limites d'authentification.
Cas d'utilisation
- Test de jetons Bearer: Vérification de la validité, de l'expiration et du niveau de privilège des jetons.
- Attaques sur les clés API: Recherche de clés exposées, de clés faibles ou de clés avec des permissions excessives.
- Exploitation de la confiance des claims JWT: Modification des revendications (
sub,role,admin, etc.) pour élever les privilèges. - Usurpation d'en-têtes: Injection d'en-têtes comme
X-Forwarded-For,Authorization, ouCookiepour contourner l'authentification. - Bypass de limites de débit: Contournement des mécanismes de limitation de débit par rotation d'IP, de jetons ou d'en-têtes.
- Faiblesses des limites d'authentification: Détection des endpoints sans vérification d'authentification ou avec des contrôles insuffisants.
Techniques incluses
-
Abus de JWT
- Modification de l'algorithme (
alg: none,alg: HS256avec secret public) - Attaque par clé publique asymétrique (confusion de clé)
- Injection de claims (
admin: true,role: superuser) - Rejeu de jetons expirés
- Attaque par force brute sur le secret JWT
- Modification de l'algorithme (
-
Falsification d'en-têtes
- Injection de
X-Forwarded-Forpour usurper l'IP - Double en-tête
Authorization - En-tête
Authorizationvide ou malformé - Utilisation de caractères d'encodage (URL, Base64) pour contourner les filtres
- Injection de
-
Contournement de limites d'authentification
- Rotation rapide de jetons via des proxies
- Utilisation de jetons multiples en parallèle
- Attaque par dictionnaire sur les endpoints de connexion
-
Test des endpoints non authentifiés
- Accès à des endpoints sans token
- Accès avec un token invalide ou expiré
- Accès avec des permissions insuffisantes
Exemples de commandes
# Tester la présence d'endpoints sans authentification
curl -s -o /dev/null -w "%{http_code}" http://api.example.com/admin/users
# Modifier un JWT avec un algorithme 'none'
yak jwt -token "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dQw4w9WgXcQ" -alg none
Exemple de script Yaklang
# Test d'abus de JWT avec Yaklang
jwt_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0"
for claim in ["admin:true", "role:superuser"] {
modified_token = jwt.modify(jwt_token, claim)
response = http.Post("https://api.example.com/admin", {
"headers": {"Authorization": "Bearer " + modified_token}
})
if response.StatusCode == 200 {
println("Claim abusé avec succès : %s", claim)
}
}
Plateformes supportées
- Yaklang (YakScript)
- cURL
- Burp Suite
- Postman
- Python (scripts personnalisés)
Configuration
Aucune configuration spéciale requise, mais assurez-vous d'avoir accès à une instance de test de l'API cible.
Avertissement
Ce playbook est destiné à des fins éducatives et de test de sécurité autorisé uniquement. N'utilisez pas ces techniques sur des systèmes sans autorisation explicite.