Секретный вопрос: чрезмерные запросы Drupal от одной учетной записи пользователя
Я заметил странное поведение на моем сайте Drupal. Мне нравится понимать данные, на которые я смотрю, прежде чем предпринимать какие-либо действия, чтобы не тратить время на неправильные меры, но мне не хватает знаний о безопасности для их интерпретации.
Одна и та же учетная запись сделала много странных повторных запросов, в том числе попытка попасть на страницу редактирования профиля, вход в систему (успешно - кто-то заметил, что у этой учетной записи было 250 активных сессий несколько дней назад) и огромное количество запросов пароля. Учетная запись не имеет прав администратора, и любой может зарегистрироваться для учетной записи.
РЕДАКТИРОВАТЬ: Drupal версия 6,17.
Мои лучшие догадки о том, что происходит, следующие:
(1) Джо Злодей использует несколько запросов на сброс пароля в качестве атаки DOS (работает:<)
(2) Джо Злодей пытается каким-то образом создать словарь возможных паролей из своих повторных запросов (я не вижу способа, чтобы это сработало).
(3) Я являюсь жертвой сбоя множества транзакций и пытаюсь повторить много раз.
Есть ли другие сценарии? Совпадает ли что-нибудь из этого с обычными Drupal-эксплойтами?
Вот данные. Я выполнил следующий запрос к таблице accesslog в моей базе данных:
select count(*), title, path from accesslog where uid = 999 group by title, path;
С результатами ниже (идентификатор пользователя и имена страниц очищены, ofc). Количество (*) в каждом столбце должно указывать количество запросов, полученных для каждой операции.
+----------+-------------------------+------------------------------------------+
| count(*) | title | path |
+----------+-------------------------+------------------------------------------+
| 16 | | home |
| 1334 | Access denied | user/999/edit |
| 184 | Series | events/series |
| 1 | Home | user/register |
| 1 | Reset password | user/reset/999/123124/a2340a1c1123/login |
| 1 | username | user/999 |
| 5 | username | user/999/edit |
| 1 | username | user/me |
| 904 | User account | user/login |
| 11252 | User account | user/password |
| 288 | User account | user/register |
| 1 | Validate e-mail address | user/validate/999/1283452346/a0f123459e |
+----------+-------------------------+------------------------------------------+
2 ответа
Скорее всего, это какой-то номер 1. Сброс пароля полезен, только если у вас есть электронная почта, и вам нужно сделать это только один раз. Я не думаю, что 3 даже возможно.
Это довольно легко исправить. Для некоторых сайтов я делаю это по умолчанию. С hook_menu_alter вы можете удалить пункт меню для сброса пароля. Все пользователи не смогут сбросить свой пароль.
Другой вариант - включить в форму CAPTCHA, поскольку это, скорее всего, делает бот. Должно быть довольно легко с существующим модулем.
Вы можете посмотреть, запланированы ли входы в систему. Если это бот, то логины могут быть каждые 24 часа до секунды, например. Специалист по безопасности, администрирующий сайт, вероятно, удалит учетную запись, чтобы предотвратить атаку. Если это сайт ecomm, сообщите владельцу, что его учетная запись помечена для безопасности. Попросите их создать новую учетную запись. Заблокируйте, а затем удалите существующую учетную запись. Попросите владельца проверить кредит.