Parameter Pollution
パラメータ汚染
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
HTTPパラメータ汚染 (HPP) 概要
HTTPパラメータ汚染 (HPP) は、攻撃者がHTTPパラメータを操作して、ウェブアプリケーションの動作を意図しない方法で変更する技術です。この操作は、HTTPパラメータを追加、変更、または複製することによって行われます。これらの操作の影響はユーザーには直接見えませんが、サーバー側のアプリケーションの機能を大きく変更し、クライアント側に観察可能な影響を与えることがあります。
HTTPパラメータ汚染 (HPP) の例
銀行アプリケーションの取引URL:
元のURL:
https://www.victim.com/send/?from=accountA&to=accountB&amount=10000
追加の from
パラメータを挿入することによって:
操作されたURL:
https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC
取引が accountA
ではなく accountC
に誤って請求される可能性があり、HPPが取引やパスワードリセット、2FA設定、APIキーリクエストなどの他の機能を操作する可能性を示しています。
技術特有のパラメータ解析
パラメータが解析され、優先される方法は、基盤となるウェブ技術によって異なり、HPPがどのように悪用されるかに影響を与えます。
Wappalyzerのようなツールは、これらの技術とその解析動作を特定するのに役立ちます。
PHPとHPPの悪用
OTP操作ケース:
コンテキスト: ワンタイムパスワード (OTP) を必要とするログインメカニズムが悪用されました。
方法: Burp Suiteのようなツールを使用してOTPリクエストを傍受し、攻撃者はHTTPリクエスト内の
email
パラメータを複製しました。結果: 初期のメール用に意図されたOTPが、操作されたリクエストで指定された2番目のメールアドレスに送信されました。この欠陥により、意図されたセキュリティ対策を回避して不正アクセスが可能になりました。
このシナリオは、OTP生成のために最初の email
パラメータを処理したが、配信には最後のものを使用したアプリケーションのバックエンドの重大な見落としを強調しています。
APIキー操作ケース:
シナリオ: アプリケーションは、ユーザーがプロフィール設定ページを通じてAPIキーを更新できるようにしています。
攻撃ベクトル: 攻撃者は、POSTリクエストに追加の
api_key
パラメータを追加することで、APIキー更新機能の結果を操作できることを発見しました。技術: Burp Suiteのようなツールを利用して、攻撃者は1つの正当な
api_key
パラメータと1つの悪意のあるapi_key
パラメータを含むリクエストを作成します。サーバーは最後の出現のみを処理し、攻撃者が提供した値にAPIキーを更新します。結果: 攻撃者は被害者のAPI機能を制御し、プライベートデータに不正にアクセスまたは変更する可能性があります。
この例は、特にAPIキー管理のような重要な機能における安全なパラメータ処理の必要性をさらに強調しています。
パラメータ解析:Flask vs. PHP
ウェブ技術が重複したHTTPパラメータを処理する方法は異なり、HPP攻撃に対する脆弱性に影響を与えます:
Flask: クエリ文字列
a=1&a=2
のように、最初に遭遇したパラメータ値を採用し、最初のインスタンスを後続の重複よりも優先します。PHP (Apache HTTPサーバー上): 逆に、最後のパラメータ値を優先し、与えられた例では
a=2
を選択します。この動作は、攻撃者の操作されたパラメータを元のものよりも優先することによって、HPPの悪用を無意識に助長する可能性があります。
参考文献
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Last updated