web-dev-qa-db-ja.com

src属性内のDOMベースのXSS

次のJavaScriptコードがあります。

_var url= document.location.href;
document.write("<img src='?bla="+document.location.href+"'>");
_

追加時にコードを挿入できます。 ?b=a'onX=alert(1);'をURLに追加しますが、これは_'_がエンコードされないブラウザでのみ機能します。

私が考慮しなかった他の攻撃はありますか? src属性から抜け出す別の方法はありますか?

6
Noahnder

私が考慮しなかった他の攻撃はありますか?

単一引用符のフォームがエンコードされないようにするには、クエリ文字列の代わりにペイロードをパスに忍び込ませることができます。たとえば、脆弱なページがhttp://example.com/path/vulnerable.phpにある場合、次のようなことを試すことができます。

http://example.com/'onerror ='ペイロード/..%2Fpath/vulnerable.php

一部のサーバーはパスを暗黙的に解決するという考えです。最初のフォルダー'onerror='payloadが実際に存在するかどうかはチェックしませんが、すぐに親ディレクトリ(../)に戻り、リダイレクトを発行せずに残りのパスを解決します。 (スラッシュを%2fとしてURLエンコードすると、ブラウザーがパスを自動的に短縮できなくなります。)

Src属性から抜け出す別の方法はありますか?

いいえ、一致する引用符は この答え で説明されているように属性値からエスケープする唯一のチャンスです。

1
Arminius