Hello there, ('ω')ノ
WebメッセージとJavaScriptURLを使用したDOMXSSを。
このラボでは、Webメッセージングでトリガーされる。
DOMベースのリダイレクトの脆弱性があって。
まずは、サイトにアクセスしてみると。
下記のようなJavascriptが確認できて。
どうもindexOf メソッドで。
urlの文字列にhttpの文字列が含まれるかを文字列の先頭から検索しているようで。
window.addEventListener('message', function(e) {
var url = e.data;
if (url.indexOf('http:') > -1 || url.indexOf('https:') > -1) {
location.href = url;
}
}, false);
エクスプロイトサーバに下記を挿入して。
<iframe src="https://ac4f1f141ef13dec80c1013d005d007a.web-security-academy.net/" onload="this.contentWindow.postMessage('javascript:alert(document.cookie)//http:','*')">
window.postMessage() は、クロスドメイン通信を可能にするためのメソッドで。
例えば、ポップアップとそれを表示したページ間だったり。
iframe とそれが埋め込まれたページの間での通信に使うことができて。
このスクリプトは、文字列「http:」とともに。
任意のJavaScript alert()ペイロードを含むWebメッセージを送信して。
2番目の引数は、すべてのtargetOriginがWebメッセージに許可されて。
iframeが読み込まれると。
postMessage()メソッドはJavaScriptペイロードをメインページに送信して。
イベントリスナーは「http:」文字列を見つけて。
ペイロードをlocation.hrefシンクに送信して。
ここで、alert()関数がクライアントのセッションのコンテキストで呼び出されて。
deliver exploit to victimをクリックすると。
クリアできた。
ちなみにエクスプロイトは以下のとおりで。
Best regards, (^^ゞ