Shikata Ga Nai

Private? There is no such things.

ビジネスロジックの脆弱性診断マニュアルとLab「Excessive trust in client-side controls」の検証

Hello there, ('ω')ノ

検証⼀覧:マニュアルで Lab「Excessive trust in client-side controls」を解けるか?

マニュアル節 想定される⼿順・観点 Lab での実際の挙動 ⽐較結果
🎯 1. ビジネスロジックの脆弱性とは?
「価格・数量を不正に変更できるか」
“価格を任意に変更して購入できるか” を念頭に置く price パラメータを書き換え可能 ✔ 手引き通りに該当
🧭 2. チェックすべき機能
🛒 商品購入・注文/💳 支払い処理
カート追加 → 決済フローで価格検証の甘さを確認 カート追加リクエストに価格を含み、サーバ検証なし ✔ 適切に指摘
🛠️ 3. 診断方法(基本手順)
3. リクエスト内容を変更して再送信
Burp Repeater で price=1 に改変して再送 価格が 1 ドルとしてカート反映 → 購入成功 ✔ 手順そのまま適用可
🧪 4. テスト項目とペイロード例
商品価格の変更 "price": 100 → 1
例通りのペイロードを送信 1 ドル購入が成立 ✔ 実証済み
⚠️ 6. 注意点
負の数・境界値テスト
1 桁の極端な値で挙動を確認 価格 0 や 1 でも購入できる ✔ 有効
🧰 7. 補助ツール
Burp Suite Repeater
Repeater で改変を繰り返し検証 “Solved” 条件を満たす ✔ 使い方一致

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

  1. 機能選定(🧭 2): 「商品購入・注文」機能は金銭が絡む → 最優先でテスト

  2. リクエスト観察(🛠️ 3-1〜2):

    • カート追加時に price パラメータあり
    • クライアント側 JS でしか金額を計算していない疑い
  3. パラメータ改変(🧪 4):

   POST /cart
   productId=9&price=1

→ カートの合計が 1 ドルに

  1. 検証結果(⚠️ 6):

    • サーバ(サーバ)側で再計算されず、低価格のまま購入完了
    • マニュアルが示す「技術的に正しくても業務的に誤った結果」

結論

マニュアルだけで Lab の脆弱性を発見 → 悪用 → 解決まで一連の流れを再現できることを確認しました。 特に テスト項目例(price 改変)Burp Repeater を使った再送 の記述が、Lab の脆弱性にそのまま適合しています。

Best regards, (^^ゞ