クロスサイト・スクリプティング(XSS)の解説と実演

2021/10/06 03:35

Webページの出力処理が不完全な時に、そこにスクリプト等を埋め込む事でアクセスユーザに不利益を与える「クロスサイト・スクリプティング(XSS)」について、仕組みの解説と悪意のある人のサーバへ情報を実際に奪取する実演をしています。2本合わせて30分程度の動画です。

クロスサイト・スクリプティング(XSS)とは

Webページの出力処理が不完全な時に、そこにスクリプト等を埋め込む事による攻撃手法のことです。アクセスしたユーザのセッションで攻撃スクリプトを起動し、アクセスユーザに不利益を与えます。

実演の内容

実演としては、悪意のある人のサーバに対して情報を送信するストーリーで、以下の2パターンで正規ユーザの情報を奪取しています。悪意のある人が不正なスクリプトをDBに格納する格納型XSSを行っています。

Cookieの情報を取得してセッションIDを奪取する

動画では詳しくお伝えしませんでしたが、この場合Cookieの設定でhttpOnlyが無効になっていることも合わせて脆弱な状況が発生します。

document.cookieの中に入っている情報を取得して中に含まれるセッションIDを奪取する方法です。セッションIDを手に入れればセッション・ハイジャックによって正規ユーザになりすましてシステムにアクセスすることができます。

ユーザセッション中で大事な画面に表示される情報を奪取する

スクリプトを動作させる状況が揃った際には、悪意のあるJavaScriptはアクセスユーザのセッションで動作します。そのことを利用して個人情報のような大事な情報が表示する画面へリクエストを送り、取得したレスポンスを奪取する方法です。

解説に利用したコード ~ Sample code ~

https://github.com/CircleAround/simple-koa-bbs/pull/6

追加的な情報

今回の手法以外にも「JavaScriptのDOM操作によって偽のページを表示させ、そこにユーザの個人情報を直接入力させて送信する」などの手法もあり、注意が必要です。

JavaScriptでDOM操作を行って画面を構築するサービスが増えてきましたが、例えばリクエストパラメータに入っている文字列をそのままDOMに埋め込んで画面構築に利用するなどする時にも、今回と同様の危険性があります。サーバサイドの実装の不備だけが脆弱性を生むわけではない為、注意が必要です。

参考

以下のIPAの資料は大変網羅的なので是非一度目を通してみてください。今回ですと「1.5 クロスサイト・スクリプティング」の内容が該当します。

安全なウェブサイトの作り方

この記事を書いた人

佐藤 正志

サークルアラウンド株式会社 代表取締役