Hello there, ('ω')ノ
奇妙な価格改ざんの脆弱性を。
脆弱性:
支払いの改ざん
論理的な欠陥
記事:
https://medium.com/@vflexo/a-weird-price-tampering-vulnerability-1251dfe8d2a1
今回は、さまざまな製品やサービスが掲載されているサイトを見つけて
ランダムに1つの商品を選んで購入してみることに。
Burp Suiteをオンにして、商品をカートに追加するリクエストを傍受してみると。
製品の価格は、$30で。
キャプチャしたPOSTリクエストで価格パラメータを見つけて。
$30の値を$1などの別の値に変更して、価格の改ざんをテストすると。
POSTリクエストには、値「30」のそのようなパラメータはなくて。
試行錯誤の末、「AVeryLongParameter」という値が334436のように。
設定されているパラメータを見つけて。
そして、このパラメータが商品の価格に関与していることがわかって。
これはAVeryLongParameter=334436で。
AVeryLongParameterの値を334436から1に置き換えることに。
AVeryLongParameter=1を設定し、POSTリクエストを転送すると。
$30相当のアイテムが$9987の価格でカートに追加されて。
パラメータ値が価格の原因であると確信して。
また、AVeryLongParameterの値には、価格を一意に識別する数値識別子が。
含まれていることもわかって。
例えば:
AVeryLongParameter=334436→$30
AVeryLongParameter=1→$9987
$30相当の製品を「ProductS」と呼ぶことに。
テスト用に別の製品を選んで。
これは$800の価格で。
これを「ProductC」と呼ぶことに。
「ProductC」の購入を進めると。
Burp Suiteでプロキシをオンにして、カートに「ProductC」を追加する。
リクエストを傍受して。
そのPOSTリクエストでパラメータ「AVeryLongParameter」を見つけ。
その値は334460に設定されて。
つまり、AVeryLongParameter=334460→$800
すぐに334436から334460を交換し、リクエストを転送して。
AVeryLongParameter=334436→$30なので、ブラウザでカートをチェックしたところ。
「Product C」が追加されて、価格は「$30」で。
「ProductC」の価格を$800から$30に変更できて。
最後まで購入プロセスを実行すると。
支払いプロセスアプリでも$30と表示されていて。
すべてのページで同じ$30の価格で。
Best regards, (^^ゞ