いつまでたっても覚えない。メモしよう
仕組み
説明の前提条件
攻撃者のサイトのURL
http://cracker/index.html
index.htmlの内容
ターゲットサイト
http://target/
入力データの情報を、そのままブラウザに返してしまう。
例) 存在しないコンテンツa.htmlにアクセスがあった場合に、"a.htmlは存在しません"エラーを返す等(a.htmlは入力データで、エラーメッセージに利用してる)
攻撃の流れ
1. 騙される人が攻撃者のサイトにアクセス
2. リンクをクリック
3. ターゲットサイトに、
は存在しない。
ターゲットサイトがブラウザに、"ファイル名(スクリプト部分)は存在しません"的なエラーメッセージを返す。
このファイル名部分が、スクリプトのため、ブラウザで実行されてしまう。
ポイント
ターゲットサイトがユーザーからの入力情報をレスポンスデータとして出力する場合に影響あり。
ただ、これ自体は悪ではない。
スクリプト文字列が含まれてるのに、そのまま返すのが問題。
出力しないよう入力チェックしてないのが問題。
クエリ文字列にスクリプトを含めるのも可能。
追加
上記サイト非常に良い!
攻撃説明コードつき!
反射型クロスサイトスクリプティング(Reflected XSS)
→このページで説明した内容
格納型クロスサイトスクリプティング(Stored XSS)
→登録した内容がDBに格納され、何かしらの操作で、ユーザーに表示されるwebサイトが対象
登録時の入力値チェック、表示時のサニタイズに不備があり発生。
攻撃者は登録しておけばいいだけ。
DOM Based XSS
→javaスクリプト自体の不具合を悪用。スクリプトがブラウザに出力する機能の不具合を悪用し、悪意のある別のスクリプトを出力し、ブラウザに実行させる。
おそらく、元のスクリプトが引数を受け付けるのが前提で、不正な引数つきのリンクを何かしらの方法で実行させる。