おさらいnote~第14回 クロスサイトスプリクティング~

こんばんは。テストなり何なりでしばらく更新できていませんでした。お久しぶりです。
今回は攻撃手法の一つであるクロスサイトスクリプティングをおさらいしていこうと思います。よろしくお願いします!

1.クロスサイトスクリプティングとは?

クロスサイトスクリプティングとは、動的にページを表示させる際の出力処理に何らかの問題があり、スプリクトを直接埋め込むことが可能になる脆弱性をついた攻撃のことを指します。
サイトを横断してスプリクトを実行させることが語源となっています。
この攻撃手法の影響としては、

  1. Cookie情報の搾取(セッションIDの窃取、個人情報の搾取)

  2. フォームへの入力内容の搾取

  3. 悪意のあるページに飛んだりなどの想定外のリクエストを送信してし

  4. Webページの改ざん(偽の文章や、画像の表示など)

が懸念されます。

2.挙動

今回はIDを入力するテキストボックスがあり、送信をするとその入力内容が表示されるものを想定して挙動を見てみます。

Cookieの情報を盗む
テキストボックス内に以下のように入力したらどうなるでしょうか。

<script>alert(document.cookie)</script>

JavaScriptのコードとなっています。
alert()とは、テキストをポップアップで表示させる機能です。
また、document.cookieは、Cookieを保存したり、参照できるものです。
以上の二つを組み合わせることによって、入力値がスプリクトとして認識れてしまいCookieをポップアップ表示させることができます。
以下が実行結果です。

XXS実行結果

以上がXSSの実行結果の一例となります。

3.他のXSSの種類

・反射型XSS
これは、Webアプリケーションのレスポンス内にリクエストに含まれるスクリプトに相当する文字列をスプリクトとして出力することで、XSSの脆弱性があるWebサイトへアクセスした際に、アクセス者がブラウザ上でスプリクトが実行されてしまうという手法です。
よく利用されるサイトとして、検索フォームや会員登録などが挙げられます。

・持続型/蓄積型XSS
これは、HTTPSリクエスト中に、攻撃コードが含まれるか否かにかかわらず、あるWeb上で持続的に動作するXSSです。
よく利用されるサイトとして、掲示板サイトやブログサイトなどで使われます。

4.対策

  1. タグに関連する特殊文字を他の文字列に置換する。

  2. URLの出力の際に、javascript:の形式などを禁止する。

  3. CookieへのHttpOnly属性を付与し、JavaScriptによるCookieへの値のアクセスを禁止する。

などが挙げられます。



この記事が気に入ったらサポートをしてみませんか?