Race conditions dépassant les limites

Limit overrun race conditions

Le flux d’achat contient une condition de course qui permet d’obtenir un prix non prévu lors du paiement.

Objectif

Acheter avec succès la Lightweight L33t Leather Jacket.

Données / prérequis

  • Identifiants : wiener:peter

  • Code promo (20%) : PROMO20

  • Crédit disponible : 50 $

  • Prix de la veste : 1300 $

Observation du comportement

  1. Ajouter la veste au panier.

  2. Appliquer le coupon PROMO20.

  3. Si on essaye d’appliquer le coupon une seconde fois “normalement”, l’application répond : coupon already applied.

La requête d’application du coupon ressemble à ceci (form URL-encoded) :

Exploitation manuelle (Burp Repeater)

  1. Envoyer la requête d’application du coupon vers Repeater.

  2. Créer un groupe dans Repeater.

  • Dupliquer l’onglet de la requête ~20 fois (Duplicate tab).

Envoyer les requêtes en parallèle.

Résultat constaté : la plupart des requêtes sont validées, et le total devient ~37 $, ce qui permet d’acheter malgré le prix initial (1300 $) et le crédit limité.

Exploitation “automatique” (Custom action Burp Suite Pro)

Le lab recommande d’utiliser Trigger race conditions (Burp Suite Professional) via une Custom action.

1) Ajouter le script (Bambda Library)

Aller dans Extensions → Bambda library, puis ajouter :

  • id: eb57d5bd-33e2-4a8c-bf51-bc81bd26613a

  • name: Probe for race condition

  • function: CUSTOM_ACTION

  • location: REPEATER

2) Lancer depuis Repeater

  1. Dans Repeater : Custom action → ajouter depuis les samples.

  • Charger la custom action créée.

Tester avec 30 requêtes.

on voit les codes de statut (pour 30 envois) et on peut déclencher plus facilement la condition de course

Mis à jour