Опасные .htaccess: что прячут вредоносные файлы и как их вычистить

После взлома CMS или плагина злоумышленник почти всегда кладёт вредоносный .htaccess — он выполняется на каждый запрос в каталоге и дочерних папках, поэтому один файл может перенаправлять всех посетителей на спам, делать ваши картинки PHP-шеллами или блокировать вам вход в собственную админку. Ниже — что конкретно прячут, где искать и как чистить.

Почему .htaccess под ударом

Файл .htaccess привлекателен для злоумышленников по трём причинам:

  • Выполняется на каждый запрос в каталоге и во всех дочерних папках. Один файл в корне сайта охватывает весь трафик.
  • Читается без перезапуска Apache — правки вступают в силу немедленно, незаметно для владельца.
  • Часто игнорируется при беглой проверке — владелец смотрит PHP-файлы и базу данных, но не думает заглянуть в .htaccess каждого подкаталога.

Типичная схема: взлом через уязвимый плагин или CMS, загрузка PHP-шелла, а затем — размещение вредоносного .htaccess в нескольких каталогах (корень, /uploads/, /cache/, /wp-content/).

Скрытые редиректы посетителей

Самый распространённый приём — перенаправление трафика на спам или малварь. Редирект обычно настраивается «избирательно», чтобы владелец ничего не заметил:

  • Только с поисковиков (клоакинг): RewriteCond %{HTTP_REFERER} google|yandex — пользователи, пришедшие по ссылке из поиска, уходят на спам, а владелец, открывающий сайт напрямую, видит норму.
  • Только мобильных: RewriteCond %{HTTP_USER_AGENT} (android|iphone|ipad|mobile) — мобильные посетители уходят на спам, десктопные — нет.
  • Только для Googlebot: другой контент поисковику и людям — прямое нарушение правил, называется клоакинг.

Типичный вредоносный фрагмент:

вредоносный .htaccess (редирект с поисковиков)копировать
RewriteEngine On
RewriteCond %{HTTP_REFERER} (google|yandex|bing|mail\.ru) [NC]
RewriteRule .* http://evil-spam-site.example/go [R,L]

Признаки: пользователи жалуются на «перенаправление на непонятный сайт»; в Яндекс.Вебмастере или Google Search Console появились предупреждения о вредоносном контенте; трафик упал, а отказы выросли. Редирект «через раз» (только с поиска) — почти всегда признак клоакинга в .htaccess.

Исполнение картинок как PHP

Второй по популярности трюк — заставить Apache выполнять произвольные файлы как PHP. Это позволяет злоумышленнику загрузить shell.jpg (картинку с PHP-кодом внутри) и запустить его как скрипт.

Используемые директивы:

  • AddType application/x-httpd-php .jpg .jpeg .png .txt — все файлы с такими расширениями Apache начинает передавать PHP-интерпретатору.
  • AddHandler application/x-httpd-php .jpg — аналогичный эффект через другой механизм.
  • php_value auto_prepend_file /var/www/uploads/shell.txt — PHP автоматически подгружает указанный файл перед каждым PHP-скриптом в каталоге. Залитый бэкдор выполняется при любом обращении к сайту.
вредоносный .htaccess (AddType-бэкдор)копировать
AddType application/x-httpd-php .jpg .jpeg .png .gif .txt
php_value auto_prepend_file /var/www/html/uploads/image001.jpg

Такой .htaccess в папке /uploads/ означает, что любой загруженный файл с PHP-кодом внутри будет выполнен как скрипт. Эту угрозу закрывает правильно настроенный .htaccess в папке загрузок (см. раздел «Защититься»).

Манипуляции с доступом

Иногда цель вредоносного .htaccess — не перенаправить трафик, а закрыть вам доступ к собственному сайту или к нужным инструментам:

  • Блокировка входа в админку: Require all denied в /wp-admin/ или папке CMS-администратора — вы не можете войти и почистить заражение.
  • Кастомная страница ошибки с редиректом: ErrorDocument 404 //evil.com/spam-page — 404-ошибки уводят посетителей на сторонний сайт.
  • Включение листинга: Options +Indexes — злоумышленник открывает себе просмотр файлов каталога.
  • Избирательный доступ: Order allow,deny + Allow from 198.51.100.7 — доступ к закрытым файлам только с IP злоумышленника.

SEO-спам через rewrite

Для дорвеев и продвижения спам-сайтов злоумышленники настраивают генерацию «виртуальных» страниц с ключевыми словами:

вредоносный .htaccess (дорвей-редиректы)копировать
RewriteEngine On
RewriteRule ^(viagra|casino|poker|loans|pills)(.*)$ /doorway.php?kw=$1$2 [L]

Поисковик индексирует ваши страницы с тематикой «казино» и «лекарства», которые на самом деле генерируются скриптом злоумышленника. Трафик по спам-запросам растёт, позиции по вашим запросам падают, а в Google Search Console появляются тысячи «новых» URL.

Где и как искать вредоносный .htaccess

Где смотреть: корень сайта — обязательно; все подкаталоги, особенно uploads/, cache/, tmp/, wp-content/, images/. Злоумышленник кладёт файл туда, где у него есть права на запись — чаще всего это именно каталоги загрузок.

Признаки подозрительного .htaccess:

  • Дата модификации файла не совпадает с датой установки/обновления CMS.
  • Содержит RewriteRule .* http (редирект на внешний URL без очевидной причины).
  • Содержит base64 — часто используется для обфускации вредоносного кода.
  • Содержит AddType или AddHandler с PHP-обработчиком для нетипичных расширений.
  • Содержит auto_prepend_file или auto_append_file.
  • Содержит php_value с путём к файлу вне стандартных директорий.
  • Содержит незнакомые IP-адреса в Allow from.

Быстрая проверка через SSH — найти все .htaccess на сайте и просмотреть подозрительные строки:

поиск подозрительных строк в .htaccess (SSH)копировать
# найти все .htaccess
find /var/www/site -name ".htaccess" -type f

# найти подозрительные строки
grep -rn "auto_prepend_file\|AddType.*php\|base64\|RewriteRule .* http" /var/www/site --include=".htaccess"

Сравните каждый найденный файл с эталонным .htaccess вашей CMS из официальной документации. Любое отличие — повод разобраться.

Также используйте инструменты сайта: вставьте содержимое подозрительного файла в объяснялку .htaccess — она разберёт каждую строку; прогоните через аудит безопасности — он ищет опасные конструкции.

Что делать: вычистить и восстановить

  1. Сделайте бэкап вредоносного файла перед удалением — он может понадобиться для расследования (как улика) или анализа.
  2. Замените на эталонный .htaccess вашей CMS из официального источника. Не редактируйте вредоносный файл — замените целиком.
  3. Проверьте ВСЕ .htaccess на сайте — злоумышленник обычно кладёт файлы в нескольких местах.
  4. Ищите шеллы и бэкдоры — вредоносный .htaccess это симптом, а не причина. Найдите и удалите загруженные shell.php, image001.jpg с PHP-кодом и другие вредоносные файлы.
  5. Смените все пароли: FTP/SFTP, панель хостинга, базу данных, учётные записи CMS (особенно администратора).
  6. Обновите CMS и все плагины — закройте уязвимость, через которую произошёл взлом.
  7. Проверьте cron-задачи (crontab -l), wp_options (для WordPress: поля siteurl, home, active_plugins), базу данных на предмет вставленного вредоносного кода.
  8. Запросите снятие пометки «опасный сайт» в Google Search Console и Яндекс.Вебмастере после чистки.

Как защититься на будущее

Защита .htaccess от вредоносных модификаций строится на нескольких уровнях:

  • Закройте сами .ht-файлы:
.htaccess (защитить .htaccess и .htpasswd)копировать
<Files ~ "^\.ht">
    Require all denied
</Files>
  • Запретите PHP в папке загрузок (кладёте в uploads/.htaccess):
uploads/.htaccess (запрет PHP)копировать
<FilesMatch "\.ph(p[0-9]?|tml|ar|tt)$">
    Require all denied
</FilesMatch>
  • Права 644 на .htaccess (владелец — пользователь Apache или ваш FTP-пользователь, не www-data): файл не должен быть перезаписываем PHP-процессом.
  • Мониторинг изменений файла: некоторые хостинги и плагины безопасности (Wordfence, Sucuri) умеют оповещать об изменении .htaccess.
  • AllowOverride None на папку загрузок в конфиге сервера (хостинг настраивает это за вас — уточните у поддержки): тогда вредоносный .htaccess в /uploads/ просто игнорируется Apache.

Подробнее о защите сайта через .htaccessцентр безопасности.