SQLインジェクション

ウェブでは、ユーザーIDとパスワードをデータベースに保管し、入力された内容とチェックすることによりログイン認証をすることがしばしば行なわれます。ここでは、簡単な「ログイン認証画面」をサンプルとします。

脆弱性を有するログイン画面
https://www.w3lab.net/vulnerable/login.html
(サンプル表示停止中)
(別途ご案内済みのIDとパスワードでログインしてください)

想定している正常な流れは、入力されたユーザーIDとパスワードを、データベースに保管されている情報と比較し、合致していれば該当メンバー専用ページを戻すというものです。

ですが、このログインプログラムはセキュリティを考慮していないため、色々な攻撃を受ける可能性があります。例えば、「ユーザーID」欄に以下のデータを入 力して「ログイン」ボタンを押すと、メンバー全員のデータが画面表示されます。特殊なデータを付加することで想定外の動作をしてしまいます。付加するデー タによっては、データベースの書き換えや削除なども実行される危険があります。

攻撃例1 (SQLインジェクション)
https://www.w3lab.net/vulnerable/login.html
(サンプル表示停止中)

「ユーザーID:」欄に 「' or '1' = '1'; -- '」 と入力して「ログイン」実行すると、全ユーザーデータが表示されます。
(正規ユーザー情報 - ユーザーID: 1 , パスワード: 11111111)

攻撃例2 (SQLインジェクション)
https://www.w3lab.net/vulnerable/usersql.php?userid='+or+'1'='1';+--+'
(サンプル表示停止中)

アクセスすると、全ユーザーデータが表示されます。

攻撃例3 (XSS クロスサイトスクリプティング)
https://www.w3lab.net/vulnerable/login.html
(サンプル表示停止中)

特定のコードを付加してこのログインプログラムを呼び出すと、偽のログイン画面が表示されます。攻撃者は掲示板や、電子メールでこのリンクを広め、被害者を導きます。