web-dev-qa-db-ja.com

data:// uri XSS-ラッパーの使用

HTMLデータURIをロードする方法はありますか:

data:text/html、<html> <svg/onload = confirm(1)> </ html>

このスキームでは:

データ://

私はこのペイロードが回っているのを見ました:

data:// text/javascript、alert(1)

しかし、最新のChrome/Firefoxではテキストプレーンとしてのみ表示されます

Mozzila Firefox ESR最新->プロンプトダウンロード

1
SecurityQuy

これを検索バーで直接実行しても機能しません。ソースコードからアクティブにする必要があります。

プロトコルハンドラの真ん中に改行を導入することで、ブラックリストがjavascript:およびdata:を探していることを確認できます。同様に他の悪意のある可能性のあるハンドラーは何も悪いものを検出せず、おそらく送信を許可します。この種の難読化を許可しないブラウザは、FirefoxとGeckoベースのユーザーエージェントだけです。改行の標準形式を使用することが許可されているため。

実際には、16進文字を使用してハンドラーを操作し、現在のペイロードの一部の文字で置き換えることができます。

このペイロードの "a"は実際には "d"と "t"の間の16進数でハードコードされ、コンテンツタイプtext/htmlを使用してそれを表示します。次のaも16進数です。

<a href="
        d
        &#x61
        t
        &#x61
        :text/html,
        <scr&#x69pt>alert('Gstuff')</scr&#x69pt>">click me</a>

上記のコードは、Safari 12.11でテストされた有効なXSSになります。

https://i.stack.imgur.com/aPJox.png

4
user211258