В последнее время участились случаи взлома сайтов через уязвимости в CMS (системах управления содержимым), таких как Joomla, WordPress, Drupal и др.,
или их компонентах. Владельцы сайтов зачастую не занимаются обновлениями CMS, либо делают это редко и неохотно, ошибочно полагая что "раз оно
работает, то будет работать и дальше". В результате злоумышленникам удается заливать на сайты сторонние файлы, и использовать их для осуществления
компьютерных преступлений. Причем сам владелец, как правило, остается в неведении, так как его сайт продолжает нормально функционировать. На
уведомления от техподдержки он часто не реагирует, либо не понимает их сути. Вникнуть в проблему он пытается уже только после того как его сайт
блокируется за нарушение правил хостинга.
Рассмотрим типичный случай. Чужеродный файл обычно размещается злоумышленником не в корне сайта, а где-нибудь поглубже в иерархии каталогов, либо в
каталоге уязвимого компонента, через который и был произведен взлом. Например, здесь: http://имя-сайта.ру/wp-content/plugins/more-fields/core.php. Как
правило, он имеет безобидное название (например core.php, system.php, script.php и т.д.) и обратимо зашифрованный код, например:
<?php
eval(gzinflate(base64_decode('80jNyclXyFTPVUhJTc5PSU0BAA==')));
?>
В зависимости от содержимого файла, он может например:
а) рассылать спам (причем сам текст рассылки и базу данных e-mail он не содержит, такие данные передаются злоумышленником уже в процессе обращения к
этому файлу);
б) переадресовывать посетителя на другой сайт (например adult-тематики), ссылка на него обычно рекламируется посредством спам-рассылок с других
серверов;
в) являться поддельной страницей какого-нибудь зарубежного банка или платежной системы, предлагающей ввести данные пользователя (которые впоследствии
отправляются злоумышленнику);
г) являться PHP-шеллом (т.е. командной оболочкой, доступной через веб, и позволяющей злоумышленнику выполнять любые действия, в частности выполнять
атаки на другие сервера).
О подобных случаях в конце-концов становится известно нам, о чем мы уведомляем владельца через нашу тикет-систему, и, как правило, принимаем
временные меры по их предотвращению путем блокировки/переименования/удаления таких файлов.
Уведомления от нас, соответственно, выглядят следующим образом:
а) жалоба на спам: с вашего сайта производится спам-рассылка, и текст письма вместе с RFC-заголовками, в которых часто фигурирует
заголовок с названием скрипта, с помощью которого было отправлено письмо, например:
X-PHP-SCRIPT : http://имя-сайта.ру/wp-content/plugins/more-fields/core.php
б) жалоба на рекламу спамом: ваш сайт рекламируется посредством спам-рассылок, и текст письма вместе с RFC-заголовками, в теле письма
фигурирует ссылка: http://имя-сайта.ру/wp-content/plugins/more-fields/core.php
в) жалоба на фишинг: на вашем сайте находится поддельная страница банка, и ссылка на адрес такой страницы:
http://имя-сайта.ру/wp-content/plugins/more-fields/core.php;
г) жалоба на атаку: с вашего сайта ведется атака, и ссылка на PHP-шелл:
http://имя-сайта.ру/wp-content/plugins/more-fields/core.php
К сожалению, очень часто, наши уведомления остаются без ответа. Типичные заблуждения владельца сайта:
а) "я не рассылаю спам, это какая-то ошибка" (слепая вера в то, что кроме владельца никто другой никаких рассылок с сайта делать не может);
б) "хостер уже что-то сделал, заблокировал, принял меры, значит мне делать ничего не нужно" (игнорирование предупреждения о том что принятые нами меры
лишь временные, и что проблема в скором времени может повториться снова);
в) "это не мои проблемы" (мнение что хостер несет полную ответственность за безопасность на сайте, несмотря на то что хостинг - это лишь площадка для
работы программного обеспечения клиента, ответственность за которое лежит уже на владельце аккаунта).
В результате владелец молчит, и в случае повторения жалоб нам ничего не остается, кроме как заблокировать сайт целиком за нарушение наших правил. Мы
не можем вечно удалять/переименовывать/блокировать те скрипты, которые заливаются злоумышленниками. А обновлять CMS или ставить на них заплатки
безопасности не является обязанностью хостера. Бездействовать мы тоже не можем, т.к. IP-адреса наших серверов могут попасть в черные списки, или их
может заблокировать датацентр.
Обращаем ваше внимание: если ваш сайт подвергся взлому, одного лишь удаления чужеродных файлов недостаточно, т.к. через некоторое
время злоумышленники вновь воспользуются существующими дырами, и проблема повторится. Единственный способ остановить вторжения - обновить CMS и все ее
компоненты до последних версий, установить заплатки безопасности, выполнить все рекомендации разработчиков и т.д. Причем подобные действия необходимо
выполнять регулярно. Если какие-то компоненты больше не поддерживаются - отказаться от их использования. Если не поддерживается уже и сама CMS -
подумать о переходе на какую-то другую.
----------------------------------------------------------------
Что делать для защиты ваших сайтов (советы с сайта searchengines.guru)
http://searchengines.guru/showthread.php?t=774117
1. изоляция сайтов (один сайт - один эккаунт)
2. все директории и файлы cms делаем read-only
3. все директории, в которые производится загрузка файлов или кэширование - делаем read-write и кладем в них волшебный .htaccess, который либо
делает
deny from all
либо запрещает вызов php
Options -Indexes
php_flag engine 0
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi
.exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
AddType application/x-httpd-php source .phtml .php .php3 .php4 .php5 .php6
.phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
4. на файл с данными БД ставим минимальные возможные права (например, 0400 или 0444)
5. закрываем админку через .htaccess для вашего IP или по кодовому слову
6. удаляем все ненужные плагины и шаблоны
7. обновляем cms и оставшиеся плагины до свежих версий
8. сканируем свой комп на вирусы Касперским и AVZ
9. пользуемся SFTP (SCP) протоколом при работе с сайтом и не храним пароли в клиенте
10. после проверки компьютера на вирусы меняем все пароли у сайта и хостинга (включая пароль от БД). И делаем это раз в два месяца хотя бы.
Вот такие простые, казалось бы, действия избавят вас от кучи геморроя.
----------------------------------------------------------------
Интересные и полезные ссылки
Новая тема о вирусах
http://forum.ruweb.net/viewthread.php?tid=3025
Старая тема по безопасности на нашем форуме
http://forum.ruweb.net/viewthread.php?tid=2007
Безопасность CMS (рекомендации от Яндекса)
http://safesearch.ya.ru/replies.xml?item_no=120
Массовое поражение интернет-магазинов на базе osCommerce и блогов WordPress
http://www.opennet.ru/opennews/art.shtml?num=31377
Онлайн-декодер gzinflate(base64_decode...
http://www.tareeinternet.com/scripts/decrypt.php
Плагин FTPKey в панели управления DirectAdmin
http://forum.ruweb.net/viewthread.php?tid=2927
[Отредактировано 16.8.2015 кто timru]
[Отредактировано 31.5.2017 кто cosupport]