私はWebサイトを知っています。これを_website.com
_と呼びましょう。これには次の脆弱性があります。
iframeインジェクション:src属性を使用してiframeをインジェクトできますが、スクリプトを直接インジェクトすることはできません。これが_website.com/iframeinjection
_にあるとしましょう。
制御されないリダイレクトの脆弱性:_website.com/link?path=google.com
_は_google.com
_にリダイレクトします。
これら2つの脆弱性をつなぎ合わせて、iframeインジェクションを使用して、次のようなものを_website.com/iframeinjection
_に挿入しました。
_<iframe src="website.com/link?path=evil.com/index.html"></iframe>
_
Base-urlがwebsite.comであり、_evil.com/index.html
_からのこのスクリプトが_website.com/iframeinjection
_で実行されるため、これは同じOriginポリシーをバイパスします。
_<!DOCTYPE html>
<html>
<head></head>
<body>
<script>
alert(1);
alert(document.cookie);
</script
</body>
</html>
_
_website.com/iframeinjection
_にアクセスすると、alert(1)
は通常どおり1に警告しますが、JavaScriptが実行されている場合でも、alert(document.cookie)
は_website.com
_からCookieにアクセスできません。 iframeの外側。どうしてこれなの?これは正当な脆弱性ですか?これを使用してクッキーを盗む方法はありますか?
これは、base-urlがwebsite.comであり、evil.comからのスクリプトがwebsite.com/iframeinjectionで実行されるため、同じOriginポリシーをバイパスします。
これは正しくありません。オープンリダイレクトの脆弱性は、website.com
がevil.com
にリダイレクトすることを意味します。つまり、原点が変化します。スクリプトはevil.com
でホストされ、それが実行されるOriginでもあります。したがって、evil.com
ではなくwebsite.com
からCookieを読み取ろうとしています。私を信じていない場合は、コメントで tim の提案を実行してください。alert(document.location)
を追加すると、現在の場所がわかります。
ただし、ここに脆弱性がないという意味ではありません。オープンリダイレクトは、それ自体に問題があります。 「iframeインジェクション」がどのように機能するかは正確にはわかりませんが、おそらくそれも悪用可能ですが、この特定の方法ではありません。
少なくとも、iframeを使用してある種のなりすまし攻撃を行うのは簡単です。 evil.com
で訪問者にパスワードを入力させる。