図解サイバー攻撃 [Cyber Attack dot Net]

図解サイバー攻撃。サイバー攻撃・サイバーテロや情報漏洩などのサイバーセキュリティインシデントについて詳しくイラストで解説。

図解サイバーセキュリティ用語

SQLインジェクション攻撃とは

投稿日:

SQLインジェクション(SQL Injection)とは、アプリケーション(特にWebアプリケーション)がユーザ等からの入力値を適切にエスケープしないままその入力値をSQLコマンドとして実行する事で、アプリケーションが想定していないSQLコマンドが実行される事です。攻撃者はSQLインジェクション攻撃を行う事で、不正にSQLコマンドを実行してデータベースから情報を搾取したり、不正ログインを行う事ができます。

SQLインジェクションの仕組み

例えば、以下のようなログイン画面があったとします。

SQLインジェクションの仕組み

「ログインID」に入力された値は$userに、「パスワード」に入力された値は$passに格納されるとします。また、「ログイン」ボタンを実行すると、

が実行されて、その後ユーザに紐づくパスワードが合致していれば認証が通るプログラムがあったとします。攻撃者はtanakaというユーザIDでSQLインジェクションを利用してログインを試みるとします。SQLインジェクションを実行させるために、攻撃者は「パスワード」フィールドに以下のような文字列を入力します。

ログインID $user tanaka
パスワード $pass ‘ OR ‘A’ = ‘A

これを「ログイン」ボタンを実行した際のSQL文に代入してみましょう。

解釈すると、userID=tanakaであって、かつパスワードがブランクもしくはA=Aの場合のユーザ情報をSelectする、という意味になります。’A’=’A’は必ず真と判定されるので、パスワードが実際のパスワードと違ってもログイン認証が成功されてしまう事が発生します。

SQLインジェクション対策

実際は上記の例のような簡単なSQLインジェクションは成功しません。個人が作成したアプリケーションであれば別ですが、一般的なアプリケーションであれば既に対策済みです。またWAF(Webアプリケーションファイアウォール)を導入しれいれば複雑なSQLインジェクションも検知・ブロックが可能です。

一般的なSQLインジェクションの対策としては、アプリケーション開発でのセキュアなプログラミング手法を取り入れる事です。基本的な方法としてはSQLで利用する事ができる特殊文字をエスケープする事で、攻撃者がアプリケーションの入力フォームにSQLコマンドを入力したとしても無害な文字列に変換する事ができるようにします。

SQLインジェクションの疑似体験

SQLインジェクションを疑似体験するサイトは多数ありますが、明治大学の情報セキュリティ研究室が作成したWebアプリケーションの脆弱性の解説&体験ページが非常にわかり易いので紹介します。このサイトでは下の図のような脆弱な会員検索サービスがあります。SQLインジェクションを試すには「検索したい会員の名前を入れてください(脆弱)」の方でコマンドを試してみましょう。

sql injectionの例

一般的なSQLインジェクションとして、以下のSQL文を追加してみましょう。

上記のSQL文を「検索したい会員の名前を入れてください(脆弱)」に入力して、「検索」を実行します。

sqlインジェクションの例

これは、ユーザ名はxxxxもしくはA=A、という意味となります。A=Aは常に真ですので、SQL文が成立します。結果としては以下のような画面が表示されます。

SQLインジェクションの例

つまり、ユーザ情報が全くわからない状態でも、SQLインジェクションによって全てのユーザの情報を表示することができてしまいました。

明治大学のWebアプリケーションの脆弱性の解説&体験ページにはSQLインジェクション以外にもクロスサイトスクリプティング攻撃も試す事ができます。

広告

広告

-図解サイバーセキュリティ用語

関連記事

水飲み場攻撃 図解サイバーセキュリティ用語

水飲み場攻撃は標的型攻撃の1つですが、「標的」を装わないのが特徴です。通常の標的型攻撃はターゲットに対してしつこくフィッシングメールを送付したり、ターゲットのサーバをスキャンして脆弱性を発見して悪用を …

DNSキャッシュポイズニング 図解サイバーセキュリティ用語

DNSキャッシュポイズニングとはDNSサーバのキャッシュ情報に不正なIPとそのホスト名を挿入することによって、ユーザを不正なホスト名を持つウェブサイトに誘導する攻撃を指します。最終的な目的は、その誘導 …

職務分掌・職務分離とは?

職務分掌とは部署や役職ごとに必要な責任や権限を明確にして定義する事を言います。職務分掌と似たような言葉に職務分離があります。ほぼ同じ意味ですが、職務分掌は人事要素が強い一方で職務分離にはコンプライアン …

スパムメールの由来・語源とは?

スパムメールとは、宣伝目的のメールを無差別かつ大量に送信されるメールの事を言います。スパムメールは皆さんの個人のメールにも会社のメールにも送信されており、世界で送信されているメールの70%ほどがスパム …

脆弱性診断とペンテストの違い 図解サイバーセキュリティ用語

脆弱性スキャンとペンテストを同じと思っている方も多いと思いますが、脆弱性を発見する所までは同じでもその後のプロセスが違ってきます。脆弱性スキャンは脆弱性診断とも言われますが、脆弱性を発見する事を重点に …