Hello there, ('ω')ノ
🧩 ラボ概要
このラボでは、ショッピングサイトの購入ワークフローに存在するビジネスロジックの脆弱性を突いて、通常よりも少ない金額で「Lightweight l33t leather jacket」を購入する方法を学びます。具体的には、クーポンコードの適用に関するロジックの欠陥を利用します。
🛠️ 手順と解説
1. ログインと初期クーポンの確認
- 提供された資格情報
wiener:peter
を使用してログインします。 - トップページに表示されているクーポンコード
NEWCUST5
を確認します。
2. ニュースレター登録による追加クーポンの取得
- ページ下部のニュースレター登録フォームに任意のメールアドレスを入力して登録します。
- 登録後、
SIGNUP30
という追加のクーポンコードが提供されます。
3. 商品のカートへの追加
- 「Lightweight l33t leather jacket」をカートに追加します。
4. クーポンコードの適用
- チェックアウトページに進み、
NEWCUST5
とSIGNUP30
の両方のクーポンコードを順番に適用します。 同じクーポンコードを連続して適用すると「既に適用済み」と表示されますが、2つのクーポンコードを交互に適用することで、制限を回避できます。
- 例:
NEWCUST5
→SIGNUP30
→NEWCUST5
→SIGNUP30
→ ...
- 例:
5. 合計金額の調整と購入の完了
- 上記の手順を繰り返し、合計金額が自身のストアクレジット以下になるまで割引を適用します。
- 合計金額が十分に下がったら、注文を確定してラボを完了します。
🔍 解説とポイント
- 脆弱性の本質: サーバー側でクーポンコードの適用回数や組み合わせに対する適切な検証が行われていないため、同じクーポンコードを交互に適用することで、想定以上の割引が適用されてしまいます。
- 攻撃者の視点: このようなロジックの欠陥は、攻撃者にとって金銭的な利益を得る手段となり得ます。また、ビジネスにとっては収益の損失やブランドイメージの低下につながる可能性があります。
🧠 学習のポイント
- サーバー側の検証の重要性: クライアント側での入力制御だけでなく、サーバー側でもビジネスルールの適用に関する厳密な検証を行う必要があります。
- ロジックの一貫性: クーポンコードの適用ロジックや割引条件が一貫して適用されているかを確認し、異常な適用が行われないように設計することが重要です。
- セキュリティテストの視点: このようなビジネスロジックの脆弱性は、一般的なセキュリティスキャナーでは検出が難しいため、手動でのテストやレビューが不可欠です。
Best regards, (^^ゞ