Hello there, ('ω')ノ
脆弱性報告レポート
(PortSwigger Web Security Academy – Lab: Excessive trust in client-side controls)
概要(Summary) — 140 字以内
「/cart」エンドポイントが price パラメータをクライアント入力のまま信用しているため、任意価格を設定でき、Lightweight l33t leather jacket を本来より低額で購入できます。
再現手順(Steps) — 3〜5 行
- 新規シークレットウィンドウを開く。
- https://portswigger-lab-url/ にアクセスし、wiener:peter でログイン。
- 商品一覧で Lightweight l33t leather jacket をカートに追加。
- Burp で POST /cart リクエストを取得し、
price=1
に書き換えて送信。 - ブラウザを更新し、支払残高内で購入完了できることを確認。 ※所要時間:30 秒以内
結果(Result)
項目 | 値 |
---|---|
注文確定画面表示 | “Congratulations, your order has been placed!” |
購入額 | $1.00(実際は $1337.00) |
ユーザ残高 | 減少しない/微小減のみ |
主要リクエスト差分
POST /cart HTTP/1.1 Host: lab-url Cookie: session=… Content-Type: application/x-www-form-urlencoded - productId=9&redir=PRODUCTS&price=1337 + productId=9&redir=PRODUCTS&price=1
期待挙動(Expected) — 1 行
price 値はサーバ側で再計算し、クライアント値を無視する(例:価格改ざん時は HTTP 403)。
影響度(Impact) — ビジネス損害を含め記載
- 誰でも任意価格で商品購入 ⇒ 直接的な売上損失
- 同一論理欠陥が他商品の在庫管理にも影響する恐れ
- OWASP A06:2021 — 入出力データの整合性不備
- CWE-345 — 不完全な入力検証による信頼性の欠如
修正提案(Optional)
- カート処理時、productId を基にサーバ側で正規価格を再計算。
- 価格や数量など 信頼できないクライアント値を無視。
- 重要パラメータには HMAC 付きトークンを適用し改ざん検知。
- 単体テストに マイナス価格/異常値 入力ケースを追加。
PoC 添付物 — スクショ+テキスト 2 点セット
- Screenshot 1 : 改ざん後カート表示(価格 $1.00、赤枠強調)
- Screenshot 2 : 購入完了画面
- PoC-request.txt : 上記 Burp リクエスト全文
- PoC-diff.txt :
price
パラメータ差分(上記コードブロック)
(※動画は再生制限の可能性があるため省略)
追加検証(Retest プラン)
修正完了通知後、同手順で price 改ざんが 403 応答となることを確認予定。未修正の場合は新スクショを添付しリオープンします。
7 日後まで進捗をお待ちします。よろしくお願いいたします。
Best regards, (^^ゞ