pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

クロスサイトスクリプティングについてメモ

いつまでたっても覚えない。メモしよう
 

仕組み

説明の前提条件

 
攻撃者のサイトのURL
http://cracker/index.html
 
index.htmlの内容

 
ターゲットサイト
http://target/
入力データの情報を、そのままブラウザに返してしまう。
例) 存在しないコンテンツa.htmlにアクセスがあった場合に、"a.htmlは存在しません"エラーを返す等(a.htmlは入力データで、エラーメッセージに利用してる)
 
 

攻撃の流れ

 
1. 騙される人が攻撃者のサイトにアクセス

2. リンクをクリック

3. ターゲットサイトに、

は存在しない。
ターゲットサイトがブラウザに、"ファイル名(スクリプト部分)は存在しません"的なエラーメッセージを返す。
このファイル名部分が、スクリプトのため、ブラウザで実行されてしまう。
  

ポイント

ターゲットサイトがユーザーからの入力情報をレスポンスデータとして出力する場合に影響あり。
ただ、これ自体は悪ではない。
スクリプト文字列が含まれてるのに、そのまま返すのが問題。
出力しないよう入力チェックしてないのが問題。
クエリ文字列にスクリプトを含めるのも可能。

追加

https://sites.google.com/site/ryouheivision/home/qing-baosekyuriti/kurosusaitosukuriputingu-xss-no-zhong-lei

上記サイト非常に良い!
攻撃説明コードつき!

反射型クロスサイトスクリプティング(Reflected XSS)
→このページで説明した内容

格納型クロスサイトスクリプティング(Stored XSS)
→登録した内容がDBに格納され、何かしらの操作で、ユーザーに表示されるwebサイトが対象

登録時の入力値チェック、表示時のサニタイズに不備があり発生。

攻撃者は登録しておけばいいだけ。

DOM Based XSS
javaスクリプト自体の不具合を悪用。スクリプトがブラウザに出力する機能の不具合を悪用し、悪意のある別のスクリプトを出力し、ブラウザに実行させる。
おそらく、元のスクリプトが引数を受け付けるのが前提で、不正な引数つきのリンクを何かしらの方法で実行させる。