web-dev-qa-db-ja.com

正規リンクのXSSは可能ですか?

サイトを定期的にテストしているときに、正規リンクタグの二重引用符を閉じて、onerror単純なjavascriptalert(1)を含む属性。

enter image description here

ソースコードに表示されますが、JavaScriptは実行されませんでした。

enter image description here

onloadイベントでも試しましたが、同じ結果が得られました。

攻撃者が異なるペイロードを使用してJavaScriptを実行する方法はありますか?

13
Rahul

同じトリックを使用hidden入力で使用できるように:

_<link rel="canonical" accesskey="X" onclick="alert(1)" />
_

Linuxでは、ALT + SHIFT + Xを使用してペイロードをトリガーします。私見では、問題を報告して修正するのに十分ですが、ユーザーとのやり取りはほとんどありません。

それ以外には、コードを追加せずに最新のブラウザでこれを利用する方法はないと思います。

linkタグはonload属性をサポートしますが、何かが正常にロードされた場合にのみ起動します。例:

_<link rel="stylesheet" href="http://localhost/test.css" onload="alert(1)">
_

インジェクションが_<link href="[user input]" rel="canonical">_の場合、http://somedomain/somecsssfile.css" rel="stylesheet" onload="alert(1)を使用してインジェクションできます。

WHATWG仕様では first 属性を使用する必要があると定義されているため、どのブラウザでも2番目の属性を使用することはまずないため、このケースでは機能しません。

他のすべてのイベント属性を試しましたが、通常のページの読み込みではトリガーされません。

これ ブログ投稿 は、JavaScriptを実行する式を使用するstyle属性を挿入することにより、IE7およびIE8で悪用される可能性があることを示しています。

要素を安全に処理しない追加のJavaScriptコードがある場合、これも悪用される可能性があります(興味深い例については here を参照してください)。

12
tim