Challenges : IDOR et BOPLA
Objectif
Le barman d'API-ritif a laissé passer deux failles de l'OWASP Top 10 dans son API. À vous de les trouver, de les exploiter, puis de proposer une correction.
Ces techniques sont à utiliser uniquement sur API-ritif, qui est faite pour ça. Sur une API réelle sans autorisation écrite, c'est un délit (article 323-1 du Code pénal). Les programmes de bug bounty existent pour ceux que ça passionne.
Consignes
1 - IDOR : la commande du formateur
Le formateur a passé une commande au bar, avec un message pour le barman. Ce message contient un flag.
- Passez une commande et observez son identifiant.
- Relisez le contrat : que devrait répondre
GET /v1/orders/{order_id}pour une commande qui ne vous appartient pas ? - Vérifiez si l'API respecte vraiment son contrat…
Pas besoin de script : quelques requêtes curl bien choisies suffisent. Et si vous êtes tenté par une boucle, souvenez-vous du rate limiting.
2 - Bonus BOPLA : devenir barman
Le Sudo Rhum est réservé aux barmans. Un client ordinaire ne peut pas le commander… en théorie.
- Regardez votre profil avec
GET /v1/me. Quel champ décide de vos droits ? - D'après le contrat, quels champs peut-on modifier avec
PATCH /v1/me? Et en pratique ? - Commandez un Sudo Rhum.
3 - Corriger
Pour chaque faille, rédigez la correction, en pseudo-code ou dans votre langage :
- quelle vérification manque, et où la placer ?
- comment l'empêcher de façon systématique, pour toutes les routes ?
- quel test automatique aurait détecté le problème ?
4 - Le débat : 403 ou 404 ?
Une fois la faille IDOR corrigée, que doit répondre l'API quand on demande la commande de quelqu'un d'autre ?
403 Forbidden: c'est la vérité, la commande existe mais ne vous appartient pas.404 Not Found: on ne révèle même pas son existence.
Préparez vos arguments pour l'un et l'autre camp. Pensez à ce qu'un attaquant peut apprendre de chaque réponse.
Résultat attendu
- Le flag IDOR (et le Sudo Rhum, pour les plus rapides).
- Vos propositions de correction, présentées à l'oral.
- Votre position argumentée dans le débat 403 ou 404.