Skip to main content

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.