Немного предыстории: мы только что взломали нашу систему АТС. Сам сервер кажется безопасным (нет зарегистрированного несанкционированного доступа к консоли - SSH и т. Д.), Но каким-то образом хакерам удалось внедрить нового пользователя-администратора в программное обеспечение УАТС (FreePBX, поддерживаемое MySQL). Логи Apache подразумевают, что хакерам удалось добавить пользователя без использования веб-интерфейса (или какого-либо эксплойта в веб-интерфейсе).
Теперь я обнаружил, что MySQL работает без пароля root (!!) и открыто привязан к внешнему IP-адресу (очевидно, я сейчас заблокировал это). Однако единственным пользователем корневого уровня в MySQL был 'root'@'localhost'
и 'root'@'127.0.0.1'
, оба из которых должны были быть доступны только локально.
Итак, мой вопрос заключается в следующем:
Есть ли способ подделки соединения с MySQL, чтобы он позволял подключаться к пользователю 'root' @ 'localhost' с удаленного IP-адреса, БЕЗ выполнения какого-либо другого эксплойта локально?
Для справки - это Centos 5 (Linux 2.6.10) под управлением Mysql 5.0.95.
Ответы:
Нет.
MySQL никогда не будет входить в систему пользователя с указанием
localhost
или127.0.0.1
хоста, если вы не из локальной системы. Обратите внимание, что это также охватывает уязвимость обхода аутентификации, CVE 2012-2122; сравнение паролей может быть обмануто, но сравнение хостов - нет.Вам нужно что-то в системе, чтобы отключить прокси, чтобы «обмануть» проверку исходного хоста. Вспоминается что-то вроде phpmyadmin или балансировщик нагрузки, такой как HAProxy, работающий перед TCP-портом MySQL.
источник
Имя
root
создано по умолчанию и очень хорошо известно. Корень литерального значения не имеет никакого значения в системе привилегий MySQL. Следовательно, нет необходимости продолжать с именем пользователяroot
.Вы должны изменить
root
имя пользователя на что-то другое, чтобы внешний мир не смог его легко идентифицировать (угадать), это уменьшит попытки взлома.Например: если у вас есть пользователь с именем
root
@,localhost
который всем известен, и, следовательно, хакеры попытаются подключить его, вы должны изменить его на что-то конкретное, напримерadmin_db_name
@,localhost
для большей безопасности.Контролируйте переменную состояния, вызываемую
Aborted_connects
периодически, чтобы узнатьRefused
соединение с вашим сервером MySQL, оно должно быть 0 послеFlush status;
команды и не должно увеличиваться дальше.источник
Включает ли «отсутствие зарегистрированного несанкционированного доступа» неудачные попытки входа в систему? Если нет, то это может быть CVE 2012-2122 .
источник