Shikata Ga Nai

Private? There is no such things.

ビジネスロジックの脆弱性診断マニュアルとLab「High-level logic vulnerability」の検証

Hello there, ('ω')ノ

検証⼀覧:マニュアルで Lab「High-level logic vulnerability」を解けるか?

マニュアル節 想定される⼿順・観点 Lab での実際の挙動 適合結果
🎯 1. ビジネスロジックの脆弱性とは?
「数量や価格を負の数にして購入できるか」
“数量を不正に変更(負数)して合計を改ざんできるか” に着眼 quantity パラメータを負数にすると在庫がマイナス・合計金額が負値 ✔ 該当
🧭 2. チェックすべき機能
🛒 商品購入・注文/📦 返品・キャンセル機能
カート内数量操作・在庫整合性を重点チェック /cart リクエストで数量が自由に操作可能 ✔ 指摘通り
🛠️ 3. 診断方法(基本手順)
3. リクエスト内容を変更して再送信
Burp Intercept で quantity=-99 に改変し転送 カート数量が -99、合計が負値へ変化 ✔ 手順そのまま適用可
🧪 4. テスト項目とペイロード例
数量の異常入力 "qty": -5
ペイロード例を quantity=-10 に置換し送信 在庫減算・金額減算が成功 ✔ 実証済み
⚠️ 6. 注意点
負の数テスト/繰り返し実行で不自然挙動
負数を複数回適用・在庫が無限に減るか検証 追加操作で合計が残高未満に ✔ 有効
🧰 7. 補助ツール
Burp Suite Intercept/Re-peater
Intercept で改変 → Repeater で再試行 Lab 解決条件を満たす ✔ 一致

フロー再現(マニュアル → Lab)

  1. 機能選定(🧭 2)

    • 「商品購入・注文」+「返品に近い数量改変」機能は金銭・在庫が絡むため最優先。
  2. リクエスト観察(🛠️ 3-1〜2)

    • 安価商品を追加 → POST /cartquantity が含まれる。
    • 価格計算はクライアント依存の可能性大。
  3. パラメータ改変(🧪 4)

   POST /cart
   productId=1&quantity=-99

→ カート上で商品個数 -99、合計金額が負値。

  1. 合計を調整

    • 皮ジャン追加後、再度安価商品に負数数量を指定し合計を残高未満へ。
    • 購入完了 ⇒ Lab「Solved」。
  2. 検証結果(⚠️ 6)

    • サーバ側(サーバ)検証なく負数処理/合計マイナスが許容。
    • 「設計ミスによる業務的に誤った結果」の典型。

結論

ビジネスロジック診断マニュアルは、Lab High-level logic vulnerability でも

  • 脆弱性発見 → 悪用 → 解決

の全過程をそのままカバーできました。特に 数量の異常入力テストBurp Intercept を用いたリクエスト改変 の節が、Lab の核心手順に完全一致します。

Best regards, (^^ゞ