web-dev-qa-db-ja.com

自己完結型XSS攻撃はどれほど悪いですか?

何人かはこの自己完結型XSSと呼ばれる攻撃に精通しているかもしれません。私は最近それについて偶然見つけました this それについての記事。では、現在のDOM要素にアクセスできない場合でも、この種の攻撃はどれほど深刻なのでしょうか。これを野生で見た人はいますか?

これはモバイルブラウザにも影響しますか?

別の便利な link

10
Ajith

自己完結型のXSSは、XSS自体と同じくらい悪いものです。これは、ペイロードを提供する方法の1つにすぎません。あなたの質問のリンクは2つの異なるベクトルを説明しています:

  1. データ:URL-すべての最新のブラウザー(モバイルを含む)は現在さまざまなコンテキストで データURL をサポートしています。もちろん、これにより、XSSペイロードを提供する別の手段が提供され、多くの古いアンチXSSフィルターをバイパスする可能性があります。最も一般的な方法は、例えばです。 _<iframe>_とsrc of data:text/html,<html><script>alert(/xss/)</script></html>を追加しますが、XSSのデータURLを使用する方法は他にもたくさんあります。 HTML5セキュリティチートシート で_data:_を検索すると、それらの一部を確認できます。

野生で使用されていますか?はい、たとえば Piwik XSS脆弱性 を悪用するために使用しました

  1. もう1つのリンクでは、XSSの「シェルのような」ペイロードの移植について説明しました。したがって、最終的なエクスプロイトを提供する代わりに、攻撃者はペイロードを挿入して、攻撃者からのさらなるコマンドを要求して実行します。与えられた例は:with(location)with(hash)eval(substring(1))ですが、類似したベクトルがたくさんあります。

つまり、要約すると、自己完結型のXSSは、別のXSSタイプ(保管されたXSSやDOMベースのXSSのような)ではなく、ペイロードがどのように見えるかの単なる方法です。 XSS自体よりも危険だとは言えません。

9

これは実際には古い問題です。 data URIを使用して、任意のメディアタイプをエンコードできます。単一のマークアップファイルに画像を埋め込むために使用するのはごく一般的なことです。

<img src="data:image/png;base64,ABCdefghIjKlmNoPqrSTuvwxyZ01d" />

これが危険な理由は、どのXSS攻撃でも攻撃者がdata URIを埋め込むことができる可能性があるためです。ユーザーがダウンロードした場合、ユーザーはあらゆる種類のファイルにアクセスしている可能性があります。さらに悪いことに、これは、ユーザーが信頼しているサイトから、ブラウザーまたは基になるレンダリングコンポーネントの他の脆弱性を悪用できるデータを埋め込む方法です。

たとえば、ボブのクレイジーディスカウントスプーンに、画像のsrcを操作できるXSS攻撃があったとします。

http://bobscrazydiscountspoons.com/foo/bar.php?xss=data:image/png;base64,ABCdefghIjKlmNoPqrSTuvwxyZ01d

ユーザーは、ブラウザのPNGレンダラーの脆弱性を悪用する厄介なペイロードを取得します。希望するクレイジーなディスカウントスプーンではありません。

もちろん、これは画像に限定されません。オブジェクトのソースまたはリンクに挿入できる場所ならどこでも使用できます。この種のデータを完全なHTMLインジェクション攻撃に挿入できることについても同様です。

6
Polynomial

では、現在のDOM要素にアクセスできない場合でも、この種の攻撃はどれほど深刻なのでしょうか。

リンクされた記事のやや限定された例よりも悪いです:FirefoxとOperaでは、data: URIdoは同じセキュリティコンテキストで動作しますそれらを含むドキュメントであり、ドメイン内のDOM要素にcanでアクセスできます。これは、Chrome/Safari、またはIE9(意図的にdata: URIを部分的にのみサポートしている)では発生しません。

HTMLドキュメントを含めることができる場合、これは従来のXSSとまったく同じリスクをもたらします。これは主にフレームとリンクですが、他の攻撃も可能です(*)。

例: http://jsbin.com/ukoqot/2/ -リンクとiframeを作成し、入力したHTMLドキュメントをdata:URLの両方に挿入します。リンクされた/フレーム化されたドキュメント内のコードは、jsbin.comのセキュリティコンテキストを取得し、jsbinインデックスページのソースコードを警告できるようにします。

したがって、data: URIはjavascript: URIと同じくらい危険であると見なし、WebアプリケーションがURIの送信を許可しているすべての場所でそれらを禁止する必要があります。 (実際には、http/httpsなどの限られた選択に固執するために、既知の適切なURIスキームをホワイトリストに登録するのが最善です。)

(*:例:攻撃者が送信したdata:text/html... URIを<img src>に挿入すると、画像は機能しません。ただし、ユーザーが右クリックビュー画像にだまされる可能性がある場合、 dリソースをHTMLとしてロードし、XSSを生成します。

1
bobince