Каждый день взламывается тысячи сайтов, хакеры и разного рода недоброжелатели находят уязвимости в сайтах и нарушают их работоспособность. Цели взлома могут быть разные, начиная от политических соображений и недобросовестной конкуренции до простой забавы. Итак, как же это случается?

Взломали Joomla сайт

Что-то не так с Joomla-сайтом: белый фон или темный фон с новым логотипом и контентом, странные ссылки, избыток рекламы или происходит перенаправление на другой сайт? Если хотя бы что-то из этого списка случилось и администраторы сайта не имеют к этому прямого отношения, то сайт, с большей долей вероятности был взломан. Будет большим везением, если на хостинге есть поддержка, которая заметит некорректное поведение сайта и сообщит об этом владельцу, но обычно подобные моменты становятся неожиданностью.

Это печальная реальность, но практически любая CMS имеет уязвимости и, несмотря на то, что команда Joomla регулярно выпускает обновления, которые закрывают известные проблемы безопасности, сайт может подвергаться разного рода атакам от которых нас не спасут разработчики. В данной статье предлагаем ознакомиться с рядом шагов, которые можно предпринять в случае взлома и предотвратить повторения подобных ситуаций, постараемся раскрыть вопрос: что делать если сайт Joomla был взломан и как вернуть ситуацию под контроль?

Шаг 1. Резервное копирование

К сожалению, большинство администраторов не заботятся о резервном копировании, хотя это довольно простая задача. Настройте ежедневное или еженедельное копирования всех файлов скрипта Joomla, включая расширения и шаблоны, а так же копию (дамп) базы данных и контент, который храниться в виде файлов. Данное задание может запускаться по расписанию и не требуется участия человека. В нужный момент можно восстановить работу сайта с актуальными данными на момент выполнения резервной копии.

Данное мероприятие поможет восстановить работу не только после взлома, но и если результатом инцидента стал сбой аппаратного или программного обеспечения. Важно понимать, что резервная копия должна храниться на отдельном сервере, желательно географически удаленном.

Шаг 2. Сканирование сайта

Существует множество онлайн-инструментов, которые проверят сайт на вирусы, например:

https://www.virustotal.com
https://app.webinspector.com
http://www.quttera.com
https://sitecheck.sucuri.net
http://www.isithacked.com

Так же стоит упомянуть про сервис от Google, просто перейдите по нижеприведенной ссылке указав имя вашего сайта вместо YouSite.com:

http://www.google.com/safebrowsing/diagnostic?site=http://YourSite.com

Важно отметить, что ни один из представленных инструментов не сможет проверить весь функционал сайта, так как основная часть исполняемого кода скрыта от просмотра, но будьте уверены, что если было получено предупреждающее сообщение, то стоит насторожиться и 99% сайт заражен и требуется срочно предпринять меры.

Сканирование сайта Google

Более правильный метод проверки это сканирование резервной копии с помощью антивируса установленного на операционной системе рабочего места (PC/Mac/Linux), например Malwarebytes Anti-Malware (Бесплатный), ClamAV (Бесплатный), либо любой другой антивирус, который есть под рукой.

Malwarebytes Anti-Malware

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

Наиболее действенный метод - это запуск cPanel Virus Scanner, это может быть сделано в качестве первого шага проверки. Сканер просматривает файлы непосредственно на хостинге и способен определить разного рода вредоносный код и вирусы. Используя опцию "Scan Public Web Space" дополнительно будет просканирован каталог public_html на предмет зараженных файлов. В зависимости от особенностей инсталляции Joomla проверка может занять от 3 до 10 минут.

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

  • Лечить. Будет удален вредоносный код из файла;
  • Карантин. Файл будет перемещен в отдельную папку для карантина;
  • Удалить. Файл будет удален. Данный сценарий полезен, когда есть аналогичный чистый, не зараженный файл для подмены;
  • Игнорировать. В данном исполнении ничего не произойдет и зараженный файл останется нетронутым.

Как еще один вариант проверки: обратиться к своему хостинг-провайдеру с просьбой выполнить проверку. Обычно хостинг имеет ряд инструментов, которые позволяют обезопасить сайты своих клиентов. Так же хостинг сможет дать конкретные рекомендации по решению подобных проблем.

Если есть сомнения касательно конкретного файла - заражен он или нет, просто сравните его с аналогичным файлом из чистой инсталляции Joomla. Даже если файл был случайно удален, его всегда можно восстановить, так как код Joomla является общедоступным.

Шаг 3. Отключите сайт

После атаки сайт не только перестает исполнять свои функции, но и несет прямой вред как владельцу, так и посетителям. Обычно злоумышленник размещает контент, который не отвечает требованиям этики и нормам морали. В данном случае самым правильным решением будет закрыть доступ к сайту посетителям, после чего приступать к ликвидации последствий.

В Joomla подобная процедура выполняется с помощью включение режима offline mode. Это можно сделать как через панель администрирования, так и через прямое редактирования файла настроек, например по FTP. В подобной ситуации административный раздел может быть недоступен и рекомендуется использовать 2-й метод.

Найдите файл configuration.php в корневой папке Joomla и откройте его с помощью текстового редактора:

найдите строку public $offline = '0';

замените ее на public $offline = '1';

Так же в файле configuration.php есть параметр offline_message, через который можно указать сообщение для пользователей, которое будет отображаться на экране в режиме offline mode. Это полезно, когда есть необходимость проинформировать посетителей о сбое и сроках восстановления работоспособности.

Другой вариант отключения предусматривает блокировку по IP, например есть возможность заблокировать доступ всем, кроме определенных IP-адресов. Данная необходимость может возникнут, если администратору важно иметь доступ к зараженной части сайта, но скрыть это от внешних посетителей. Таким образом сайт уходит в карантин, злоумышленник так же теряет к нему доступ. Более того, если оперативно отключить сайт подобным образом, поисковые системы не успеют проиндексировать нежелательный контент, что избавит владельца сайта от репутационных рисков. Для реализации данного метода необходимо дать соответствующие инструкции web-серверу, для этого достаточно отредактировать файл .htaccess, который размещен в корневой папке Joomla (если его нет, то создайте его), добавьте две строки кода:

Apache configuration код:
  1. deny from all
  2. allow from [Ваш IP-адрес]

Если вы не знаете свой IP, воспользуйтесь сервисом http://yandex.ru/internet/.

Шаг 4. Ручное сканирование через FTP

Данный шаг может вызвать определенные трудности и успех зависит от опыта и целеустремленности.

Сперва проверьте папки /tmp , /cache, /images на предмет наличия файлов с расширением .php, если подобное обнаружено, то без опасений удаляйте.

Вредоносные файлы могут маскироваться и скрываться в глубине структуры каталогов. Обычно вредоносные файлы имеют имя схожее с названием элементов ядра Joomla и их можно не сразу заметить, например:

  • Adm1n.php
  • admin2.php
  • contacts.php
  • cron.css
  • css.php
  • do.php
  • hell0.php
  • solo.php
  • x.php
  • test.php or test.html or tests.php
  • uploadtest.html и другие…

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

PHP Decoder

Вторым этапом попробуйте найти файлы содержат слово base64 (обычно используемые хакерами), важно понимать, что существуют некоторые компоненты и модули, которые так же могут использовать base64- и eval-кодировки. Большинство хакеров всегда первым делом загружают на сайт так называемые backdoor-файлы, что позволяет иметь доступ даже после того, как вредоностная часть была ликвидирована. Если удалось найти файл с вредоносным кодом, воспользуйтесь UnPHP (PHP Decoder) - это бесплатный инструмент для анализа PHP-синтаксиса, он позволяет декодировать запутанные части кода вызывая такие методы как eval(), gzinflate(), str_rot13(), str_replace() и base64_decode(). Даже если не весь вредоностный код будет обнаружен, возможно получить подсказки, которые будут полезны для дальнейшего анализа.

Важно понимать, что вредоносный код обычно маскируется под полезные PHP-функции substr eval gzinflate, base64_decode and preg_replace и задействованные внутри них регулярные выражения. Используйте текстовый редактор с расширенными функциями поиска, чтобы отыскать слова, которые маскируют хакеры, например:

base64_decode(

или

if (md5($_POST

или

$password=@$_REQUEST['password']

или

$action=@$_REQUEST['action']

или

preg_replace("/.*/e"

Пример поддельных файлов, которые загрузил неизвестный хакер:

fake file

fake file2

hacked template

back door joomla

framework infected

fake mails

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

Если вредоносный файл найден, но остались сомнения, используйте онлайн сканер вредоносных программ Jotti (https://virusscan.jotti.org/ru-RU/scan-file), это бесплатный сервис, который позволяет сканировать подозрительные файлы несколькими антивирусными программами. Сервис мультиязычный и можно выбрать удобную вам локализацию.

Сканер вредоносных программ Jotti

Не забудьте проверить содержимое файла .htaccess и index.php в шаблоне, они могут содержать скрипт перенаправления на другую страницу. Файлы изображений могут на самом деле не изображениями, это те же PHP-скрипты, но с расширением .gif или .jpeg.

Описанные действия в этом шаге могут занять до 2-х часов времени и потребует определенной усидчивости. Не сдавайтесь и продолжайте повторять описанные операции пока причина инцидента не будет локализована.

Шаг 5. Поменяйте пароли

Как можно скорее поменяйте все пароли, начните с учетной записи с правами суперюзера и всех пользователей с правами администраторов Joomla. Затем выполните соответствующие изменения для учетных записей баз данных (MySQL, Postgresql...) и FTP. Обратите внимание, что новый пароль должен быть так же указан в файле конфигурации configuration.php, примерно так:

public $password = 'NEW-MYSQLi-PASSWORD';

Шаг 6. Выполнить обновление и удалить все лишнее

Необходимо убедиться, что все модули и плагины находятся в актуальном состоянии, не поленитесь и сверьте номер версии каждого компонента в менеджере расширений (Extension Manager) с информацией на сайте разработчика. Дело в том, что старые версии могут иметь уязвимости безопасности, которые исправлены в последних версиях, поэтому важно своевременно выполнять обновления.

Важно понимать, что даже если компонент отключен и не используется, он может содержать уязвимость, которая поможет злоумышленникам получить доступ к сайту, такие компоненты лучше удалять, либо, так же поддерживать в актуальном состоянии. Настоятельно рекомендуем установить  Joomla 3 Update_Package.zip, который можно скачать с официального сайта Joomla.

Шаг 7. Удаляем сайт из черного списка Google

Если последствия атаки не удалось быстро ликвидировать, есть риск, что сайт попал в черный список зараженных ресурсов Google, это означает, что в результатах поиска сайт будет помечен как зараженный. Это крайне неприятная ситуация может обернуться снижением трафика и потеря доверия со стороны пользователей. Конечно, спустя некоторое время сайт исчезнет из данного списка, но это может занимать продолжительное, но можно ускорить этот процесс:

  1. Еще раз убедитесь, что последствия заражения полностью устранены;
  2. Включите сайт. Выведите его из режима offline mode или снимите ограничение доступа по IP;
  3. Откройте Security Issues Report в Google Webmaster Tools, затем нажмите Request a review и укажите адрес сайта;
  4. Так же в Google Webmaster Tools и URL Removal сделайте запрос на удаление любых URL, которые могли быть добавлены на сайт хакером и в последствии заиндексироваться в Google.

После выполнения указанных действий Google повторно проверит сайт на наличие вредоносного кода, в случае успеха сайт будет удален и черного списка, но это может занять 1-2 дня.

В заключение

Чистка сайта от вирусов довольно трудоемкая задача, которая отнимет много времени. Опытные хакеры скрывают свой вредоносный код глубоко в структуре каталогов или базы данных и найти его крайне не просто. Самый простой и действенный способ это развернуть экземпляр сайта из резервной копии и полностью заменить им текущий вариант. Важно убедиться, что на момент создании резервной копии сайт уже не был инфицирован иначе все труды будут напрасны.

Какие бы усилия не были приложены для защиты, невозможно создать неприступную крепость и сделать сайт на 100% безопасным от взлома.


 
4.6468085106383 1 1 1 1 1 (Оценок: 235)
4.6468085106383 235
Опубликовано: 12-05-2016

Комментарии  

Владислав
-1 #1 Владислав 17.05.2016 02:15
Возникла такая проблема. Вся работа на сайте, проделанная за полгода, пропала. Долго искал решение проблемы, но нигде не давали чёткого и внятного ответа. Благодарен вам за такую пошаговую инструкцию! Всё получилось! Спасибо огромное!

Вы не зарегистрированы, чтобы оставлять комментарии.