hacktricks/pentesting-web/parameter-pollution.md

7.6 KiB
Raw Blame History

パラメータ汚染

AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

以下からコピー: https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654

要約 :

HTTPパラメータ汚染HPPは、特定の悪意のあるタスクを達成するために、WebアプリケーションのHTTPパラメータを汚染することを意味します。これは、HTTPリクエスト中に受け取るパラメータをWebサイトがどのように扱うかを操作することを指します。これにより、Webサイトの振る舞いが意図したものから変わります。HTTPパラメータ汚染は単純な種類の攻撃ですが、効果的です。

パラメータを汚染すると、コードはサーバー側でのみ実行され、私たちには見えませんが、結果は画面上で見ることができます。その間のプロセスはブラックボックスです。

例えば、以下のようなURLがありますhttps://www.anybank.com/send これには3つのパラメータがあります

  1. from :
  2. to :
  3. amount :

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

これは通常のURLで、accountAからaccountBへの10000の取引を進めますが、もし同じパラメータ**“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技術がパラメータを解析する方法に依存します。Web技術を識別するには「Wappalyzer」を使用できます。以下は、いくつかの技術とそれらのパラメータ解析のスクリーンショットです。技術とそれらのパラメータ解析

Image for post

HPPの私の発見の一つを共有したいと思います。この脆弱性を使ってアカウントを乗っ取ることができました。

この脆弱性をどのように見つけたか?

  1. そのプログラムのログインページに行きました。ログインするためのOTPが必要でした。

OTPを送信

Image for post

2. メールアドレスを入力して「ワンタイムパスワードを送信」をクリックしました。

3. バープスイートを使用してリクエストを傍受し、同じパラメータを使用して別のメールアドレスを追加しましたテスト目的で2つのメールアドレスを作成しました。バープリクエスト

Image for post

4. shrey……@gmail.comのOTPを私の別のアカウントradhika…..@gmail.comに受け取りました。OTP

Image for post

5. OTPをコピーして、そのプログラムのログイン画面でshrey….@gmail.comに行き、このOTPを入力しました。そしてアカウントに入りました。アカウント乗っ取り

Image for post

ここで何が起こったかというと、バックエンドアプリケーションは最初の「email」パラメータの値を使用してOTPを生成し、2番目の「email」パラメータの値を使用して値を供給しました。つまり、shrey….@gmail.comのOTPがradhika….@gmail.comに送られました。

注記: 4番目のステップでradhika….@gmail.comにOTPを受け取った画像では、メッセージにHi Radhikaと書かれていたので、パラメータが汚染されていないと混乱しました。しかし、shrey….@gmail.comでOTPを試したところ、機能しました。

Flask & PHP

このライトアップでは、a=1&a=2のようなHTTPクエリがApache HTTPサーバー上で実行されるFlaskとPHPによって異なって解釈されることがわかります。Flaskでは、パラメータは1最初の出現になりますが、PHPでは2(最後の出現)になります。

AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法: