Sony
Sony
SQLインジェクションの様子

トピックス 2020.12.28 SQLインジェクションでウェブサービスを攻撃する方法〜実践編〜

前回の記事でご紹介したSQLインジェクションを利用したウェブサービスの攻撃手法について、今回は検証のための環境を構築して実際に攻撃者の手法を実践してみたいと思います。

この記事で紹介する内容は、独自に用意した検証環境において攻撃手法の検証およびインターネット利用における脅威を注意喚起するためのものであり、犯罪行為を推奨するものではありません。記事内で記載されている内容を実際のインターネット環境などに対して実施することは、違法行為として罰せられる可能性があります。

SQLインジェクションを利用してデータベースの情報を盗み取る様子

今回の説明では、SQLインジェクションに対して脆弱性のあるウェブサービスとして自分が利用するユーザーIDの入力を行うページを利用していきます。このサイトでは自分のユーザーIDを入力して送信ボタンを押しても特に何も起きません。

攻撃に利用するウェブサイト

そこでSQLインジェクションを行うことができるか確かめるために、SQLでユーザーIDの検索を行う際の条件を満たすように「1' or 'a'='a」と入力して送信ボタンを押してみましょう。

脆弱性の確認

すると、データベース内に登録されているユーザー情報を取得することができました。これによってこのサイトはSQLインジェクションで攻撃が可能なウェブサイトであることと同時に管理者と思われるユーザーの名前が分かります。

それでは続いて、データベース内のデータを取得するために「' union select @@hostname,database() #」と入力することでホスト名とデータベースの名前を取得します。

データベース名の検索

これによってデータベース名が「dvwa」となっていることが判明しました。ここからは、この名前をもとにデータベース内のデータを特定していきます。

まずはデータベース名の「dvwa」をヒントに「' union select table_name, null from information_schema.tables where table_schema = 'dvwa' #」と入力することでデータの保管場所(テーブル)を探ります。

テーブルの検索

この結果から「users」と「guestbook」という名前のテーブルが2つ存在していることが分かり、「users」テーブルの中に利用者の個人情報が保存されているのではないかと予測することができます。

それでは続いて、この2つのテーブルに格納されているデータの項目を特定していくために今度は「' union select table_name,column_name from information_schema.columns where table_schema = 'dvwa'#」と入力します。

データ項目の検索

これで「users」テーブルと「guestbook」テーブルに格納されているデータ項目を一覧表示させることができました。表示内容を見ると「users」テーブルの中に「password」の項目があることを確認できたため、ここに保存されているウェブサイトの管理者ユーザーのパスワードを表示させる方法を考えます。

ここでは「' union select user, password from dvwa.users where user = 'admin' #」と入力を行います。

パスワード情報の検索

これによって管理者ユーザーのパスワード情報として「5f4dcc3b5aa765d61d8327deb882cf99」が保管されていることが分かります。しかし、これは暗号化されている状態のため専用のツールを利用して復号作業を併せて行います。

暗号化されたパスワードの解読

結果として管理者ユーザーのパスワードが「password」となっていることを特定することができました。

攻撃者は一連の攻撃の中で取得したユーザー名とパスワードを利用してウェブサービスへ侵入し、あとは自由にこのウェブサービスを悪用することが可能となります。

次回予告

今回は検証環境を利用して、SQLインジェクションで特定のウェブサービスを攻撃する様子についてご紹介しました。

SQLインジェクションの攻撃被害に遭ってしまうと、個人情報やその他の重要な情報の流失、ウェブサービスの改ざんなど測り知れない被害が発生しています。

次回の記事では、SQLインジェクションの被害に遭わないための対策をご紹介しますので併せてご覧ください。

※次回「対策編」の記事公開は2020年12月30日(水)を予定しております。

【関連リンク】

SQLインジェクションでウェブサービスを攻撃する方法~導入編~
https://securitynews.so-net.ne.jp/topics/sec_20097.html

TEXT:セキュリティ通信 編集部
PHOTO:iStock

あなたの大切なパソコン・スマホを守ります!
世界が認める総合ウイルス対策ソフト

カスペルスキー

この記事を気にいったらいいね!しよう

セキュリティ通信の最新の話題をお届けします。

ページトップ