SOME - Same Origin Method Execution

Support HackTricks

Same Origin Method Execution

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

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

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

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

  • 悪用できるコールバックを見つける([\w\._]に制限される可能性があります)。

  • 制限がなく、任意のJSを実行できる場合は、通常のXSSとしてこれを悪用できます。

  • 被害者に攻撃者が制御するページを開かせる

  • ページは別のウィンドウで自分自身を開く(新しいウィンドウは最初のウィンドウを参照する**opener**オブジェクトを持ちます)。

  • 最初のページは、興味深いDOMがあるページを読み込みます。

  • 二番目のページは、コールバックを悪用して脆弱なページを読み込みopenerオブジェクトを使用して最初のページでアクションを実行します(今や興味深いDOMを含んでいます)。

最初のページが二番目のページを作成した後に新しい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

Support HackTricks

Last updated