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

Как происходит заражение

Вирус попадает с компьютера, на котором хранились пароли доступа фтп или хранилась почта с паролями от фтп или ssh. Заражение локальной машины происходит стандартным способом через интернет (загрузка файлов, зараженные сайты). Вирус крадет пароли и отсылает их владельцу вируса, далее пароли попадают в базу, вирус-бот заходит на ваш фтп и портит файлы, в которых прописывает строку загрузки себя для других пользователей. Вирус может попасть при краже или подбора паролей к административной панели ИМ. При отключенном режиме запрете использования php кода в шаблонах злоумышленник может внедрить свой код в описание страниц и шаблоны.

Какие файлы заражаются

  1. Заражаются все файлы с именем INDEX (index.php)
  2. Заражаются все файлы JS (phpshop.js и т.п.)
  3. Заражается файл .htaccess
  4. Заражается файл phpshop/inc/footer.inc.php Если на сайте появляются ссылки на сторонние ресурсы, то в него прописывается подключение через функцию include или include_once. Следует удалить эту строку.
  5. Заражается файлы phpshop/templates/имя_шаблона/main/index.tpl (shop.tpl). В конец этих файлов прописывается код @php eval(....); php@. Следует удалить этот код.

Признаки заражения

  1. Неработающая панель администрирования
  2. При загрузке сайта в строке состояния появляется запись загрузки файлов с чужого сайта
  3. Блокировка сайта google.ru и yandex.ru
  4. Перенаправление сайта при заходе на него с мобильного телефона и предложение обновить программу на телефоне
  5. Добавление ссылок на сторонние ресурсы

Как лечиться

  1. Проверить свой компьютер и остальные компьютеры, имеющее контакт с сайтом антивирусом.
  2. Заменить все FTP, SSH пароли от сайта.
  3. Для хранения паролей использовать специальные менеджеры паролей.
  4. Для соединения с FTP использовать легальное профессиональное ПО.
  5. Восстановить бекап файлов из архива на хостинге или загрузить файлы PHPShop заново на сервер. Загружать нужно текущую версию, установленную на вашем сайте из Архива версий.
  6. В случаи перенаправления телефоном достаточно заменить файл .htaccess на оригинальный
  7. Воспользоваться ПО для поиска вирусов на сайте.
  8. Всегда менять FTP пароли после передачи их третьим лицам, в том числе и технической поддержки. Для третьих лиц использовать отдельные FTP аккаунты для дальнейшего отслеживания возможных путей утечки FTP паролей в логах сервера.
  9. Включить режим защиты от использования php кода в шаблонах в файле phpshop/inc/config.ini
    [function]
    guard="true";
    allowed="leftCatal,isset,getElementById,empty";
    deny="include,include_once,require,require_once,file,chmod";
    
  10. Включить режим защиты в .htaccess
    # Запрет вызовы через браузер сторонних опасных файлов шаблона
    # default - off
    RewriteCond %{REQUEST_URI} ^(/phpshop/templates/(.*))
    RewriteCond %{REQUEST_URI} !((.*).(gif|jpg|swf|png|jpeg|js|css|GIF|JPG|PNG|JPEG))$
    RewriteRule .* - [F]
    
    # Запрет вызовы через браузер сторонних опасных загружаемых файлов
    # Накладывает ограничение для загрузки файлов с другими расширениями
    # default - off
    RewriteCond %{REQUEST_URI} ^(/UserFiles/(.*))
    RewriteCond %{REQUEST_URI} !((.*).(gif|jpg|swf|png|jpeg|js|css|GIF|JPG|PNG|JPEG|rar|zip))$
    RewriteRule .* - [F]
    
    # Запрет выполнения php в загружаемых папках
    # default - off
    RewriteCond %{REQUEST_URI} ^((/UserFiles/(.*).(phpd?|phtml))|(/phpshop/templates/(.*).(phpd?|phtml))|(/phpshop/admpanel/csv/(.*).(phpd?|phtml)))$
    RewriteRule .* - [F]
    
  11. Поставить дополнительный пароль на папку авторизации через .htaccess. Для рпроставления паролей следуйте инструкции:
  12. Создать файл /phpshop/admpanel/.htaccess с содержанием:
    AuthName "Member's Area"
    AuthType Basic
    AuthUserFile /home/username/username.ru/.htpasswd
    require valid-user
    
  13. Создать файл /home/username/username.ru/.htpasswd Для генерации логина и пароля воспользуемся онлайн сервисом: htaccesstools.com. Результат записать в файл .htpasswd

Лечение от ссылок в БД

Если вирус прописал рекламные ссылки в базу данных, то лечение выполняется по инструкции:

  1. Определить код вируса в карточке товара. Для примера возьмем код ссылки
    <center><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- big --><
    ins class="adsbygoogle" style="display:inline-block;width:336px;height:280px"  
    data-ad-client="ca-pub-6920992154252242" data-ad-slot="4175090345"></ins><script>
    (adsbygoogle = window.adsbygoogle || []).push({});</script></center>
    
  2. Данный код содержит 335 символов. Дальше будем использовать значение 336(335+1)
  3. Обязательно сделать бекап БД (База - Резервные копии). Если чистка кода не удастся, то будет возможность откатить изменения назад.
    1. Выполнить запрос к БД:
    2. Ссылки присутствуют в товарах update phpshop_products set content = SUBSTR(content, 336, 100000);
    3. Ссылки присутствуют в каталогах update phpshop_page set content = SUBSTR(content, 336, 100000);
    4. Ссылки присутствуют в страницах update phpshop_categiries set content = SUBSTR(content, 336, 100000);
    5. Если ссылки присутствуют в самом конце описания: update phpshop_products set content = REPLACE(content, 'содержание ссылок', ' ');
  4. Обязательно поменять пароль к MySQL через панель управления хостингом. Новый пароль от MySQL вписать в конфигурационный файл phpshop/inc/config.ini (pass_db="XXXXX")
  5. Для очень старых версий PHPShop(до 2008 года) проверить , есть ли выбор языка на странице авторизации /phpshop/admpanel/. В них присутствует уязвимость, дающая возможность получить параметры подключения к БД из config.ini.
  6. Если таковая имеется, то отредактировать файл /phpshop/admpanel/index.php.Заменить строку require("./language/".$Lang."/language.php"); на require("./language/russian/language.php");

Способы защиты

  1. Активировать модуль Guard и поставить в его настройках "Расширенный режим". Модуль Guard делает базу контрольных сумм файлов и несколько раз в день проверяет файлы на сервере, если какой-то файл изменился не по вашей милости, то следует сразу проверить его на вирусы. После каждого обновления, замены файлов/шаблонов следует делать обновление контрольных сумм файлов для исключения ложного срабатывания антивируса на ваши же изменения.
  2. При обнаружении вируса воспользоваться восстановить файлы из созданного модулем Guard бекапа.
  3. Использовать сложные комбинации логинов и паролей на фтп. Производить смену паролей каждый несколько месяцев.
  4. При появлении на сайте вирусов, особенно ссылок на внешние ресурсы следует провести комплексный анализ всех файлов сервере через утилиту AI-Bolit. В настройках выставить расширенный режим поиска и после его окончания предоставить отчет нашей технической поддержки. Если будут обнаружены вирусы, то поддержка укажет файлы, которые нужно будет удалить с сервера. При расширенном режиме AI-BOLIT будет показывать много подозрительных на его взгляд включений в файлах. В 99.9% случаем это ложное срабатывание на одноименные функции и методы в вирусах. Решение о заражении вирусом может принять только специализированный специалист из нашей поддержки, знакомый с архитектурой ПО и его файловой структурой.

Если не помогает

Если после всех выполненных манипуляциях для защиты, вирус опять появляется, то возможно 2 варианта такой ситуации:

  1. На сервере в этом же аккаунте находятся другие зараженные сайты, имеющие доступ к вашим файлам. Следует перенести проект на отдельный аккаунт.
  2. Злоумышленниками прописан код в ваши файлы, который не может найти антивирус. Тогда следует полностью заменить ваши файлы на заводские (Архив версий).
  3. Из старых файлов оставить лишь
    UserFiles
    phpshop/inc/config.ini (взять параметры подключения к БД)