Shikata Ga Nai

Private? There is no such things.

Burp Repeater を使ったリミットオーバーラン競合状態の検出と悪用方法

Hello there, ('ω')ノ

🔎 1. 攻撃対象の条件を確認しよう

まず、狙うべき対象は以下のような「1回限り」または「回数制限あり」のエンドポイントです:

  • 割引コードやギフトカードの使用
  • 商品のレビュー投稿
  • ログイン試行(回数制限あり)
  • CAPTCHAの送信
  • 資金の送金や引き出し

ポイント: 単に使い捨てではなく、「使うことで何かしらセキュリティ的に意味がある機能」である必要があります。


🧪 2. Burp Repeater でリクエストを複製

対象のリクエスト(例:割引コードの適用)をBurp Repeaterで開きます。

  1. 通常通り対象機能を実行してリクエストをキャプチャ。
  2. Repeater に送信して、同じリクエストを複数タブで複製します。

🚀 3. 短時間で一気に送信する

複製したリクエストをできるだけ素早く連続して送信します。

  • タブを素早く切り替えながら「Send」ボタンを連打。
  • または、Burp Turbo Intruder を使えば、同時リクエストをより自動化可能。

⏱ 4. タイミングの重要性

競合状態を成功させるには、「競合ウィンドウ(レースウィンドウ)」にタイミングが合うことが必要です。

  • 通常、このウィンドウは数ミリ秒〜数十ミリ秒。
  • すべてのリクエストを同時に送っても、サーバー側の負荷やネットワーク遅延によって実行順序は予測不能
  • 成功は確率的なものなので、何度も試すことが重要です。

✅ 5. 成功の判断ポイント

以下のような現象が確認できれば、競合状態による制限突破に成功しています:

  • 1回しか使えない割引コードが複数回適用された
  • レビューが複数回投稿できた
  • 残高以上の送金が複数通った
  • CAPTCHAが何度も通用した

🎯 攻略のコツまとめ

コツ 内容
同一リクエストを大量コピー 成功率アップ
手動連打より Turbo Intruder が確実 自動並列送信でレースウィンドウ狙いやすい
成功率は運もある 何度もトライして統計的に勝つ
ログを比較してレスポンスの違いを見る 成功した場合、レスポンスの中身が違う

🛡 対策方法の理解も重要!

開発者視点では、以下のような防御が考えられます:

  • トランザクション処理のアトミック性の確保
  • データベースレベルのロックや一意制約
  • リクエストの排他制御(ミューテックスなど)

Best regards, (^^ゞ