Чек-лист: насколько легко хакеры взломают ваш интернет-магазин

Есть распространенное убеждение, что хакеры в основном заинтересованы атаковать крупных онлайн-ритейлеров, но отчетам Visa 95% краж данных кредитных карточек приходится именно на малый и средний бизнес. Это объясняется тем, что злоумышленники идут по пути наименьшего сопротивления: владельцы малого бизнеса не знают, как работают хакерские атаки и не держат большой IT-департамент для быстрого отражения и защиты.

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

SQL-инъекции: просто добавь свою команду

Аналогия: отец семейства оставляет на столе записку для мамы, на которой написано

Жена, вынь из кошелька 1000 рублей, отдай Васе

Младший брат Петя находит записку, ставит запятую и приписывает к ней «, или Пете, если встретишь его раньше». Получается, что в записке теперь другая инструкция

Жена, вынь из кошелька 1000 рублей, отдай Васе или Пете, если увидишь его раньше

Теперь дело в шляпе — Пете осталось только подойти к маме с утра и получить наличность. Это классический пример SQL-инъекции.

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

Как это работает

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

SELECT * FROM имя_таблицы WHERE условие​ SELECT * FROM workers WHERE id>3

Последняя команда выдает все строки из таблицы workers после 3-го номера.

Допустим, программист делает форму поиска — при нажатии на кнопку «Найти», сайт должен взять текст из формы, вставить в команду и обратиться через нее к базе данных.

$name = $_REQUEST['name']; $res = mysqli_query("SELECT * FROM clothes WHERE clothes_name = " . $name);

Где $name — это текст, который пользователь ввел в поле.

Дальше очень просто — вместо того, чтобы вводить в поле поиска обычный текст, например «мужские носки», хакер ставит закрывающие кавычки " и вводит в поле команду на языке SQL.

Например добавляет в конец команду DROP DATABASE, которая полностью уничтожает базу.

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

Как проверить свой сайт на уязвимость SQL-инъекциям

Есть специальные сервисы, как например find-xss.net. Если ваш сайт сделан на каком-то классическом движке, то можно поискать плагины защиты — но не стоит доверять плагинам на 100% — дальше в статье мы поговорим, как плагины могут сами принести уязвимость в ваш сайт.

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

XSS атака или межсайтовый скриптинг: внедрение своего кода на сайт

Этот вид атаки очень похож на SQL-инъекцию, он точно так же использует незащищенные формы на сайте. Отличие в том, что вместо SQL-команд на сайт или в базу внедряется javascript-код.

Как это работает на злоумышленника? Есть несколько способов.

Кража Cookies

Cookies — это небольшой кусок данных о пользователе, который хранится в браузере и обычно содержит:

  • логин и пароль пользователя
  • сведения статистики о пользователях
  • персональные предпочтения и настройки пользователя
  • отслеживает состояния сеанса доступа пользователя

Самый частый вид XSS-атаки это внедрение скрипта, который при передаче данных из браузера, отправляет копию данных злоумышленнику. А в копии логин и пароль пользователя.

Кража данных из форм

Вживляемый скрипт может быть настроен на то, чтобы отслеживать отправку форм. Например, вы ввели свой логин и пароль, нажали отправить — скрипт мгновенно проснулся, скопировал введенные данные и отправил копию злоумышленнику. Это напоминает фишинг, но данные вводятся на настоящем, а не поддельном сайте, поэтому это намного опаснее — если фишинговый сайт еще может распознать обычный пользователь, то при вводе данных на реальном сайте — очень маловероятно.

Как защитить свой сайт от XSS-атак?

Есть универсальный способ защиты от SQL-инъекций и XSS-атак — обрабатывать все, что вводится в поля ввода до того, как записывать текст из них в базу или выполнять.

Брутфорс — действуем в лоб

Брутфорс это не самый простой, но эффективный способ подбора паролей методом простой подстановки. Специальный скрипт пробегается по списку самых популярных паролей, пробуя каждый из них. Часто для подстановки используются ворованные базы логинов и паролей — людям нравится использовать одни и те комбинации на разных сайтах.

Чтобы защититься от брутфорса, достаточно не повторять ошибки Волан-де-морта, который делал крестражи из объектов культурного наследия. Если бы Темный Лорд заложил частички своей души в старую бутылку из под лимонада и камни на берегу моря, которые не значат абсолютно ничего — Гарри Поттер в жизни бы их не нашел.

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

От длины такого пароля зависит скорость перебора всех символов — перебрать все комбинации символов 10-значного слова практически невозможно за осмысленный срок. Поэтому, если вы хотите защитить себя от брутфорса, создавайте длинные пароли через специальные генераторы.

DDoS-атака

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

В некоторых случаях перед падением система выдает критически-важные данные: версию ПО, части кода.

Но чаще всего DDoS используется как способ экономического или политического давления, например, в 2011 году политически настроенная молодежь сделала специальный сайт для обрушения DDoS-атак на про-правительственные СМИ и сайты.

Как устроена DDoS-атака

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

Вирусы могут быть зашиты в торрент-файлы, пиратские копии игр, программу обновления Windows. Они никак себя не выявляют и не ничего не требуют от пользователя, поэтому владелец устройства чаще всего даже не в курсе, что участвует в DDoS-атаке. Атакующее устройство называют зомби-компьютером.

Существует два основных вида DDoS-атак: атаки на сетевую часть и на программную.

Во время сетевой атаки хакеры пытаются забить канал жертвы: допустим, ее сервер может принять 1 Гб трафика или 10 000 пользователей одновременно. Задача злоумышленника — преодолеть этот барьер и делать это как можно дольше, чтобы реальные пользователи не могли прорваться на сайт.

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

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

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

Как защититься от DDoS-атаки?

DDoS-атака стоит денег и чем мощнее сервер, на который происходит атака, тем она дороже.

На средние и небольшие бизнесы не ведется дорогая и массированная атака, поэтому среднему и малому бизнесу подойдут программы защиты вроде Cloudflare и DDoS-guard. Они работают как сетевые фильтры, откидывая большинство хакеских запросов и блокируя трафик от явных злоумышленников.

У нас защита от DDoS идет в подарок в первый месяц, после будет стоить 800 рублей в месяц.

Межсайтовая подделка запроса

Очень мощный вид атаки через cookies: в некоторых случаях через нее можно полностью захватить аккаунт пользователя на атакуемом сайте и творить, что хочется.

Таким способом в свое время были атакованы Netflix, Youtube и приложение банка ING Group. На Netflix хакеры добавляли DVD в подписку пользователей, вываливали в открытый доступ логины и пароли пользователей, а в случае с банком просто переводили деньги со счетов жертв себе.

Как захватываются аккаунты?

Проще всего объяснить на примере: хакер Вася в курсе, каким банком пользуется Маша и что она всегда в нем авторизована. Cookies Маши хранят данные об ее авторизации на сайте банка.

Тогда Вася размещает на каком-то сайте или форуме ссылку, в которую зашит HTTP-запрос к банку Маши и кидает Маше ссылку в телеграм.

Что такое HTTP-запрос: проще говоря, это запрос к серверу. Вы делаете это каждый божий день: когда вы заходите на какой-то сайт, ваш компьютер отсылает HTTP-запрос к серверу, на котором крутится сайт. Сайт отвечает на запрос и присылает контент страницы, а ваш браузер его показывает.

Возвращаясь к Васе: его хакерская задача в том, чтобы браузер Маши отправил банку запрос, а банк его послушно выполнил, так как Маша авторизована благодаря кукам.

Чтобы браузер Маши выполнил HTTP-запрос, Маше даже не придется кликать на ссылку — Вася может зашить запрос в картинке со смешным мемом — Машин браузер загрузит картинку, банк примет запрос и сделает перевод на счета Васи.

Вот пример такой атаки

Боб: Привет, Алиса! Посмотри, какой милый котик: <img src="http://bank.example.com/withdraw?account=Masha&amount=1000000&for=Vasya">

Как защититься от межсайтовой подделки запросов

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

Если вы не хотите оказаться на месте Маши — разлогинивайтесь на всех важных сайтах после посещения, даже на домашнем компьютере.

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

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

Например, в панели управления сайтом Plesk, в одной из старых версий была обнаружена уязвимость, позволяющая взломать систему, увеличить уровень доступа хакера до администратора и завладеть базой данных полностью, включая всех соседей на сервере. Этот способ атаки был подробно расписан в журнале Хакер.

Один из самых уязвимых движков на свете — Wordpress

В 2012 году хакеры взломали сайт Reuters и опубликовали на нем фальшивые новости о Сирии. Все благодаря тому, что редакция использовала старую версию Wordpress 3.1.1, у которой было уже много известных уязвимостей, выложенных в открытый доступ.

Самые популярные способы хакнуть wordpress: SQL-инъекции и межсайтовый скриптинг

Как подставить свой сайт на Wordpress под удар

Есть несколько надежных способов быть хакнутым

  • использовать старые версии Wordpress
  • использовать плагины с уязвимостями — в актуальном списке на 2020 год можно найти даже премиальные и платные плагины
  • устанавливать уязвимые темы
  • держать сайт на shared-хостинге

Про последний пункт расскажем подробнее.

Shared хостинг: когда любой уязвимый сосед открывает двери хакерам

Краткий ликбез, что такое шаред-хостинг и почему его так любят хакеры.

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

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

Есть два способа поделить сервер на кусочки и сделать дешевле:

  • shared-хостинг: на сервер крутится сразу несколько сайтов, они делят одну операционную систему, память, ядра процессора, диск и ip-адрес. Разделений между сайтами практически нет, тонких настроек тоже — все настраивает хостер. Но есть и плюсы — это очень дешево, рублей 150-200 в месяц
  • VPS-хостинг: на одном физическом сервер крутится несколько виртуальных серверов, созданных программно. Такие программы, создающие виртуальные серверы называются гипервизором. Каждую VPS можно настроить, как и выделенный сервер: установить свою OS, поставить программы и так далее. Между VPS, крутящихся на одном сервере существует жесткое деление и хакерам сложнее добраться из одной VPS-ки до соседней

Как хакеры атакуют сразу сотню сайтов: соседи, которые оставляют дверь открытой

Риски безопасности шаред-хостинга основываются на его структуре. Шаред — значит общий, на одном шаред-хостинге может крутиться от 100 до 1000 сайтов и все они пользуются одной базой данных и IP.

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

Допустим, какой-то ваш сосед использует старую версию Wordpress или установил плагин с уязвимостью к SQL-инъекциям — и вот база данных в руках злоумышленника.

Статистика, как люди следят за обновлениями ПО удручающая: более 70% сайтов на wordpress сейчас крутятся на уязвимых версиях движка. Часть версий, которыми люди пользуются, вообще не существует — это полностью хакерский подлог. Обновляются только 18,55% пользователей. Все новые уязвимости движка мгновенно оказываются в открытых базах.

Разбираемся, как атакуют сайты через соседей по серверу

Одна из проблем шаред-хостинга в том, что обычно у такого сервера есть множество открытых сетевых сервисов, как веб, почта, FTP и базы данных. Эти сервисы доступны через открытые порты и это дает возможность их атаковать. Файрволлы могут частично закрывать доступ к конкретным портам, но на шаред-хостингах запреты не слишком жесткие из-за того, что на них крутится сразу много сайтов, которым как-то надо работать.

Что делает хакер

Сначала он сканирует ваш хостинг на открытые порты и выясняет, какие сервисы и ПО установлены на сервере. Для этого используется программа nmap, вот ее стандартная выдача

Затем хакер ищет уязвимости в этих системах. Есть множество библиотек в открытом доступе, где можно подсмотреть слабые места ПО по версиям. Если уязвимость известна, ее легко найти в Google query.

Проверив IP-адрес сервера и используя обратный просмотр DNS можно получить полный список ваших сайтов-соседей.

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

Итог: я рассказал не все

Некоторые виды атак, например, DNS-спуфинг я не стал разбирать, потому что не смог объяснить без углубления в технологии. Поэтому я просто приведу список ключевых слов, которые надо уточнить программиста или безопасника, когда вы принимаете готовый интернет-магазин. Вот эти слова:

  • DNS-спуфинг (или отравление кэша DNS)
  • IT-спуфинг
  • Атака Человек посередине
  • DDoS
  • XSS-атака
  • SQL-инъекции

Ну, и не забывать о генераторах сложных паролей.

0
13 комментариев
Написать комментарий...
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
RUVDS
Автор

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

Сама статья осталась той же :)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
RUVDS
Автор

Мне жаль, что шутка теперь не такая смешная :(

Ответить
Развернуть ветку
Денис Бурдин
Ответить
Развернуть ветку
RUVDS
Автор

хаха)

Ответить
Развернуть ветку
Danis Ilaltdinov

Гифки отличные

Ответить
Развернуть ветку
Саша Резник

Ребята, мое увожение. Очень качественный адверториал. Вот прямо на уровне. Даже если статья не зайдёт аудитории, это не умалит ее качества и огромного респекта людям, которые ее делали :) Не теряйте тех, кто это все написал, таких хрен найдёшь 

Ответить
Развернуть ветку
RUVDS
Автор

Спасибо! Рад, что вам понравилось 

Ответить
Развернуть ветку
Андрей

А от брутфорса разве каптча не помогает?

Ответить
Развернуть ветку
RUVDS
Автор

Капчу можно обойти, есть много способов. Когда я учился в 9 классом в летней школе для программистов был такой факультатив, "Как взломать капчу" и 14-летние дети очень даже справлялись :)

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку
des design

Профессиональный текст обернутый в забавные гифки. Респект

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
10 комментариев
Раскрывать всегда