Shikata Ga Nai

Private? There is no such things.

Advanced Manual Penetration Testing Leading to Price Manipulation Vulnerabilityを訳してみた

Hello there, ('ω')ノ

 

価格操作の脆弱性につながる高度な手動侵入テストを。

 

脆弱性:

 支払いの改ざん

 

記事:

 https://blackbatsec.medium.com/bug-bounty-advanced-manual-penetration-testing-leading-to-price-manipulation-vulnerability-d935a3a5ddf6

 

価格操作は、攻撃によって発注された注文の価格が。

変更される可能性があるパラメータ改ざんの脆弱性の一種で。

この脆弱性は、eコマースWebサイトでは一般的で。

 

今回は、vulnsite.comと呼ぶことに。

アプリケーションを調査して、すべてのAPIリクエストを分析した後に。

注文の価格が含まれている興味深いリクエストを見つけて。

下記が、価格操作に対して脆弱なリクエストで。

 

f:id:ThisIsOne:20211216201819p:plain

 

500ptで、$100相当のカードを購入できたので。

パラメータを変更するとサーバは「無効なリクエスト」で応答して。

 

最初にクラックしなければならなかったのは、「secret_key」で。

アンチパラメータ改ざんのトークンとして機能していることに気づいて。

ブラウザから生成されるので、それを生成するjsコードが必要で。

そこで、すべてのjsファイルで検索を開始すると。

トークンを生成するjsファイルと関数を見つけて。

 

f:id:ThisIsOne:20211216201927p:plain

 

上記の関数から、トークンが3つのステップで生成されることを確認して。

1.リクエスト本文は、JSON.Stringify関数を使用して文字列に変換されて。

2.次に、文字列はSHA256ハッシュに変換されて。

3.ハッシュは、Base64エンコーディングを介してエンコードされて。

 

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

f:id:ThisIsOne:20211216204310p:plain

 

この時点で、自分のトークンを生成することができて。

サーバは、それに正しく応答したものの。

カードの価値を$200に変更作した後に。

サーバは、コード422(処理不能エンティティ)で応答したので。

再度、リクエストを確認してみると。

current_exchange_rate=1」という興味深い別のパラメータを見つけて。

元の比率は、500pt$100の値だったので、

current_exchange_rate=0.5」に変更して。

カードの値を$100$200に変更するとカードの値段をうまく操作できて。


結論:

    リクエスト内のすべてのパラメータを常に微調整して。

 トークンがクライアント側で生成された場合は。

 いつでもそれを解読することができて。

 

Best regards, (^^ゞ