Взлом сайта: простые советы по безопасности
Для взлома не надо быть профессиональным хакером, речь в статье о так называемых «кулхацкерах», использующих плоды чужих «трудов» и самых простых случаях взлома. Статья ни в коей мере не howto, как взломать сайт. Цель — показать, насколько просто осуществляется взлом и рекомендовать меры по защите сайта и действия, в случае взлома «косовскими албанцами».
Приведён пример успешного розыска хакера российскими правоохранительными органами.
Как осуществляется взлом сайта?
- перебор простых паролей доступа к админке/ftp («имя домена», 12345, admin, test и т.п.) — большое число взломов, как ни странно, происходит именно так;
- использование уязвимостей скриптов (CMS и модулей).
Дело буквально пяти минут и не требует серьёзных знаний от взломщика. Дальнейшие шаги зависят от фантазии автора взлома — от неприятного дефейсмента, до уничтожения сайта и попытки захвата управления другими сайтами и сервером.
Я принимал меры, но как взломали сайт?
Как же на виртуальном хостинге хакер может получить доступ к другим сайтам, если все известные меры владельцем сайта предприняты? Ведь почти повсеместно доступ к площадкам сайтов разграничивается по логинам пользователей и, казалось бы, это должно обезопасить сайт от соседей.
Ограничимся одним случаем. Серьёзную опасность представляет запуск скриптов под модулем Apache, например mod_perl. Запуск скрипта в этом случае осуществляется под пользователем Apache, который имеет доступ к данным пользователей сайтов.
Хакер, как описано выше, получает доступ к площадке одного сайта. Затем осуществляется размещение консольного скрипта, например cgi-telnet. И если права на конфигурационные файлы сайтов других пользователей выставлены в 644 (или тем более 777!), из консоли несложно прочитать содержимое файлов с паролями. Но! Только если запуск perl-скрипта осуществляется под пользователем Apache, т.е. под mod_perl (аналогичная ситуация с mod_php). При работе, например, под FastCGI — такой способ не даст доступа к файлам. Защититься от этого можно, устанавливая на критически важные файлы права 600 и используя FastCGI.
Как можно получить доступ к управлению самим сервером?
Приведу один распространённый пример для Linux-систем. Аналогично, сначала необходим доступ на площадку одного сайта.
Есть несколько уязвимостей в ядре через нулевой указатель, которым подвержены десятки Linux-систем, например: Linux Kernel ‘sock_sendpage()’ NULL Pointer Dereference Vulnerability. Там же описаны и эксплоиты (осторожнее, это работает!).
Несмотря на то, что данная проблема известна давно, есть множество непропатченных серверов, в том числе и в России. Самый простой способ защиты описан, например, здесь.
Это не гарантирует 100% защиту, т.к. например при установке wine параметр mmap_min_addr может быть сброшен обратно в 0. Настоятельно рекомендуется использовать патчи, которые можно взять на странице, указанной выше, или в официальных источниках.
Обсуждение по этому вопросу велось и на хабре.
Ответственность за защиту от данных эксплоитов лежит на администраторе сервера.
Последовательность действий по устранению последствий
- Постарайтесь сразу определить, какие именно файлы были заменены, это может быть как index.php, так и файлы шаблонов, изображений и т.п.;
- Сделайте скриншоты последствий;
- Обязательно оповестите хостинг-провайдера и согласуйте свои дальнейшие действия;
- Сохраните в отдельный каталог файлы сайта, время модификации файлов в дальнейшем поможет Вам определить злоумышленика;
- Восстановите из резервной копии сайт или обратитесь для этого к хостеру;
- Скачайте логи ошибок и доступа к сайту или попросите хостера их предоставить, лучше скопировать их в отдельный каталог, чтобы не удалились при ротации логов;
- Анализ времени изменения файлов и сопоставления с записями в логах позволяют определить характер используемой уязвимости и IP-адрес злоумышленника;
- Обновите скрипты или (если это невозможно) откажитесь от использования уязвимых модулей;
- Обязательно смените все пароли доступа.
Преступление и наказание
Наказать хакера, особенно если он действует под юрисдикцией другого государства и предпринимает все меры, чтобы его нельзя было отследить — сложно или практически невозможно. Но есть и успешные примеры.
Отделом К города N возбуждено уголовное дело по ст.272 УК РФ «Неправомерный доступ к охраняемой законом компьютерной информации. » в отношении гражданина РФ по заявлению юридического лица (владельца сайта). В феврале 2010-го года был выполнен взлом сайта производства одной из российских дизайн-студий («самописный» скрипт), через найденную злоумышленником уязвимость в коде сайта. Целью взлома являлось размещение рекламных баннеров. Злоумышленник принёс свои письменные извинения владельцу сайта с просьбой досудебного урегулирования — кроме уголовной статьи ему грозит и отчисление из ВУЗа. Так сказать — в интересах следствия подробности не разглашаются.
Если ущерб значительный, а IP-адрес «местный» (даже динамический и принадлежит Интернет-провайдеру), а не «китайского прокси» — можно с заявлением и имеющимися материалами обратиться по месту жительства в правоохранительные органы, а конкретно в отдел К. Следователи сами запросят у хостинг-провайдера официальное письмо с журналами и пояснениями ситуации, у Интернет-провайдера — кому был выделен IP-адрес. Компании обязаны предоставить эти сведения по запросу правоохранительных органов.
Взломщику общение с правоохранительными органами доставит много неприятных часов, особенно если на компьютере остались следы противоправной деятельности, не говоря уже о возможном судебном преследовании.
Краткие выводы
- нигде не хранить учётные данные доступа;
- использовать длинные комплексные пароли и нестандартные логины, периодически выполнять их смену;
- своевременно обновлять скрипты с выходом обновлений;
- при выборе компонента проверять на наличие незакрытых уязвимостей;
- следить за правами на файлы скриптов и особенно критические файлы конфигурации;
- средствами веб-сервера (например, .htaccess и .ftpaccess) разрешить доступ только с Вашего IP;
- да, сохранять копирайты авторов скриптов надо, но по ним, а так же фрагментам адресной строки модулей, злоумышленники и ищут уязвимые сайты — смените хотя бы стандартные адреса обращения к скриптам;
- периодически, в том числе внешними сервисами, проверять доступность конкретных разделов сайта;
- иметь локальные бекапы сайтов.
PS: статья не претендует на абсолютную полноту изложения и ориентирована не на IT-гуру, разумеется, при целенаправленном взломе конкретного сервера или сайта могут применяться другие средства. Рад буду дополнить по комментариям хабрасообщества, в том числе и другими примерами.
И вкратце о действиях при взломе сайта.
Что такое админ-панель сайта и как туда попасть
Админ-панель для сайта позволяет управлять настройками проекта, добавлять новые страницы и удалять старые, изменять внешнее оформление ресурса и редактировать контент. В зависимости от используемой CMS способ доступа к админке сайта различается. Рассмотрим, как зайти в админ-панель WordPress, Joomla и OpenCart.
Как найти админ-панель сайта
Админ-панель есть у всех сайтов с CMS — системой управления контентом . Такая система позволяет с легкостью создавать сайт и наполнять его материалами любого формата без навыков программирования.
Что почитать о CMS:
Если сайт сделан не с помощью CMS, а разработан программистами с нуля, то его редактирование потребует изучения HTML, CSS, PHP и других языков программирования. В некоторых случаях разработчики также создают адаптированную под нужды проекта CMS для облегчения работы с сайтом, тогда способ входа в админку определяется разработчиками, например, клик по логотипу.
Чтобы попасть в админку сайта с CMS, необходимо действовать по следующему алгоритму:
- Определить CMS ресурса.
- Открыть форму авторизации.
- Ввести логин и пароль.
- Зайти в админ-панель.
Определяют CMS ресурса как с помощью специальных онлайн-сервисов, так и вручную. Нередко найти сведения о CMS можно в подвале сайта либо в HTML-коде. Этот сайт сделан в WordPress:

Если в подвале информация о CMS не отображается, просмотрим HTML-код главной страницы сайта. Для этого нажмем правой кнопкой мыши и выберем «Просмотр кода страницы»:

Из анализа кода видно, что используется система Joomla!:

Также информацию о CMS получают с помощью онлайн-сервисов, например, инструмента BuiltWith. Просто введите домен интересующего вас сайта на главной, и получите уйму статистики по ресурсу. В том числе и об используемых CMS.

Вход в админ-панель WordPress
WordPress — самая популярная система управления контентом в мире, с помощью которой к 2022 году создано около 18 миллионов сайтов. Ежемесячно более 400 миллионов пользователей посещают сайты на WordPress. Изначально CMS позиционировалась как система для блогов, однако сейчас ее активно используют и для интернет-магазинов.
Чтобы войти в админку WordPress, введем в адресной строке браузера название домена с дополнением /wp-login.php либо /wp-admin, например:
https://site.net/wp-login.php/,
https://site.net/wp-admin/
В окне авторизации введем email и пароль, затем нажмем «Войти»:

После этого будет доступна админка WordPress, в которой отображается меню и последние опубликованные материалы:

Возможные проблемы при входе в админку WordPress
1. Забытые данные для авторизации
Если пароль от сайта утерян, нужно на странице авторизации выбрать «Забыли пароль?»:

После этого введем логин или email, нажмем «Получить новый пароль», чтобы система отправила письмо на указанную электронную почту:

2. Ограниченный доступ
Могут быть установлены ограничения доступа к админ-панели сайта, например, внесен список определенных IP-адресов, с которых можно зайти в админку. В этом случае при попытке авторизации отобразится 403 ошибка: «You don’t have permission to access /wp-login.php on this server».
При подобной ошибке необходимо откорректировать файл .htaccess, расположенный в основном каталоге сайта на хостинге:

После этого нужно проверить, нет ли в файле такого фрагмента кода:<Files wp-login.php>.
Если код есть, то доступ будет запрещен с любых IP-адресов. Необходимо удалить данные строчки кода и доступ к админке будет восстановлен. Второй вариант — открыть доступ к админ-панели со всех адресов либо только с собственного IP-адреса. Для доступа с любого IP введем в конце файла указанные строчки:
Для доступа с определенного IP добавим такой код, указав вместо your_IP свой IP-адрес:
Перемещенная страница авторизации
В целях безопасности административную панель часто переносят на другой адрес, благодаря чему усложняется процесс взлома сайта. Чтобы поменять адрес админ-панели WordPress, используют плагины, которые позволяют установить произвольный адрес для авторизации. Его необходимо запомнить, чтобы в дальнейшем использовать для доступа к админке.
Вход в админ панель Joomla
Joomla занимает второе место по использованию во всем мире в рейтинге CMS, на данный момент на ней функционирует 2,5 миллиона сайтов. Чтобы попасть в админку Joomla, необходимо добавить к домену сайта /administrator/, например: http://vjoomla.ru/administrator/
Далее необходимо ввести логин, пароль и нажать «Войти»:

Бывают и проблемы при входе в админку Joomla.
1. Забытые данные для авторизации
Если вы забыли пароль, необходимо ввести в адресную строку браузера домен сайта и добавить к нему /index.php?option=com_user&view=reset, например: http://vjoomla.ru/index.php?option=com_user&view=reset
Затем введите email, указанный при регистрации, пройдите проверку на спам и нажмите «Отправить»:

2. Нет доступа в админку при правильном вводе логина и пароля
Такая проблем может быть вызвана сохранением конфигурационного файла configuration.php в формате UTF-8, в котором добавляется запись BOM из трех символов. Эти три лишних символа воспринимаются CMS как ошибка, вследствие чего сбрасывается авторизация. Чтобы исправить подобную ошибку, необходимо скачать в панели управления сайта на хостинге файл configuration.php и пересохранить его с помощью редактора Notepad++, выбрав «Кодировать в UTF без BOM» в меню «Кодировки». После этого снова добавьте файл в исходный каталог.
Вход в админ-панель OpenCart
OpenCart — достаточно популярная CMS для создания интернет-магазинов. На август 2019 года на ней функционирует почти 400 тысяч сайтов. Чтобы попасть в административную панель OpenCart, добавим к домену сайта /admin, например: http://shop.epageview.com/admin/
В форме авторизации нужно ввести логин и пароль, затем нажать «Войти»:

После этого откроется админ-панель, в которой доступно редактирование сайта, а также просмотр статистики по заказам и покупателям:

О чем стоит помнить при входе в админку OpenCart?
1. Забытые данные для авторизации
Если утерян или забыт пароль от админки, нажмите на странице авторизации кнопку «Забыли пароль?»:

После этого укажите регистрационный e-mail и нажмите «Сброс», чтобы получить письмо для обновления пароля:

2. Отсутствует доступ в админку после смены хостинг-провайдера
При переносе сайта на другой хостинг иногда возникает проблема, связанная с использованием устаревшего драйвера mysql данным провайдером. В этом случае отредактируйте файлы config.php в корневом каталоге и папке admin:

Поменяйте в них указанную строку кода: define(‘DB_DRIVER’, ‘mysqli’), заменив название драйвера mysqli на mysql:

Запомнить
- Чтобы попасть в админку сайта, необходимо определить, какая именно CMS используется на проекте. Для этой цели подойдет ручной анализ сайта и его HTML-кода, а также онлайн-сервисы.
- Доступ в странице авторизации осуществляется с помощью добавления в адресной строке браузера к домену сайта определенных слов — admin, wp-login.php, administrator и прочее.
- При утрате логина и пароля их лекго восстановить, указав адрес электронного ящика, который был добавлен в аккаунт при создании проекта.
- При попытках входа в админку CMS иногда возникают проблемы, связанные с ограниченным доступом только с указанных IP, изменением адреса страницы авторизации, ошибками в конфигурационных файлах. Эти ошибки исправляют с помощью редактирования файлов .htaccess и configuration.php (config.php) на хостинг-провайдере.

Закончил факультет кибернетики. Работал интернет-маркетологом. Не по наслышке знаком с SEO, PPC, таргетингом, ремаркетингом и продвижением сайтов — в течение нескольких лет практиковал на фрилансе. В портфолио есть успешные кейсы. Пробовал создать собственное агентство, но прогорел и решил поменять сферу деятельности. Далеко из профессии не ушел — использовал свои знания и опыт в копирайтинге. С 2016 года работаю редактором и автором текстов в Netpeak Journal.
Как получить доступ к админке сайта
Бесплатный курс по пентесту от Школы Кодебай
Запишись на вводный видеокурс по пентесту , состоящий из 24 уроков. Разные инструменты, тактики и навыки: сканирование сети, фаззинг, брутфорс, сниффинг, sql-инъекции, mimikatz, загрузка полезной нагрузки, эксплуатация разных уязвимостей, XSS, CSRF и немного Reverse-shell. Будет полезен для быстрой подготовки к CTF, а так же для прохождения курсов « SQL Injection Master » и « WAPT ».
Бесплатный курс SQL Injection от Школы Кодебай
Запишись на вводный курс по SQL инъекциям. Курс состоит из 6 видео уроков. К каждому уроку приложена методичка. Есть общий чат для учащихся. Будет полезен для быстрой подготовки к CTF, а так же для прохождения курсов « SQL Injection Master » и « WAPT ».
Как восстановить доступы к сайту: самые проверенные способы
Потерять доступы к сайту можно по разным причинам: забыли пароль или логин, взломали сайт и т.п. В любом случае, это не повод отчаиваться, так как в этой статье мы собрали для вас полное руководство по восстановлению доступов к сайту. Если для вас это вопрос срочный, то воспользуйтесь содержанием, указанным ниже, для перехода к интересующему пункту.
Восстановление доступа к админке сайта
Наиболее популярный вид доступа к сайту, который может понадобиться восстановить – это доступ к административной панели сайта или к CMS. Ниже указаны способы для 5 распространённых CMS. Сразу предупрежу, что для восстановления понадобится наличие хотя бы доступа к хостингу сайта либо к почте админа.
Доступ к WordPress
1-ый способ. Восстановление пароля через почту
Если ваш пароль перестал подходить по каким-либо причинам, то самый простой способ восстановить его – с помощью функции «Забыли пароль?».
Нажмите на кнопку «Забыли пароль?».

Введите имя пользователя или email.

Откройте почту и следуйте указаниям в письме.
2-ой способ. Есть FTP-доступ к сайту
Необходимо найти файл functions.php в папке той темы, которая активна на сайте.
Необходимо открыть его через редактор кода (например, Notepad++) и добавить строку:
Строку необходимо добавить в рамках php-кода:

После этого сохраните файл и закачайте его в ту же папку, где и скачивали. Файл нужно сохранять в кодировке UTF-8 без метки BOM.

Далее заходим на сайт, на страницу авторизации в админ-панели. Логин указываем прежний (admin), а пароль вводим password.


Важно! Не забудьте удалить строку после авторизации в админ-панели, иначе пароль будет перезаписываться каждый раз при обращении к сайту. После этого поменяйте пароль на свой.
3-ий способ. Есть доступ к базе данных
Если по каким-то причинам предыдущий способ не подошёл, представляю вашему вниманию следующий вариант.
Создаём файл с названием pass.php и со следующим содержимым:
<?php
$md5 = md5("password«);
print $md5;
?>
Загружаем файл в корневую папку сайта.
Переходим по ссылке https://адрес-сайта.ru/pass.php и копируем строку со страницы.
Теперь откройте базу данных и найдите таблицу wp_users
В открывшемся поле будет первая строка – чаще всего это данные админа.
Выберите столбец user_pass и замените его содержимое на скопированное значение из пункта 3.
Удалите данные из столбца user_activation_key, если там что-то заполнено.
Авторизуйтесь в админ-панели сайта с помощью пароля password и смените пароль на свой.
Больше статей на схожую тематику:
4-ый способ. «Последний шанс»
Заключительный способ, которым можно воспользоваться, если не удалось восстановить доступ предыдущими вариантами.
Необходимо загрузить в корневой каталог файл с названием reset-password.php и следующим содержимым:
wp_set_password( ’my-new-password’, $user->ID );
echo ’New password set.’;
echo ’Error: User not found.’;
Вместо my-username введите ваш логин, а вместо my-new-password новый пароль.
Если всё верно, то после этого вы сможете авторизоваться в админке. Если скрипт показывает «User not found», исправьте логин и повторите процедуру.
Не забудьте удалить файл!
Доступ к Bitrix
1-ый способ
Нажмите на кнопку «Забыли свой пароль?».
Укажите логин пользователя или email.

Откройте письмо и перейдите по ссылке.
Укажите новый пароль.
2-ой способ
С помощью данного способа пароль восстанавливается для первого зарегистрированного пользователя, который из-за этого обладает администраторскими правами.
Создайте php-файл с любым именем и сохраните в нём следующий скрипт:
Загрузите данный файл через FTP в корневой каталог www/имя сайта/.
Откройте файл на сайте: https://адрес-сайта.ru/название-скрипта.php (после перехода будет назначен новый пароль: Bitrix*123456)

Авторизуйтесь в админ-панели с новым паролем и установите свой.


Если закрыт доступ для неавторизованных пользователей, то сначала скорректируйте файл access.php в корне сайта, заменив:
3-ий способ
Также сохраняем в php-файле новый скрипт:
Загрузите файл в корневой каталог www/имя сайта/.
Зайдите в админ-панель – логин и пароль запрашиваться не будут.
Смените пароль на свой и удалите файл скрипта.
Доступ к MODX
У обладателей данной CMS есть эксклюзивная «возможность» – быть заблокированным при вводе неправильных данных 3-5 раз подряд.

Если вы точно помните пароль и неправильно его ввели, то можно разблокировать его следующим способом:
Зайдите в базу данных.
Найдите таблицу modx_user_attributes.
Замените на 0 содержимое следующих полей:
- blocked
- blockeduntill
- failedlogincount

Авторизуйтесь в админ-панели под своими логином и паролем.
Если вы всё-таки забыли пароль, то ниже представлено 2 варианта восстановления.
1-ый способ
Нажмите «Забыли свой пароль?».

Укажите email учётной записи.

Откройте почту – вам придёт письмо со ссылкой на сброс пароля.
Перейдите по ссылке и укажите свой пароль.
2-ой способ
Если у вас нет доступа к почте, то можно восстановить доступ следующим способом:
Зайдите в базу данных сайта.
Найдите таблицу modx_user_attributes.
Замените почту на ту, к которой есть доступ.

Выполните процедуру из 1-го способа.
Нравится статья? Тогда смотрите наши курсы!
Доступ к OpenCart
1-ый способ
Нажмите кнопку «Забыли пароль?».

Введите email администратора.

Перейдите по ссылке из письма.
Введите новый пароль.
2-ой способ
Если забыли и пароль, и email, то восстановим через базу данных.
Создаём файл с названием pass.php и со следующим содержимым:
<?php
$md5 = md5("password«);
print $md5;
?>
Загружаем файл в корневую папку сайта.
Переходим по ссылке https://адрес-сайта.ru/pass.php и копируем строку со страницы.
Откройте базу данных через phpMyAdmin или через интерфейс, который вы используете.
Найдите таблицу с названием «префикс вашей базы данных + _user» и откройте её.
Замените значение поля password на скопированное значение из пункта 3 (у вас может получиться набор символов, отличный от приведенного на скриншоте):

Зайдите на страницу авторизации и введите ваш логин и пароль password.
Смените пароль на свой.
3-ий способ
Не помните ни пароль, ни email, ни доступа к базе данных через панель хостинга? Данный вариант поможет восстановить доступ к админ-панели.
Откройте через FTP файл config.php и найдите информацию о базе данных.

Подключитесь к базе данных через MySQL-менеджер.
Повторите процедуру из 2-го способа.
4-ый способ
Создайте в корне сайта файл user.php со следующим содержимым:
header(’Content-Type: text/html; charset=utf-8′);
$db = mysqli_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$user = ’Login’; // Логин пользователя
$password_user = ’Password’; // Пароль пользователя
$query_content = «INSERT INTO `» . DB_PREFIX . «user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
$result_content = mysqli_query($db, $query_content);
echo "<p>Пользователь <strong style=\"color:green;\">$user</strong> c паролем <strong style=\"color:green;\">$password_user</strong> успешно создан!</p>";

Перейдите по адресу https://адрес-сайта.ru/user.php – вы увидите уведомление об успешном создании пользователя и доступы для авторизации.

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

Восстановление доступа к базе mysql
Необходимо найти конфигурационный файл:
CMS
Путь к файлу и его имя
Откройте данный файл и найдите строки с названием базы данных, логином и паролем.
Откройте интерфейс phpMyAdmin, используя полученные логин и пароль.
Восстановление доступа к хостингу
Самый тяжёлый случай, так как восстановить доступ к хостингу можно только одним способом. Если у вас сохранились платёжные документы, то обратиесь в поддержку хостинга и предоставьте им все подтверждающие документы, после чего они помогут вам.
Восстановление доступа к регистратору домена
Принцип тот же самый, что и с доступами к хостингу: пишем запрос в поддержку хостинга и предоставляем им документы, подтверждающие личность/организацию. Возможно, понадобятся платёжные документы.
Примеры роста кликов, конверсий, заказов и прибыли:
Заключение
В данной инструкции я постарался указать способы решения наиболее распространённых проблем. Если для вашего случая не подходит ни один из способов – напишите нам в комментарии или отправьте запрос на странице контактов.
А если вы по каким-либо причинам не можете восстановить доступы к сайту самостоятельно, то наши специалисты помогут вам – просто напишите или позвоните нам.