Как происходит взлом сайта? Как от него защититься?

Как происходит взлом сайта? Как от него защититься?

Почему так происходит, что одни компании постоянно взламывают, а у других с этим нет никаких проблем? Давайте разберемся, по каким принципам действуют хакеры и как можно от них обезопаситься.

Алгоритм взлома

Запомните главный факт – систем, которые было бы невозможно взломать, не существует. Дело только в том, как много времени это займет. Поэтому вам нужно сделать защиту такой, чтобы ее обход был слишком долгим, а это будет значить, что нападать на ваш сайт попросту невыгодно.


Типичный алгоритм взлома выглядит так:

  • попытка получить доступ, не прибегая к взлому;
  • применить все известные методы взлома;
  • прибегнуть к грубой силе;
  • разработать собственный инструмент;
  • придумать другой подход и начать алгоритм сначала.


Чтобы было понятнее, давайте вместе детально разберем каждый шаг взломщика и посмотрим, каким образом он действует на всех этапах.

Цель взлома

Допустим, хакеру нужно получить доступ к сайту с аккаунта любого пользователя. 


Шаг №1: социальная инженерия

Наилучший взлом – не случившийся. Но как без взлома заполучить доступ к сайту? Конечно же, нужно склонить пользователя к тому, чтобы он сам дал вам свои данные для входа. Этот способ называется социальной инженерией, и вот какие существуют ее разновидности:


Сообщения от администрации

Пишем пользователю письмо от имени якобы официального представителя сайта. Примерное содержание:


 

Получив такое сообщение, человек сразу начинает паниковать. Но если отбросить эмоции и прислушаться к здравому смыслу, сразу становится виден почерк мошенников.


Ненавязчивое общение

Ни с того ни с сего вам начинает писать какой-то человек, желающий познакомиться. Завязывается дружеское общение, в ходе которого он расспрашивает вас обо всяких мелочах: откуда вы родом, какое у вас хобби, каких животных любите, какая у вашей матери девичья фамилия… Догадались, к чему все идет? Конечно же, к тому, чтобы узнать кодовое слово, с помощью которого можно будет получить доступ к вашему профилю.

Фишинг

Вам приходит письмо с просьбой перейти по ссылке и, например, проголосовать или посмотреть что-то интересное. Вы открываете ее и видите форму для авторизации. Заполняете ее своими данными, но дальше не происходит ровным счетом ничего. Вы в недоумении закрываете сайт, но хакер уже успел получить все, что ему было нужно.


Сайт, который вы посетили, был подставным: он скорее всего будет выполнен в том же дизайне, как настоящий, но на самом деле это муляж, который нужен для сбора ваших данных.

Как защититься?

Единственный способ – это информирование пользователей. Регулярно напоминайте им, что:

  • представители сайта не запрашивают персональные данные для входа в аккаунт;
  • одноразовые пароли, как и кодовые слова или ответы на контрольные вопросы, нельзя сообщать третьим лицам;
  • нельзя переходить по рекламным и прочим ссылкам (особенно оставленным в комментариях к статьям или отправленным в сообщениях), и авторизоваться на этих сайтах.

Если в пользовательский аккаунт пытаются зайти с другого устройства, вам нужно убедиться, что попытку авторизации делает именно пользователь, а не посторонний человек: для этого вы должны отправить ему письмо с соответствующей инструкцией.


Шаг №2: взлом с использованием известных уязвимостей

Предположим, узнать у пользователя его данные не получилось. Тогда нужно приступать к следующей стратегии – через уязвимости. Почти все сайты подвержены той или иной из них. Наиболее известная сейчас – SQL-инъекция.


Как устроен SQL? В данном случае нас интересует такая его особенность: за 1 раз можно сделать отправку нескольких запросов, разделив их символом “;”. 


Пример: сайт содержит стандартную форму для входа с полями “login ” и “password”. В большинстве случаев запрос будет примерно таким:

"SELECT * FROM users WHERE login = ' " . $login . "' AND password = ' " . $password . " ';"

Осведомленный хакер может вписать в поле, запрашивающее пароль, любую команду-инъекцию вроде этой:

qwerty'; UPDATE users SET password = '12345' WHERE login = 'user_login

В итоге запрос изменится на:

"SELECT * FROM users WHERE login = ' " . $login . "' AND password = 'qwerty'; UPDATE users SET password = '12345' WHERE login = 'user_login ';"

Как видите, теперь мы имеем два запроса: один по указанным данным выполняет поиск пользователя, а другой изменяет его пароль на 12345. Сработанная инъекция даст хакеру возможность войти в аккаунт с новым паролем.

Как защититься?

Есть много способов. Один из вариантов – запретить ввод кавычек, символа “;” или ключевых слов языка SQL. Но надежнее всего будет отделить передачу данных от запроса. Так СУБД расценит команду-инъекцию не как элемент запроса, а как часть введенных данных.


Шаг №3: грубая сила

Предыдущие 2 шага не сработали, а значит, хакер прибегнет к брутфорсу – подбору пароля. Для этого он воспользуется скриптом, который будет с помощью случайных комбинаций пытаться пройти авторизацию.


Первым делом обычно пробуют самые популярные варианты: 

  • 00000;
  • qwerty;
  • 1111;
  • 12345;
  • qwerty123;
  • password;
  • 1q2w3e и др.

Как защититься?

Ограничьте число попыток авторизации.


Шаг №4: разработка собственных способов взлома

Когда описанные выше методы не помогают, хакеру нужно заняться изучением исходного кода, чтобы понять, через какие уязвимости можно подобраться к вашему сайту. Особенно рискуют те, кто использует CMS (систему управления содержимым или, другими словами, движок для разработки сайта), потому что взломщик всегда может установить этот движок себе и это позволит ему заняться поиском уязвимостей изнутри.

Как защититься?

Стремитесь всегда пользоваться последними версиями: старые лазейки в них устранены, а новые пока никто не обнаружил.


Шаг №5: изменить подход

Когда и точечный взлом не дал результат, хакеру приходится идти обходным путем. Некоторые пытаются добраться до хостинга сайта с помощью того же алгоритма, о котором мы говорили раньше. Но можно попробовать действовать совершенно иначе. Например, если на сайте можно установить аватар (т.е. загрузить изображение), взломщик через эту картинку попробует передать на сервер определенный скрипт – хотя бы файловый менеджер. В итоге хакер получит доступ к загруженным файлам (и к тем, в которых содержится информация для подключения к БД).

Как защититься?

Добавьте на сайт пару-тройку поверок для каждой HTML-формы, через которую загружаются файлы. Вот пример для изображений:

$imageFileType = strtolower(pathinfo(basename($file["name"]), PATHINFO_EXTENSION));

$check = getimagesize($file["tmp_name"]); //Пытаемся получить размеры изображения: если пользователь попробует загрузить какой-нибудь скрипт с расширением изображения, то будет возвращено false

if($check !== false) {

	if($imageFileType == "jpg" || $imageFileType == "png"
		|| $imageFileType == "jpeg" || $imageFileType == "gif") { //Проверка расширения
		//Файл можно загружать

	}

}

Таким образом, взломщик не сможет загрузить ничего лишнего – только настоящие графические файлы. Тем не менее, и тут в защите есть брешь: вредоносный скрипт можно поместить внутрь изображения.


Кроме того, хакер может сделать попытку подменить серверные скрипты путем подключения к FTP. И если он раздобудет данные для авторизации в phpmyadmin, в его руках окажется доступ к БД целиком.


Но от утечки есть возможность защититься шифрованием. К примеру, хешируйте пароли алгоритмом SHA-2, а ценные персональные данные можно кодировать с помощью шифра Виженера, либо инструментом посерьезнее. Самое главное, хорошо спрятать ключ для расшифровки.


Заключение

Кибербезопасность можно представить как невидимую войну между специалистами служб безопасности и хакерами, в которой первые стремятся укрепить баррикады, а вторые найти способы их обойти. 


Так что если вы работаете в достаточно крупной компании, которая потенциально может привлечь взломщиков, вам нужно посвятить много времени и усилий тому, чтобы защитить ее сайт от главных методов взлома.

()
Количество показов: 98
8 июля 2020

Возврат к списку

Корзина0 позиций на сумму 0 руб.