SOME - Same Origin Method Execution

Reading time: 6 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Same Origin Method Execution

ページ内で制限されたjavascriptを実行できる場合があります。例えば、 実行されるコールバック値を制御できる場合です。

その場合、最も良いことの一つは、DOMにアクセスして、見つけた敏感なアクションを呼び出すことです(ボタンをクリックするなど)。しかし、通常、この脆弱性はDOMに興味深いものがない小さなエンドポイントで見つかります。

これらのシナリオでは、この攻撃は非常に有用です。なぜなら、その目的は同じドメインの異なるページ内のDOMでの制限されたJS実行を悪用することだからです。

基本的な攻撃の流れは次のとおりです:

  • 悪用できるコールバックを見つける(潜在的に[\w\._]に制限される)。
  • 制限がなく、任意のJSを実行できる場合は、通常のXSSとしてこれを悪用できます。
  • 被害者に攻撃者が制御するページを開かせる
  • ページは別のウィンドウで自分自身を開く(新しいウィンドウは最初のウィンドウを参照する**opener**オブジェクトを持ちます)。
  • 最初のページは、興味深いDOMがあるページを読み込みます。
  • 二番目のページは、コールバックを悪用して脆弱なページを読み込み、openerオブジェクトを使用して最初のページでアクションを実行します(今や興味深いDOMを含んでいます)。

caution

最初のページが二番目のページを作成した後に新しいURLにアクセスしても、二番目のページのopenerオブジェクトは新しいDOM内の最初のページへの有効な参照のままです

さらに、二番目のページがopenerオブジェクトを使用できるためには、両方のページが同じオリジンに存在する必要があります。これが、この脆弱性を悪用するために、何らかの同じオリジンのXSSを見つける必要がある理由です

Exploitation

Example

  • 脆弱な例はhttps://www.someattack.com/Playground/で見つけることができます。
  • この例では、サーバーがjavascriptコードを生成しコールバックパラメータの内容に基づいてHTMLに追加しています:<script>opener.{callbacl_content}</script>。そのため、この例ではopenerの使用を明示的に示す必要はありません。
  • また、このCTFの解説も確認してください:https://ctftime.org/writeup/36068

References

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする