Hello there, ('ω')ノ
hashchangeイベントを使用したjQueryセレクタシンクのDOMXSSを。
このページにDOMベースのクロスサイトスクリプティングの脆弱性が含まれていて。
jQueryの$()セレクタ関数を使用して、タイトルがlocation.hashプロパティを介して。
渡される特定の投稿に自動スクロールして。
該当するjQueryのバージョンに関する脆弱性を検索してみると。
load()は、<script>タグの認識と削除に失敗するようで。
これにより、囲まれたスクリプトロジックが実行されるようで。
https://snyk.io/test/npm/jquery/1.8.2
JavaScriptのLocationオブジェクトのhashは、フラグメント識別子(#〜)を。
参照、変更するプロパティで。
<script>
$(window).on('hashchange', function(){
var post = $('section.blog-list h2:contains(' + decodeURIComponent(window.location.hash.slice(1)) + ')');
if (post) post.get(0).scrollIntoView();
});
</script>
エクスプロイトサーバで、下記を挿入して。
オンロードした際に#以降を読み込んで実行するようにして。
<iframe src="https://ac801f1e1e998312c0422b47006b005c.web-security-academy.net/#" onload="this.src+='<img src=x onerror=print()>'"></iframe>
エクスプロイトを保存して、[エクスプロイトの表示]をクリックすると。
オンロードされたのちに。
print()関数が呼び出されて印刷画面が表示されて。
エクスプロイトサーバに戻り、[被害者に配信]をクリックすると。
クリアできて。
Best regards, (^^ゞ