Вопрос: База данных взламывается снова и снова; уже очищен сайт для SQL-инъекций


У меня есть клиент, который попросил меня проанализировать сайт на предмет уязвимости.

Что происходит, каждый уик-энд или около того, в поле одной записи из одной таблицы в базе данных каждый раз меняются на одно и то же. Из Jewelry в Jewelery <a href="http://[**REMOVED-FOR-SF**]/viewPress?press_id=407">[**REMOVED-FOR-SF**]</a><a href="http://[**REMOVED-FOR-SF**]/[**REMOVED-FOR-SF**].html">[**REMOVED-FOR-SF**]</a>, Тот факт, что это всегда одна и та же запись, заставляет меня думать, что это какой-то автоматический сценарий, но если это так, я не могу его найти.

Достигнуто следующее:

  • Исправлены уязвимости SQL-инъекций
  • Предотвращение выполнения PHP в 777 каталогах
  • Изменен пароль базы данных после каждого исправления
  • Изменен пароль CMS после каждого исправления

Каков следующий шаг?


6
2017-09-13 23:04


Источник


Вы регистрируете HTTP-запросы на веб-сервере (Apache, IIS и т. Д.)? - gravyface
Как дела полностью что вы устранили все уязвимости SQL-инъекций? - Hello71
Вы полностью уверены, что это не делается с помощью кода на вашем собственном сайте? - John Gardeniers
@gravyface @ Hello71: Я установил поле метки времени в базе данных, которое сообщило мне, когда эта запись была отредактирована. Когда это было снова, я перекрестно связал его с журналами Apache и не нашел ничего похожего на странное. - Matt Alexander
@John: Ну, я не писал это, поэтому я предполагаю, что это небольшая возможность, но на самом деле нет слишком большого доступа для записи, кроме как из CMS, который, я считаю, безопасен (измененные пароли, исправления SQL-инъекций). - Matt Alexander


Ответы:


Злоумышленнику, скорее всего, не нужно знать пароль для выполнения изменения - вот как я буду обращаться к нему:

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

Обратите внимание, что вы можете позвонить debug_backtrace () на PHP 4.3+, чтобы изолировать включенные файлы, если это может быть причиной вредоносного подключаемого модуля.


5
2017-09-14 00:15



К сожалению, на сайте используются прямые вызовы mysql_query() повсюду, но я думаю, что это звучит как отличное направление, чтобы войти. На самом деле не так уж сложно написать обертку для mysql_query() и указать все на это. - Matt Alexander


Вероятно, остаточная инъекция - вы можете настроить триггер DB, чтобы вы знали, когда запись снова изменится? Затем коррелирует это с вашими журналами веб-сервера - должно немедленно привести к виновнику.

Также убедитесь, что вы регистрируете столько, сколько можете получить (рефереры и т. Д.)


2
2017-09-14 04:34



Я установил поле timestamp в базе данных, которое сообщило мне, когда эта запись была отредактирована. Когда это было снова, я перекрестно связал его с журналами Apache и не нашел ничего похожего на странное. - Matt Alexander


Вы еще посмотрели на SQL-сервер? Возможно, там работает сценарий, или какая-то процедура настроена так, чтобы сделать обновление, которое было сделано по законной причине (или даже просто для тестирования), и с тех пор было забыто, но все еще запущено. Вероятно, есть некоторые жестко закодированные значения, подобные этой опечатке.


0
2017-09-14 16:47





Установили ли вы генератор ссылок в CMS? Некоторые сайты автоматически ссылаются на создание обратных ссылок на сообщения в блоге. Это похоже на нечто подобное. Проверьте расширения CMS и посмотрите, есть ли там что-то.


0
2017-09-30 00:13





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


0
2017-09-30 00:59





Вы можете настроить modsecurity и добавить правило для регистрации данных POST всякий раз, когда он видит версию с ошибками. Если это кто-то редактирует его или SQL-инъекцию, он должен быть зарегистрирован.


0
2017-09-30 01:28