Одно время подрабатывал на разных задачах — в основном ко мне обращались по «сарафанному радио» друзья друзей, знакомые знакомых и так далее. Поступила интересная заявка:
— У нас уволился программист, ушел, обиделся и забрал все доступы к сайту. Работа интернет-магазина парализована, мы ничего не можем сделать, а он не выходит на связь.
Согласился помочь, но вначале нужно выяснить следующие данные:
- На кого оформлено доменное имя? Возможно, оно вообще оформлено на программиста и тогда толку от восстановления сайта не будет.
- Что с хостингом и кто его оформлял?
Выяснилось, что каким-то чудом доменное имя было записано на владелицу конторы, что решало 50% проблем. Да, доступ к ДНС серверам есть и сайт пока работает. Но доступа к самому серверу нет. Выяснилось, что VPS (виртуальный сервер) оформлен на этого товарища, который решил срулить с конторы и попросту обиделся. Не знаю подробностей, но программисты часто обижаются. Может денег хотел, может лучших условий. Но в итоге парализованным остался интернет-магазин. Нет, он работал, даже принимал заказы, только вот невозможно их обрабатывать. Товарищ просто сменил все доступы.
Первое, что пришло в голову — обратиться к хостеру. Конечно же, хостер отказал нам, так как услуга записана на другое имя. Да и толку бы особо не было, скинули бы они образ этого сервера, но без пароля или сертификата получить данные с него было бы крайне сложно.
Казалось бы, ситуация патовая — идти «на ковер» к этому товарищу, соглашаться на все его условия. Только вот он на связь не выходил, а по адресу регистрации не проживал. Решать данный вопрос в законодательном поле — очень долго, процесс может продолжаться месяцы и решение может быть вынесено не в пользу владельца фирмы. За это время компания, скорее, обанкротилась, потому что сайт был раскручен, к нему были привязаны рекламные кампании.
Но я не привык браться задачи и не решать их. Возможно, мне просто повезло — другого способа, как этот и не было. Расскажу, как выкрутился.
Попросил владелицу дать, что есть вообще от сайта — любую информацию. Выяснилось, что у нее есть годовалая копия сайта. Она уже была не актуальна, так как этот товарищ за последний год много чего уже сделал, да и информация на нем постоянно обновлялась. Но это была единственная зацепка, которой я воспользовался.
Повезло, что движок, а точнее CMS сайта был кастомный — то есть самописный. Смесь фреймворка с различными технологиями разных лет. Как говорят программисты — «костыль на костыле и костылем погоняет». Но в данном случае для меня это был скорее плюс, чем минус. Я стал внимательно изучать код шаг за шагом, так как в кастомном коде может быть какая-то уязвимость, которую попросту не заметили. Ведь CMS разрабатывают команды, а тут работало несколько программистов «наскоками».
Запустил у себя на локальном сервере старую копию магазина, попутно анализируя код. Удалось найти место — можно было из доступа в админку загрузить вместо картинки .php файл и его выполнить. Только вот беда — доступа в админку у нас нет. Все поменяли же. Но база пользователей, что у меня была, была достаточно большой. Существовала надежда, что товарищ не стер все логины и пароли, а поменял доступ только тем, кто пользовался сайтом.
Но, увы, пароли хранились в моей старой базе зашифрованными по стандарту md5. Допустим, слово «password» в md5 будет хэш-строка — 5f4dcc3b5aa765d61d8327deb882cf99. Расшифровать md5 практически невозможно, но есть сервисы, которые хранят разные варианты хэширования. Увы, сервисы не помогли, пришлось обращаться к старому дедовскому методу — брутфорсу.
То есть полный перебор всех вариантов паролей. Написал скрипт, загрузил различные словари и на ночь на своем ПК поставил перебор 10 хэшей md5 по словарям. На утро мне повезло — один пароль подобрался. Оставалась надежда, что доступ работает на живом сайте.
Мне второй раз повезло. Сайт принял этот пароль, который, оказывается, принадлежал тестовому пользователю. Оставалось дело за малым — загрузить картинку в виде php скрипта и запустить его в браузере. Нашел в сети готовый скрипт, эдакий Norton Commander в браузере в одном файле.
Далее последовала кропотливая работа по сохранению всех файлов. Нужно было делать копию каждого файла, менять расширение и выкачивать через браузер. Увы, консоль через PHP скрипт не заработала — прав было недостаточно. С MySQL базой проблем не возникло, помог обычный скрипт-дампер, с помощью которого база данных была выкачана за пару минут.
Будет интересно, читайте далее:
Остальное было дело техники — поднять сайт уже на сервере, который купила владелица бизнеса и все настроить.
Еще некоторое время помогал им в развитии сайта, а потом уже вырос из этой темы.
Тот товарищ, кстати, так и не объявился — потом уже узнали, что оказывается его перекупили конкуренты, а этот финт с сайтом был подстроен специально, чтобы лишить данную компанию продаж. Но это уже другая история.
Посетите наш сайт и социальные сети: