shikata ga nai

Private? There is no such things.

HTTP Parameter Pollution - It’s Contaminatedを訳してみた

Hello there, ('ω')ノ

 

HTTPパラメータの汚染を。

 

脆弱性:

 HTTPパラメータの汚染

 

記事:

 https://shahjerry33.medium.com/http-parameter-pollution-its-contaminated-85edc0805654

 

概要 :

HTTPパラメータ汚染(HPP)は、特定の悪意のあるタスクを実行するために。

WebアプリケーションのHTTPパラメータを汚染することを意味して。

これは、WebサイトがHTTP要求中に受信したパラメータを。

どのように処理するかを操作することを指して。

Webサイトの動作を意図したものから変更して。


HTTPパラメータの汚染は単純な種類の攻撃ですが、効果的な攻撃で。

パラメータを汚染すると、コードは使用できないサーバ側でのみ実行されるものの。

結果は画面に表示されて。

その間のプロセスはブラックボックスで。

たとえば、次の3つのパラメータを持つURLがあります。

 https://www.anybank.com/send

     from :
     to :
     amount :

 

URL:

 https://www.anybank.com/send/?from=accountA&to=accountB&amount=10000

 

これは、accountAからaccountBに10000のトランザクションを処理するURLで。

別の同じパラメータ「from :」を追加するとどうなかというと。

 

URL:

 https://www.anybank.com/send/?from=accountA&to=accountB&amount=10000&from=accountC

 

このURLが処理されると、10000のトランザクションが実行されて。

accountAではなくaccountCで実行されて。


これは、HTTPパラメータ汚染攻撃でパラメータを操作する方法で。

この脆弱性の範囲は、GETリクエストだけに限定されず。

POSTベースのリクエストに対してこの攻撃を実行することもできて。

この脆弱性は、パスワードの変更、2FA、コメント、プロフィール写真の。

アップロード、APIキーが渡されるパラメータ、OTPなどの。

多くの場所で試すことができて。

 

パラメータを操作する場合、その操作は各Webテクノロジーが。

パラメータを解析する方法によって異なるので。

「Wappalyzer」を使用してWebテクノロジーを識別できて。

 https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/

 

f:id:ThisIsOne:20211106181959p:plain


以下は、いくつかのテクノロジーとそのパラメータ解析のスクリーンショットで。

 

f:id:ThisIsOne:20211106181910p:plain

 

この脆弱性を使用してアカウントを引き継いだHPPの発見を共有することに。

この脆弱性を見つけるにはどうすればよいかというと。

 

1.そのプログラムのログインページにアクセスすると。

 ログイン用のOTPが要求されて。

 

2.メール(shrey@gmail.com)を入力して。

 「ワンタイムパスワードを送信」をクリックして。

 

f:id:ThisIsOne:20211106182827p:plain

 

3.Burp Suiteを使用してリクエストをインターセプトして。

 同じパラメータを使用して別のメールを追加することに。

 (テスト目的で、2通のメールを作成して)

 

f:id:ThisIsOne:20211106183120p:plain

 

4.別のアカウントのradhika@gmail.comshrey@gmail.comOTPを受け取って。

 

f:id:ThisIsOne:20211106183211p:plain

 

5.OTPをコピーして、そのプログラムのログイン画面で。

 shrey@gmail.comにアクセスして、このOTPを入力して。

 アカウントに登録することに。

 

f:id:ThisIsOne:20211106183237p:plain

 

つまり、ここで起こったことは、バックエンドアプリケーションが。

最初の「email」パラメータの値を取得してOTPを生成して。

2番目の「email」パラメータの値を使用して値を提供したことで。

これは、shrey@gmail.comOTPが。

radhika@gmail.comに送信されたことを意味して。

 

注:

radhika@gmail.comへのOTPを受け取った4番目のステップの画像では。

メッセージに『Hi Radhika』と書かれているため、混乱して。

そのため、パラメータは汚染されておらず。

OTPradhika@gmail.com用であると思ったものの。

shrey@gmail.comOTPを試したところ機能して。

 

緩和 :

この種の攻撃を防ぐために、適切な入力検証を実行する必要があって。

 

Best regards, (^^ゞ

ひとりひとりの自覚をもった行動で、医療従事者と保健所職員を助けよう。

f:id:ThisIsOne:20200404115457p:plain