phpMyAdminをハッキングしている記録と対策方法

サーバーのアクセスログを監視していて、phpMyAdminに対して攻撃(ハッキング)用のアクセスが見つかったので、公開しておきます。

config.inc.phpへのアクセス

phpMyAdminへの攻撃はセットアップ用の「setup.php」と環境設定を行う「config.inc.php」へのアクセスが特徴です。 代表的なログは以下のようなものです。

//phpmyadmin/config/config.inc.php?p=phpinfo();
//pma/config/config.inc.php?p=phpinfo();
//admin/config/config.inc.php?p=phpinfo();
//dbadmin/config/config.inc.php?p=phpinfo();
//mysql/config/config.inc.php?p=phpinfo();
//php-my-admin/config/config.inc.php?p=phpinfo();
//myadmin/config/config.inc.php?p=phpinfo();
//PHPMYADMIN/config/config.inc.php?p=phpinfo();
//phpMyAdmin/config/config.inc.php?p=phpinfo();
//p/m/a/config/config.inc.php?p=phpinfo();

GETメソッドのクエリーに「p=phpinfo()」を付加してアクセスしています。

どういったスクリプトによって攻撃が行われているか

これは検索していて見つけたのですが、公開すると危ないので伏せておきます。

具体的に攻撃を受けるバージョンは以下のように書いてあります。

  • phpMyAdmin 2.11.9.5以前の2.11.xのバージョン
  • phpMyAdmin 3.1.3.1以前の3.xのバージョン

攻撃の準備

事前にURLが集めてある

これは対策のしようがないんですが、攻撃側は有効そうなサイトのphpMyAdminのベースURLを集めておくようです。 これが攻撃のターゲットとしてテキストファイルに収められます。

phpMyAdmin/scripts/setup.phpにアクセス

これはsetup.phpにアクセスすることでそこにphpMyAdminが存在しているかどうかをチェックしています。 存在していればターゲットとしてロックオンされるわけです。

phpMyAdmin/scripts/setup.phpを汚染

setup.phpには即座に変数汚染用のPOSTデータが送られます。 これで第一の攻撃準備を行います。 この時点でMySQLをrootユーザーで制御するように変更されます。

config.inc.phpでphpinfo()が実行できるか確認する

さきほどの攻撃準備で、config.inc.phpに対してphpinfo()が実行できるかどうかをチェックします。

再度setup.phpを汚染

再びsetup.phpに対してPOSTデータを送り、設定をいじります。

攻撃準備完了

これで、config.inc.phpが完全にクラッキングされ、GETメソッドによるシェルコマンドの実行や任意のphp関数が簡単に実行可能になってしまいます。 よくセキュリティーホールのニュースなどで「任意のプログラムが実行可能となる」というのがまさにこのことです。

対策は?

以上のように、ターゲットとなるファイルはsetup.phpと、config.inc.phpです。 この2つを削除するなどしてアクセスさせないようにするのが有効です。

削除した上でphpMyAdminのディレクトリにはIPアドレス制限などを施して外部からのアクセスを遮断するとか、phpMyAdminのプログラムを最新版にアップデートするなどして回避するようにしてください。

このページをシェアする

2 件のコメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

2009-10-30