Hello there, ('ω')ノ
価格操作の脆弱性につながる高度な手動侵入テストを。
脆弱性:
支払いの改ざん
記事:
価格操作は、攻撃によって発注された注文の価格が。
変更される可能性があるパラメータ改ざんの脆弱性の一種で。
この脆弱性は、eコマースWebサイトでは一般的で。
今回は、vulnsite.comと呼ぶことに。
アプリケーションを調査して、すべてのAPIリクエストを分析した後に。
注文の価格が含まれている興味深いリクエストを見つけて。
下記が、価格操作に対して脆弱なリクエストで。
500ptで、$100相当のカードを購入できたので。
パラメータを変更するとサーバは「無効なリクエスト」で応答して。
最初にクラックしなければならなかったのは、「secret_key」で。
アンチパラメータ改ざんのトークンとして機能していることに気づいて。
ブラウザから生成されるので、それを生成するjsコードが必要で。
そこで、すべてのjsファイルで検索を開始すると。
トークンを生成するjsファイルと関数を見つけて。
上記の関数から、トークンが3つのステップで生成されることを確認して。
1.リクエスト本文は、JSON.Stringify関数を使用して文字列に変換されて。
2.次に、文字列はSHA256ハッシュに変換されて。
3.ハッシュは、Base64エンコーディングを介してエンコードされて。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
この時点で、自分のトークンを生成することができて。
サーバは、それに正しく応答したものの。
カードの価値を$200に変更作した後に。
サーバは、コード422(処理不能エンティティ)で応答したので。
再度、リクエストを確認してみると。
「current_exchange_rate=1」という興味深い別のパラメータを見つけて。
元の比率は、500ptで$100の値だったので、
「current_exchange_rate=0.5」に変更して。
カードの値を$100⇨$200に変更するとカードの値段をうまく操作できて。
結論:
リクエスト内のすべてのパラメータを常に微調整して。
トークンがクライアント側で生成された場合は。
いつでもそれを解読することができて。
Best regards, (^^ゞ