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)
機能選定(🧭 2): 「商品購入・注文」機能は金銭が絡む → 最優先でテスト
リクエスト観察(🛠️ 3-1〜2):
- カート追加時に price パラメータあり
- クライアント側 JS でしか金額を計算していない疑い
パラメータ改変(🧪 4):
POST /cart
productId=9&price=1
→ カートの合計が 1 ドルに
検証結果(⚠️ 6):
- サーバ(サーバ)側で再計算されず、低価格のまま購入完了
- マニュアルが示す「技術的に正しくても業務的に誤った結果」
結論
マニュアルだけで Lab の脆弱性を発見 → 悪用 → 解決まで一連の流れを再現できることを確認しました。 特に テスト項目例(price 改変) と Burp Repeater を使った再送 の記述が、Lab の脆弱性にそのまま適合しています。
Best regards, (^^ゞ