8.7 KiB
パラメータ汚染
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはテレグラムグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
コピー元:https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654
概要:
HTTPパラメータ汚染(HPP)は、特定の悪意のあるタスクを達成するために、ウェブアプリケーションのHTTPパラメータを汚染することを意味します。これは、ウェブサイトがHTTPリクエスト中に受け取ったパラメータの処理方法を操作することを指します。これにより、ウェブサイトの意図した動作が変更されます。HTTPパラメータ汚染は、単純な攻撃の一種ですが、効果的な攻撃です。
パラメータを汚染すると、コードはサーバーサイドでのみ実行され、私たちには見えませんが、結果は画面上で確認できます。その間のプロセスはブラックボックスです。
例えば、URL https://www.anybank.com/send には3つのパラメータがあります:
- from:
- to:
- amount:
URL:https://www.anybank.com/send/?from=accountA&to=accountB&amount=10000
これは、accountAからaccountBへの10000のトランザクションを行う通常のURLですが、もしもう1つの同じパラメータ「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など、多くの場所でこの脆弱性を試すことができます。
パラメータを操作すると、それぞれのウェブ技術がパラメータを解析する方法によって操作が異なります。ウェブ技術は「Wappalyzer」を使用して特定することができます。以下は、いくつかの技術とそのパラメータ解析のスクリーンショットです。技術とそのパラメータ解析
私は、この脆弱性を見つけた1つの事例を共有したいと思います。この脆弱性を利用してアカウントを乗っ取ることができました。
どのようにしてこの脆弱性を見つけましたか?
- そのプログラムのログインページに移動し、ログインのためにOTPを要求されました。
OTPを送信
-
メールアドレスを入力し、「ワンタイムパスワードを送信」をクリックしました。
-
Burp Suiteを使用してリクエストを傍受し、同じパラメータを使用して別のメールアドレスを追加しました(テスト目的で2つのメールアドレスを作成しました)。
Burpリクエスト
- 別のアカウント(radhika....@gmail.com)にshrey....@gmail.comのOTPが届きました。
OTP
- OTPをコピーして、そのプログラムのログイン画面でshrey....@gmail.comに移動し、このOTPを入力しました。すると、アカウントにログインできました。
アカウント乗っ取り
ここで起こったことは、バックエンドアプリケーションが最初の「email」パラメータの値を使用してOTPを生成し、2番目の「email」パラメータの値を使用して値を提供したため、shrey....@gmail.comのOTPがradhika....@gmail.comに送信されたということです。
**注意:**4番目のステップの画像では、radhika....@gmail.comにOTPが届いたというメッセージが表示されたため、混乱しました。したがって、パラメータが汚染されておらず、OTPがradhika....@gmail.comのためのものだと思いましたが、shrey....@gmail.comでOTPを試したところ、機能しました。
Flask & PHP
この解説では、FlaskとPHPが実行されているApache HTTP Server上で、a=1&a=2
というHTTPクエリがどのように解釈されるかが示されています。Flaskでは、パラメータは1
(最初の出現)になりますが、PHPでは2
(最後の出現)になります。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS & HackTricksグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterで🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。