Express Prototype Pollution Gadgets
WhiteIntelは、ダークウェブを活用した検索エンジンで、盗難マルウェアによる侵害を受けたかどうかを確認するための無料機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。
彼らのウェブサイトをチェックして、無料でエンジンを試すことができます:
XSSレスポンスを提供する
詳細については 元のリサーチを参照してください
JSONコンテンツタイプをHTMLに変更
JSONコンテンツタイプのレスポンスを使用し、JSONを反映するExpressアプリ内で:
XSSの場合、通常はJSONコンテンツタイプでは不可能です。ただし、プロトタイプ汚染を使用すると、Expressを混乱させてHTMLレスポンスを提供することができます。 この脆弱性は、アプリケーションが**res.send(obj)
**を使用し、application/jsonコンテンツタイプでボディパーサーを使用していることに依存しています。
res.send(obj)
**を使用し、application/jsonコンテンツタイプでボディパーサーを使用していることに依存しています。body
および_body
プロパティを汚染することで、ExpressがHTMLコンテンツタイプを提供し、_bodyプロパティを反映させ、保存されたXSSが発生する可能性があります。
UTF7のレンダリング
ExpressがUTF-7コンテンツをレンダリングすることが可能です:
安全なスキャン技術
JSON スペース
次の PP は、JSON 内の属性に余分なスペースを追加し、機能を壊さないようにします:
その後、反映されたJSONは次のようになります:
公開されたヘッダー
次のPPガジェットは、サーバーがHTTPヘッダーを送信するようにします:Access-Control-Expose_headers: foo
CORSモジュールのインストールが必要です
OPTIONSメソッド
次のペイロードを使用すると、OPTIONSレスポンスからメソッドを隠すことが可能です:
ステータス
以下のPPペイロードを使用して、返されるステータスコードを変更することが可能です:
エラー
プリミティブ(stringなど)を使用してプロトタイプに割り当てると、プロトタイプはオブジェクトである必要があるため、 no-op操作が生成されます。Object.prototype
にプロトタイプオブジェクトを割り当てようとすると、これは例外をスローします。これら2つの動作を使用して、プロトタイプ汚染が成功したかどうかを検出できます。
反射された値
アプリケーションがレスポンスにオブジェクトを含めるとき、__proto__
と並んで異常な名前の属性を作成すると興味深いかもしれません。特に、レスポンスに異常な属性だけが返される場合、これはアプリケーションの脆弱性を示している可能性があります:
また、Lodashのようなライブラリが使用されているシナリオでは、プロトタイプ汚染(PP)を介してプロパティを設定し、オブジェクト内で直接設定することで、別の診断アプローチが提供されます。応答からそのようなプロパティが省略されている場合、Lodashがマージする前に対象オブジェクト内のプロパティの存在を検証していることを示唆しています:
その他
ドットを許可
Expressには、クエリ文字列パラメータからオブジェクトを作成するオプションがあります。 これは、プロトタイプ汚染の脆弱性を悪用するためにバグチェーンで使用できます。
?foo.bar=baz
はNodeでオブジェクトを作成します。
参考文献
WhiteIntelは、ダークウェブを活用した検索エンジンであり、企業やその顧客が盗難マルウェアによって侵害されていないかをチェックするための無料機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックし、無料でエンジンを試すことができます:
Last updated