Сайт редиректит на казино или аптеку: как найти и удалить вредоносный редирект
Почему сайт перенаправляет посетителей на сторонние ресурсы только с мобильных или только из поиска, где искать вредоносный код и как закрыть дыру навсегда.
Самый частый сценарий заражения, с которым к нам приходят: «сайт у меня в браузере открывается нормально, а посетители жалуются, что их перебрасывает на казино». Это классический conditional redirect — вредоносный код, который срабатывает выборочно, чтобы владелец сайта долго не замечал проблему.
Почему вы не видите редирект, а посетители видят
Вредоносный скрипт проверяет условия и редиректит только «подходящих» пользователей. Чаще всего проверяется:
- User-Agent: редирект только для мобильных (Android, iOS) — там кликают чаще и труднее проверить.
- Referer: редирект только для посетителей из Google и Яндекса — прямые заходы и админы не страдают.
- Cookies: если в куках есть метка «уже редиректили» или «залогинен в админке» — пропускают.
- IP-адрес: фильтрация по гео или blacklist админских IP.
- Частота: один и тот же посетитель редиректится раз в сутки или раз в неделю.
Если у вас «всё нормально, но клиенты жалуются» — почти наверняка это conditional redirect. Проверьте сайт с телефона по 4G, перейдя из выдачи Google в режиме инкогнито.
Где обычно прячется код редиректа
| CMS | Где искать | Что искать |
|---|---|---|
| WordPress | header.php, footer.php, functions.php темы; wp_options (siteurl, home, redirect) | eval(base64_decode(...)), wp_redirect на чужой домен |
| WordPress | wp_posts.post_content (инжект в записи) | <script src=... с чужого домена |
| Битрикс | /bitrix/templates/.default/header.php, init.php | header('Location: ...'), AddEventHandler |
| Joomla | templates/*/index.php, configuration.php | eval, gzinflate, str_rot13 |
| OpenCart | catalog/view/theme/*/template/common/header.tpl | JS-вставки с чужого CDN |
| Любая CMS | .htaccess в корне и подпапках | RewriteRule c условиями HTTP_USER_AGENT и HTTP_REFERER |
Как найти редирект самому: 30 минут диагностики
- Откройте сайт в режиме инкогнито с телефона через 4G — поймайте редирект.
- Через DevTools (Chrome → F12 → Network) запишите все запросы, найдите 301/302 на чужой домен — увидите, какой скрипт его инициирует.
- Скачайте все файлы сайта по FTP/SSH, запустите поиск по регулярке `eval\s*\(base64_decode|gzinflate\(base64_decode|str_rot13` — в 80% случаев находит шелл.
- Проверьте `.htaccess` во всех папках на наличие RewriteRule с условиями User-Agent.
- В БД WordPress проверьте `wp_options.siteurl` и `wp_options.home` — не подменены ли они.
- Посмотрите дату изменения файлов: подозрительно всё, что менялось в день, когда вас точно никто не редактировал.
Чего НЕ делать
- Удалять только видимый скрипт — точка входа (бэкдор) останется, и через сутки редирект вернётся.
- Просто «обновить тему» — заражение часто живёт в БД и не в файлах темы.
- Менять только пароль админки — у злоумышленника, скорее всего, есть FTP или прямой доступ к БД.
- Откатывать бэкап без понимания, когда именно произошёл взлом.
Что делать, если найти не получается
Современные заражения умеют прятаться: код шифруется в несколько слоёв, дробится на маленькие куски в разных файлах, восстанавливается через cron-задачу после удаления. Если за 1–2 часа не получилось найти причину — стоит передать специалистам, иначе риск пропустить копию шелла и заразиться повторно очень высок.
Сколько стоит лечение конкретно редиректа
Удаление conditional redirect с поиском точки входа и закрытием дыры — типовая задача от 15 000 ₽, срок 4–12 часов. В работу включаем снятие пометки «опасный сайт» в Google и Яндексе. Бесплатная диагностика по логам и файлам — за 1–2 часа, скажем точную цену и сроки до начала работ.
Часто задаваемые вопросы
Почему сайт редиректит только у части посетителей?+
Это conditional redirect — вредоносный код проверяет User-Agent, Referer или cookies и срабатывает только для мобильных, посетителей из поиска или новых пользователей. Админ и постоянные клиенты редирект не видят, поэтому проблему часто замечают поздно.
Можно ли найти редирект самому?+
Если есть опыт работы с FTP и БД — да, за 30–60 минут. Нужно проверить .htaccess, файлы шаблона (header.php, footer.php, functions.php), поля siteurl и home в БД, и сделать поиск по регулярке eval(base64_decode по всем файлам. Если за 1–2 часа не получилось — лучше отдать специалистам, чтобы не пропустить копию бэкдора.
Сколько стоит удалить редирект?+
Удаление conditional redirect с поиском точки входа, закрытием уязвимости и снятием санкций Google/Яндекса — от 15 000 ₽, срок 4–12 часов. Бесплатная диагностика за 1–2 часа, точная цена до начала работ.