SOLLER logo

Как выявить и разобрать компрометацию интернет-магазина

LV | EN | RU

Иногда взлом интернет-магазина не выглядит как классическая поломка сайта. Магазин может открываться, каталог может работать, часть заказов может оформляться, а настоящая проблема проявляется только в одном месте — например, в корзине, на этапе оплаты или в расхождении между фактом платежа и историей заказов.

Именно такой сценарий особенно опасен. Он не всегда сразу даёт понять, что речь идёт не о баге модуля и не о случайной ошибке интеграции, а о последовательной компрометации с несколькими этапами: проникновение, закрепление, скрытая подмена платёжного потока и попытка монетизации.

Ниже — практическая история обнаружения подобного инцидента, перечень затронутых файлов и набор тестов, которые помогают выявить инфекцию и подтвердить, что активная фаза взлома действительно остановлена.

Как развивался инцидент

По внутренней хронологии изменений стало ясно, что атака развивалась поэтапно, а не одномоментно.

Сначала был затронут каталог сайта. Это был ранний этап компрометации, когда в файловой структуре появились изменения, не соответствующие обычной работе магазина. Примерно через две недели произошло следующее действие злоумышленников: были созданы или закреплены дополнительные точки доступа — бэкдоры и вспомогательные файлы, которые позволяли возвращаться в систему и продолжать вмешательство даже после частичной очистки.

Затем наступил период относительного затишья. На первый взгляд могло показаться, что всё ограничилось локальными изменениями, но на самом деле это был только подготовительный этап.

Примерно спустя два месяца произошёл первый очевидный бизнес-инцидент: была скомпрометирована страница one-page checkout. В корзине появилась ссылка на сторонний процессор оплаты картой. Эта ссылка не имела отношения к штатной платёжной схеме магазина и уводила пользователя на чужой маршрут оплаты. На этом этапе подмена была обнаружена и удалена, что позволило временно остановить первый вид мошеннического сценария.

Однако расследование показало, что это был не финал, а лишь один из эпизодов. Примерно через три недели после удаления посторонней ссылки произошёл следующий этап атаки — уже на уровне платёжного модуля. В результате платежи через Google Pay и Apple Pay начали уходить не по штатной схеме, а в сторону злоумышленников. При этом покупки не фиксировались в истории магазина: в системе не появлялись нормальные заказы, не формировалась ожидаемая запись об оплате, и для администратора это могло выглядеть как загадочное исчезновение заказов.

Ключевой вывод: сочетание признаков — подмена ссылки в корзине, последующий взлом платёжного модуля, исчезновение покупок из истории и разнесённость событий по времени — указывает не на единичную ошибку, а на целенаправленную многоэтапную компрометацию.

Какие признаки выдали проблему

В подобных инцидентах редко бывает один идеальный индикатор. Обычно картина складывается из нескольких тревожных сигналов:

Какие файлы оказались затронуты или потребовали отдельной проверки

При расследовании важно честно разделять две группы: файлы, которые действительно были изменены в подозрительное время и попали в основной круг проверки, и штатные системные файлы, которые сами по себе не означают взлом, но обязательно анализируются как потенциальные точки входа.

1. Подозрительно изменённые или затронутые файлы

В рамках инцидента внимание привлекли следующие типы файлов:

Типовой перечень того, что обычно попадает в такую выборку:

2. Потенциально опасные штатные точки входа, которые обязательно проверялись

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

В типовом случае это выглядит так:

3. Каталоги, где искали следы закрепления

Отдельно проверялись:

Почему нельзя считать подозрительным любой найденный eval, base64_decode или move_uploaded_file

Одна из самых частых ошибок при расследовании — объявить вредоносным любой файл, где встречаются «страшные» функции. Это неправильно.

Во многих CMS и модулях легитимно встречаются:

Поэтому опасна не сама функция, а её контекст:

Набор тестов, который помогает выявить инфекцию

Ниже — практический список проверок, который полезно выполнять при подозрении на компрометацию интернет-магазина.

1. Поиск недавно изменённых PHP-файлов

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

Что смотреть:

2. Проверка синтаксиса изменённых файлов

Каждый подозрительный PHP-файл стоит прогнать через php -l.

Это не выявляет взлом напрямую, но даёт важную информацию:

3. Поиск опасных функций по исходникам

Следующий тест — поиск по таким шаблонам:

Это не финальный приговор, а фильтр для ручного анализа.

4. Проверка файлов в корне сайта

Любые PHP-файлы в корне сайта заслуживают отдельного внимания, особенно если это:

Даже если такой файл безобиден, он расширяет поверхность атаки.

5. Проверка административных файловых менеджеров и backup-скриптов

Если в админке есть файловый менеджер, загрузчик файлов, скачивание резервных копий или устаревшие скрипты обслуживания, их нужно читать отдельно. Именно такие точки часто становятся удобным инструментом как для первичного входа, так и для повторного закрепления.

6. Поиск PHP-кода в непрофильных файлах

Нужно отдельно искать не только .php, но и любые файлы, содержащие <?php:

Этот тест помогает находить маскировку.

7. Проверка каталогов изображений и вложенных index.php

Наличие большого количества index.php в каталогах изображений само по себе может быть нормой, но важно проверять:

8. Сравнение с чистой версией CMS и модулей

Очень важный тест — сравнить изменённые файлы с официальными оригиналами:

Именно так чаще всего выявляется скрытая вставка ссылки, подмена redirect, замена webhook-логики или внедрение постороннего URL.

9. Ручная проверка платёжного потока

Нужно не только читать код, но и тестировать бизнес-логику:

Если деньги уходят, а заказ не появляется — это один из самых сильных индикаторов компрометации.

10. Проверка логов веб-сервера и PHP

Смотреть нужно:

Искать стоит:

11. Проверка прав и владельцев файлов

Важно убедиться, что:

12. Проверка повторного появления изменений

Очень важный тест после очистки — наблюдение. Если после удаления вредоносного кода через несколько дней или недель снова появляются изменения в других файлах, значит первичный вредоносный код удалён не полностью, остался бэкдор или есть компрометация через панель, модуль или украденные доступы.

Что особенно важно в подобных расследованиях

Главная ошибка — остановиться на первом найденном симптоме.

Если вы нашли и удалили вредоносную ссылку в корзине, это ещё не означает, что проблема решена. В описанном случае именно так и произошло: сначала была обнаружена и удалена ссылка на сторонний процессор оплаты картой, но спустя три недели выяснилось, что злоумышленник сохранил доступ и уже вмешался в платёжный модуль глубже. В итоге Google Pay и Apple Pay начали работать в интересах атакующего, а покупки не фиксировались в истории магазина.

Важно: удаление видимой части атаки не равно полной ликвидации компрометации. Проверять нужно не только шаблоны checkout, но и платёжные контроллеры, redirect-логику, webhook, историю заказов, файловые точки входа и журналы событий.

Практические выводы

По итогам расследования можно сделать несколько важных выводов.

  1. Взлом интернет-магазина часто развивается волнами. Сначала идёт подготовка и закрепление, затем пауза, потом бизнес-атака на оплату.
  2. Если страдает checkout, проверять нужно не только шаблоны корзины. Обязательно анализируются платёжные контроллеры, redirect-логика, webhook и история заказов.
  3. Нельзя ограничиваться поиском одного вредоносного файла. Нужно смотреть на всю цепочку событий, интервалы изменений и повторяемость аномалий.
  4. Служебные файлы вроде phpinfo.php, filemanager, backup-скриптов и upload-обработчиков резко повышают риск. Их лучше удалить или жёстко ограничить.
  5. Лучший способ убедиться, что активная фаза атаки остановлена, — пройти полный цикл проверок. Файлы, логи, права, платёжный поток, сравнение с оригиналами и наблюдение после очистки должны рассматриваться как единый процесс.

Заключение

Этот инцидент показал типичную, но очень опасную схему: сначала компрометация файловой структуры, затем закрепление через бэкдоры, затем подмена поведения checkout-страницы, а позже — вмешательство непосредственно в платёжный модуль.

Снаружи это может выглядеть как странный баг корзины или проблемы с фиксацией заказов. На практике же это может быть хорошо растянутая во времени атака, где злоумышленник сначала получает доступ, потом сохраняет его, а затем начинает извлекать деньги через подмену оплаты.

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

🛡️ Нужна проверка магазина после взлома?

SOLLER.LV поможет провести технический аудит, проверить checkout и платёжные модули, найти следы закрепления, сравнить файлы с оригиналами и оценить, остановлена ли активная фаза компрометации.

📧 info@soller.lv | ☎️ 27463463