XSS
Cross Site Scripting
脆弱性がある場合、Same-Origin内で任意のscriptの実行を可能にしてしまう
分類
攻撃者が仕込んだscriptを、被害者のブラウザ上で実行する
攻撃者がscriptをどこに仕込むかで、XSSの分類がなされる
具体例は各ページに書く
3種類ある
XSS体験サイト
イメージが湧く
チートシート
ちょっと古いらしい
脅威
偽情報の表示
JSを使って、偽の情報をHTML上に表示できる
フィッシング
JSを使って、偽のformを表示させ、ユーザーのプライベート情報を登録させ搾取できる
強制的なWebアプリケーションの操作
JSによって、強制的に画面上のページ遷移や操作を攻撃者が行える
Session IDの漏洩
機密情報の漏洩
JSからHTMLを読み取れるため、攻撃者はHTML内に含まれる氏名や住所などのユーザーの機密情報を盗み見ることができる
例えばユーザーがgmailのページを見ていれば、メールの内容を全て見れる
サイト制作者の対策
escape
table:escape
& &
< $lt;
>
" "
' '
信頼できない外部サイトからデータを取得しない
JavaScriptコードを動的に生成しない
自分ではこういう書き方はしないけど、最近見かけたmrsekut.icon
JSONのパースにはJSON.parse()を使う
サードパーティライブラリは常に最新版を利用する
同期XMLHttpRequestはなるべく使わない
アプリケーションごとにOriginを分ける
これググっても出てこないmrsekut.icon
サイト訪問者の対策
我々は常日頃からその辺のサイトにアクセスしまくっているが、
その時に我々が被害を被らないためにできることはないのか?
上のリンクに書いている具体例を見れば分かる通り、
「怪しいサイトにアクセスしない」や「(非現実的だが)JSを無効にする」をしていても、そのサイトに脆弱性があれば回避不能っぽい
あるとすれば、ブラウザでログイン状態を保たない、とかになるのかmrsekut.icon
XSS仕込まれたページを見ていると時に、元のサイトにログイン状態になっていなければ回避できる
参考
かなりのページ量が割かれて解説されている
具体例もある
未読箇所も多いmrsekut.icon
実際の事例や、被害者数のデータなど
具体例が多い
xssの入力値の具体例
Also Me: Spend all day making memes
https://gyazo.com/0f9841e7f8bd6081e8db0f6fd6e37b09