- ManageEngine
- SIEM Log360
- 機能
- SQLインジェクションとクロスサイトスクリプティング:攻撃の流れと違い
SQLインジェクションとクロスサイトスクリプティング:攻撃の流れと違い
サイバー攻撃者は、攻撃の目的を達成し、組織や事業を麻痺させるために、悪用できる潜在的な脆弱性を常に狙っています。攻撃を仕掛ける際、フィッシング、ブルートフォース攻撃、マルウェア注入、ソーシャルエンジニアリング、Webハッキングなど、さまざまな戦術や手法が用いられます。
この記事では、ハッカーが頻繁に用いる代表的なWeb攻撃手法の2つ、SQLインジェクションとクロスサイトスクリプティング(XSS)を取り上げて解説します。
SQLインジェクション攻撃
SQLインジェクションは、Webアプリケーションを通じてデータベースに危害を加えることを意図した一般的な攻撃手法であり、今なお多くの組織が被害に遭っています。サイバー攻撃者は、SQLインジェクションを実行することで、組織のデータベースを不正に操作(侵入・改ざん・削除)できるようになります。データは、あらゆる組織に欠かせない価値のある資産であるため、データベースを狙った攻撃はビジネス全体に甚大な被害をもたらすリスクがあります。
保護すべき重要な機密データとしては、顧客情報、個人情報、財務記録などが挙げられます。
MITRE ATT&CK】によると、サイバー攻撃者は、組織のネットワークに侵入する足掛かりとして、外部に公開されているアプリケーションを悪用するケースがよくあります。一般的にWebサイトが狙われやすいですが、SQLなどのデータベースが標的になる場合もあります。
SQLインジェクション攻撃の流れ
SQLインジェクション攻撃は、以下の手順で実行されます。
- 攻撃者が標的となるデータベースを調査します。
- 攻撃者がWebページやアプリケーションの脆弱性を特定して悪用します。SQLの脆弱性の一例として、ユーザー入力の検証不足が挙げられます。この脆弱性を悪用することで、不正な内容を入力・送信できます。
- 悪意のあるSQLコードをさらに入力し、通常のSQLクエリに組み込みます。
- これにより、Webアプリケーションに対して不正かつ悪質な操作を行い、データベースを悪用できる状態を確保します。機密情報の抽出、セキュリティ制御の無効化、レコードの変更、データベースの削除などが可能になります。
クロスサイトスクリプティング
クロスサイトスクリプティング(XSS)攻撃は、ハッカーがWebアプリケーションを攻撃する際によく用いる代表的な手法の1つです。攻撃者は、ユーザーのブラウザやWebページにスクリプトを送り込み、マルウェアをダウンロードさせます。そして、そのユーザーに偽装し、データ窃取やセッションハイジャック、ユーザー設定の変更などを実行します。
MITRE ATT&CKによると、クロスサイトスクリプティングは、ネットワークに侵入するために攻撃者が用いるドライブバイダウンロード(Drive-by Compromise)攻撃の一種です。この手法の狙いは、ブラウザ上で動作する不正なスクリプトやコードを通じて、Webサイトの脆弱性を悪用することです。これにより、攻撃者は、内部ネットワークのシステムに侵入します。さらに、侵害されたWebサイトを使用して悪意のあるアプリケーションにユーザーを誘導し、アプリケーションアクセストークンを窃取します。アクセストークンは、クラウドやSaaSアプリケーションにアクセスする際に、APIリクエストとともに送信される認証情報であるため、攻撃者の標的になりやすいです。
XSS攻撃の流れ
XSS攻撃は、以下の手順で実行されます。
- 攻撃者がWebサイトの脆弱性を悪用します。たとえば、フォームを使用して、Webサイトのデータベースに悪意のあるスクリプトを注入します。
- 悪意のあるスクリプトが脆弱なWebサイトのデータベースに保存されます。
- ユーザーが、そのWebサイトからあるWebページにアクセスします。
- Webサイトのデータベースが、リクエストされたWebページに悪意のあるスクリプトを挿入して返信します。
- ユーザーが侵害されたWebサイトを訪問するか、またはWebページ上で何らかの操作を行うたびに、悪意のあるスクリプトが実行されます。
- 悪意のあるスクリプトが、ユーザーの個人データ(セッションCookieなど)を攻撃者のサーバーに送信します。
XSS攻撃の種類
XSSは、主に次の3種類に分類されます。
- 反射型XSS:クライアント側のユーザーは、攻撃者が仕込んだ悪意のあるスクリプト(ペイロード)を、通常のリクエストの一部としてサーバーに意図せず送信します。サーバーからユーザーに悪意のあるスクリプトがレスポンスとして送り返され、そのスクリプトが実行されます。悪意のあるスクリプトがサーバーからクライアントに反射されるため、反射型XSSと呼ばれています。
- 格納型XSS:攻撃者が脆弱なサーバーに格納したペイロードが、ユーザーのWebサイト訪問時に配信されます。悪意のあるスクリプトがWebアプリケーションに格納されるため、格納型XSSと呼ばれています。
- DOM Based XSS:DOM(Document Object Modelの略、Webページの要素をプログラムで変更・操作するためのインターフェース)の仕組みを悪用して、アプリケーションの脆弱性を突く攻撃手法です。
たとえば、URL経由でDOMに悪意のあるスクリプトが埋め込まれたとします。この場合、ユーザーがそのページ上で操作をしたり、そのURLを介してページに訪問したりすると、アプリケーションがDOMを更新して悪意のあるスクリプトが実行されます。
SQLインジェクションとXSS攻撃の違い
SQLインジェクションとXSS攻撃は、どちらもWebアプリケーションの脆弱性を狙った一般的な攻撃手法ですが、両者にはいくつかの重要な違いがあります。
SQLインジェクション攻撃 | クロスサイトスクリプティング(XSS)攻撃 | |
---|---|---|
定義 | 攻撃者がデータベースを中心に動作するアプリケーションを標的にし、特定の操作を行うことでユーザーや組織のデータベースを侵害する攻撃手法。 | 攻撃者がユーザーのブラウザ上で悪意のあるコードを実行し、そのブラウザを不正に操作する攻撃手法。 |
侵入経路 | SQL攻撃では、ドライブバイダウンロード攻撃によって、最初の侵入が行われます。 | XSS攻撃では、外部公開アプリケーションを悪用することで、最初の侵入が行われます。 |
手法 | 攻撃者は、Webフォームの入力フィールドに悪意のあるSQLクエリを入力します。 | 攻撃者は、ブラウザ上で動作する悪意のあるスクリプトをWebページやWebサイトに埋め込みます。 |
影響 | 攻撃が成功した場合、攻撃者はセキュリティ対策を迂回し、既存のデータベース内のデータを追加・削除・変更できます。 | 攻撃が成功した場合、セッションのハイジャック、認証情報の窃取、データの抽出、アカウントの乗っ取りが可能になります。 |
使用される言語 | SQLインジェクション攻撃では、SQLが最もよく使用されます。 | XSS攻撃では、JavaScriptが最もよく使用されます。 |
SQLインジェクションとクロスサイトスクリプティング攻撃は、依然として広く使われ続けている手法です。しかし、効果的な予防対策を導入し、継続的に監視・テストすることで、脅威を事前に無効化し、組織のWebサイトを攻撃から保護できます。