月間18,000PV達成! 収益は毎日発生中! 記事は毎日更新中! 今は農作業中のため東京にいるよ! ギランバレー症候群に関する情報を集めています

クロスサイト・スクリプティングをクソわかりやすく解説!

             
  • 2018.08.13
  • IT
クロスサイト・スクリプティングをクソわかりやすく解説!
Advertisement

 

クロスサイト・スクリプティング

セキュリティの知識がある方なら一度は聞いたことがあるかもしれません。

ただ、こういったセキュリティ用語は体験できる機会が少ないので、なかなか知識として定着しにくいものです。

ということで今回は、クロスサイト・スクリプティングについてクソわかりやすく解説したいと思います!

 

 

本記事は以下の書籍を参考にしています。セキュリティの勉強をしたい方にはおすすめです。この一冊で大体のことは理解できます。

 

 

 

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

通常、Webアプリケーションには外部からの入力などに応じて表示する箇所があり、この部分のHTML生成の実装に問題があると起きる脆弱性のことを、クロスサイト・スクリプティング(以下、XSS)と表現します。

CSSと表記しないのは、Cascading Style Sheetsと混同するためです。

 

 

XSSによるクッキー値の盗み出し

まず、以下のようなPHPがあるとします。

 

 

このPHPに対して、上記のURLが入力されたとします。

 

 

XSS_正常パターン

画面は正常に表示されますね。

 

 

では、次に上記のようなURLを入力してみます。

 

 

XSS_異常パターン

すると、クッキーにセットされたセッションIDが丸見えですね。

パラメータにスクリプトを指定することでJavaScriptが実行されました。

 

 

Advertisement

 

受動的攻撃により別人のクッキー値を盗み出す

さて、先ほどはクッキーのセッションIDを表示しましたが、これは攻撃者のセッションIDです。

実際には、攻撃者のセッションIDを表示しても意味がありません。

ということで、次は利用者を罠のあるサイトへ誘導します。

 

上記のようなHTMLがあるとします。

このHTMLの中に記載されているifame要素中のURLは悪意のあるページとします。

 

 

XSS_受動的攻撃_攻撃前

初期表示時です。

 

 

初期表示後、自動的に画面遷移します。これで、このサイト(ページ)に訪れた人はセッションIDを盗まれるという事になります。

今は画面に出てしまっていますが、このセッションIDをメールで攻撃者のメールサーバに送信すれば攻撃成功です。

 

 

最終的な画面(http://△△△)が上記のようなPHPの場合、メールで情報を受け取ることが可能です。

 

 

XSS_受動的攻撃_攻撃後(メール)

Webメールで確認すると、このような感じになります。

 

 

XSSへの対策

先ほどの例でも分かる通り、「<」や「’」などの文字を正しく扱う必要があります。一般的にはエスケープと呼ばれるものですね。

この「エスケープを正しく行う」ことこそ、XSSの対策につながります。

PHPの場合:htmlspecialchars関数

Perlの場合:escapeHTML関数

 

 

まとめ

今回はXSSについて解説しましたが、XSSはかなり複雑です。

対策すべきことが上記以外にもあるため、完全に対策することが難しくもあります。

しかし、どういった問題があるのか、そもそもXSSはどのようなものなのかを知ることで対策を練ることはできます。

まずは敵を知るということですね!

・XSSは、主にHTML生成の実装に問題がある際に生じる脆弱性のことを指す

・CSSと表記しないのは、Cascading Style Sheetsと混同するため

・一度盗まれた情報はメールなどで送信される恐れがある

 

PS.

セキュリティ問題が叫ばれる世の中になりましたが、実際どういった問題があり、どのように対策すべきかを詳しく理解している人は少ないように思います。

そういう意味では、やはり体感するということは大切なんだと思います。

具体的に書いてあるサイトもあまりないので、僕が共有できることはガンガン記事にしていきたいと思います。

Travelerを知らないの?