今年のM-1の優勝者が全く予想できません。ko_ya346です。
引き続きハッキングをやっていきます。
今回はDVWAという学習用のwebアプリの導入と、SQLインジェクションによる攻撃を行いたいと思います。
DVWA導入
以下リンクから、kali linux仮想環境にzipファイルをダウンロードします。
DVWA - Damn Vulnerable Web Application
ターミナルから、zipファイルをrootに移動、解凍、権限変更を行います。
ついでにApacheとMySQLを起動しておきます。
cp /Downloads/DVWA-master.zip /root unzip DVWA-master.zip # 権限変更 cp -Rv /root/DVWA-master /var/www/html/ chmod -Rv 777 /var/www/html/DVWA-master/ # configファイルの名前を修正 cd /var/www/html/DVWA-master/config mv config.inc.php.dist config.inc.php # ApacheとMySQLを起動 cd service apache2 start service mysql start
firefoxを起動してhttp://localhost/DVWA-master/login.php
にアクセスします。
このような画面が表示されるはずです。
データベースを生成するために、再びターミナルで準備を行います。
# kali service mysql start mysql -u root -p >>Enter password: {kaliのパスワードを入力}
# MariaDB use mysql; # DB接続用アカウント登録(名前とパスワードはなんでもOK) GRANT ALL PRIVILEGES ON *.* TO 'ipusiron'@'localhost' IDENTIFIED BY 'password';
設定したらCtrl + cで終了します。
config.inc.phpを編集して、MySQLに接続できるようにします。
vi /var/www/html/DVWA-master/config/config.inc.php
下画像部分を先ほど設定した名前とパスワードに変更して保存します。
firefoxに戻り、ページ下部のCreate / Reset Database
を押します。
ボタンの下にこんな表示が出ているのを確認します。
loginページに移動して、
Username: admin password: password
と入力します。
Welcome to Damn Vulnerable Web Application!
と表示されていれば成功です!
さて、準備が完了したのでいよいよ攻撃を仕掛けていきましょう。
SQLインジェクション
SQLインジェクションはニュースで報道されるほどの超有名な攻撃方法です。
webアプリが想定しないSQLを実行させて、DBを不正に操作します。
早速やっていきましょう。
まず、メニューのDVWA Security
ボタンを押して、セキュリティレベルをLowにします。
メニューのSQL Injection
を選択すると、User IDの入力欄が出てきます。
ここで、いろいろな入力を入れて挙動を確認します。
存在しないユーザーの場合は何も表示されません。
この表示結果から「select ??,?? from ?? where id = <入力値>」というSQL文が実行されていそうです。
ここに、SQLインジェクションの常套句である1' OR 'a'='a
を入力します。
これでwhere文がTrueとなり、すべてのフィールドが表示されます。
続いてDBシステムのバージョンを取得します。
select文をUNIONで統合することで簡単に取得できます。
' union select version(), null #
ホスト名、DB名、ユーザー名を調べます。
もはやなんでもありですね。
'union select @@hostname,database() #
'union select user(),'A' #
おわりに
SQLインジェクションに脆弱性があると、このように好き勝手情報を奪われてしまうということが分かりました。
今回使用したアプリには他にも様々なツールが用意してあるので、別のツールへの攻撃も学習したいと思います。