7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Брутфорс (Brute force)

Брутфорс (Brute force)

Брутфорсом называется метод взлома учетных записей путем подбора паролей к ним. Термин образован от англоязычного словосочетания «brute force», означающего в переводе «грубая сила». Суть подхода заключается в последовательном автоматизированном переборе всех возможных комбинаций символов с целью рано или поздно найти правильную.

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

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

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

1 – Увеличение числа одновременных подключений

Когда вы находитесь под DDoS атакой, количество одновременных подключений будет слишком высоко. Нам надо бороться с такой волной “левых” соединений, чтобы реальные пользователи могли подключаться и использовать ваши ресурсы и сервисы. Сколько оперативной памяти требуется, чтобы оставаться online? Хорошее эмпирическое правило, составляет 2 ГБ оперативной памяти на 1 000 000 соединений.

В pfsense, нажмите на System, затем Advanced. Далее нажмите на вкладку Firewall / NAT.

Измените значения Firewall Maximum States и увеличьте значение Firewall Maximum Table Entries

Как остановить DDoS атаку

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

Что представляет собой DDoS атака?

DDoS это сокращение от distributed denial of service (распределенная атака типа «отказ в обслуживании»). Главная цель DDoS атаки – забить запросами ваш сервер и либо нанести какой-то ущерб, либо просто вывести его из строя. Такие типы атак отличаются одной неприятной особенностью – как правило, злоумышленник ничего не похищает и ничего не взламывает. Главная проблема DDoS атак связана с высокой нагрузкой, которая ложится на веб-сервер. Скорее всего, вы заметите стремительное разрастание трафика, и это может вам стоить сотни и даже тысячи долларов. Если вы находитесь на дешевом или виртуальном хостинге, то в итоге ваш аккаунт может быть даже приостановлен.

21 октября 2016 произошла крупнейшая в истории DDoS-атака (связанная с DNS), «положившая» такие крупные компании, как PayPal, Spotify, Twitter, Reddit и eBay. Некоторые даже назвали ее «концом света для интернета». Поскольку сеть продолжает расти, неудивительно, что DDoS-атаки повторяются с угрожающей скоростью. Согласно данным, предоставленным easyDNS, DDoS-атаки со временем становятся только ужаснее. Для многих сайтов попадание под атаку может стать лишь вопросом времени.

Многие хостинги используют дополнительные меры предосторожности, чтобы защититься от DDoS-атак. Мы рекомендуем обращаться к компаниям с крупной инфраструктурой и специальным софтом, предназначенным для предотвращения таких атак. Cloudflare и Sucuri – два сервиса, которые мы рекомендуем всем пользователям WordPress и любых других платформ. Инвестирование в достойную защиту от DDoS позволит вам сэкономить время и деньги в будущем.

Остановка DDoS атаки на небольшой коммерческий сайт

В данном руководстве мы покажем вам, как остановить DDoS атаку на своем примере. У нас был небольшой коммерческий сайт WordPress, на котором стоял плагин Easy Digital Downloads. Обычно сайт генерировал примерно 30-40 Мб в день в плане пропускной способности и имел пару сотен посетителей в день. В июне он начал использовать гораздо больше пропускной способности, однако в Google Analytics не значилось никакого дополнительного трафика. Сайт мгновенно перешел на передачу данных в 15-19 Гб в день! Прирост составил где-то 4650%. Нехорошо. И это, естественно, никак не связано с небольшим приростом трафика от ботов. К счастью, владелец сайта смог быстро это обнаружить.

Заметив такой прирост, мы решили проверить серверные логи, чтобы выяснить, что случилось. Подобные события могут легко выйти из-под контроля. За последний 7 дней страницы сайта были запрошены 5 110 000 раз, и было сгенерировано примерно 66 Гб трафика. И это для сайта, который в месяц обычно пропускает чуть больше 1 Гб данных. Мы сразу поняли, что что-то произошло.

Анализ топ 10 клиентских IP за последние 7 дней на сайте мгновенно выявил некоторые подозрительные действия. Большинство из них произвело свыше 10 000 запросов, и это довольно много. Помните, что мы говорим про небольшой сайт, который должен получать только пару тысяч запросов в месяц.

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

Смена URL

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

Взлом или попытки брутфорса?

Следующий шаг, который вам нужно будет сделать – это убедиться в том, что вас не пытаются взломать. В нашем случае попыток взлома не было. WP Security Audit Log – великолепный плагин, который позволяет быстро исследовать сайт и понять, были ли какие-либо неверные попытки входа. Вы можете также проверить логи, чтобы узнать, были ли какие-либо действия POST в большом количестве. По всей видимости, мы столкнулись с классической DDoS-атакой, в процессе которой просто шли огромные объема трафика на один из участков сайта, чтобы попытаться вывести его из строя.

IP блокировка

Если вы работаете со своим собственным сервером, то в таком случае следующим шагом будет установка плагина для IP-блокировки или файрвола, такого как WordFence. Однако большинство администрируемых (managed) WordPress хостингов запрещают такие плагины. И на то есть свои основания. Прежде всего, такие плагины могут оказывать огромное влияние на производительность (особенно их процесс сканирования). Также стоит отметить, что хостинги нередко используют балансировщики нагрузки с Google Cloud Platform, т.е. функции блокировки IP большую часть времени не будут работать.

Читать еще:  Кто делает недоступными наши сайты? DDoS атак

Естественно, IP-адреса всегда могут быть заблокированы службой поддержки хостинга, но в зависимости от длительности и масштабов атаки это может превратиться в бесконечный процесс занесения IP-адресов в черный список, что в большинстве случаев не позволит справиться с проблемой. Многие DDoS-атаки при блокировке в одной части могут легко переключиться на другие участки сайта, сменить IP-адреса или прокси-адреса. Таким образом, в этом случае имеет смысл воспользоваться специализированным решением, позволяющим автоматизировать процесс защиты от DDoS-атак.

Перенос сайта на Cloudflare не помог

Cloudflare неплохо справляется с блокировкой трафика основных ботов, однако если рассматривать их бесплатный план, то защита от DDoS там не самая лучшая. Мы перенесли сайт в Cloudflare, но это вылилось в еще больший подозрительный входящий трафик. Возможно, что это произошло из-за усиления атаки. Как видно ниже, атака доходила до 50 000 запросов в час. CDN от Cloudflare прекрасно работает, но если вам требуются и другие функции, то вам, скорее всего, придется платить.

Затем мы установили «ограничение скорости» на сайте. Такое ограничение позволяет создавать правила для трафика для URL и производить блокировку/ограничение его на основе активности. Возможность доступна для подключения в бесплатном тарифе и стоит .05 за 10 000 запросов. Однако темпы, которые мы наблюдали, привели бы к 36 млн запросам в месяц, что стоило бы нам 180 долларов в месяц. Очевидно, что это решение не самое удачное. И да, мы пробовали разные типы шаблонов.

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

Сравнение Cloudflare с Sucuri

По нашему мнению, два лучших решения, которые существуют сегодня в сфере веб-файрволов и которые проще всего применить для любых типов сайтов – это Cloudflare и Sucuri. Примечание: мы никак не связаны ни с одной из этих компаний, они нам не платят. Если вы изучите их, то вы увидите, что Sucuri является более эффективным, хотя оба сервиса предлагают планы за $20 в месяц.

Cloudflare

Тариф Cloudflare Pro предлагает вам расширенную защиту от DDoS на уровнях 3 и 4. Это поможет автоматически остановить атаки TCP SYN, UDP и ICMP на их серверах, в результате чего такие атаки никогда не дойдут до вашего сервера. Чтобы получить защиту уровня 7, вам нужно будет перейти на план $200 в месяц. Помните, что мы имеем дело с небольшим коммерческим сайтом, потому 200 долларов в месяц – неподъемная сумма для нас.

Sucuri

С тарифом Sucuri вы получите расширенную защиту от DDoS на уровнях 3 и 4 вместе с уровнем 7. Это помогает автоматически обнаруживать внезапные изменения трафика и защищаться от POST-флуда и DNS-атак, потому они никогда не дойдут до вашего сервера. Таким образом, если говорить напрямую, вы, скорее всего, увидите лучшее смягчение атак DDoS, если воспользуетесь Sucuri. В нашем случае нам требуется уровень 7 для защиты от HTTP-флуда.

HTTP-флуд – это атаки уровня 7, в которых используется стандартные доверенные GET/POST-запросы для получения информации, как во время обычных запросов данных (изображений, информации) в рамках SSL-сессии. Флуд HTTP GET/POST – это объемная атака, которая не использует поддельные пакеты, спуфинг и т.д.

Sucuri также предлагает балансировку нагрузки за $70 в месяц, тогда как Cloudflare включает довольно много сборов, связанных с разными аспектами балансировки нагрузки – к примеру, прайс в зависимости от использования, в зависимости от географических данных и т.д.

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

Помните о том, что ни одна компания не сможет вам пообещать 100% гарантию на защиту от DDoS. Все, что они могут сделать – смягчить атаку.

Перенос сайта в Sucuri

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

Консоль Sucuri, по нашему мнению, не такая современная и привлекательная, как в Cloudflare, но в случае с файрволом это не так и важно. Главное, чтобы он работал хорошо. Как вы можете видеть ниже, он определяет ваш текущий IP хостинга и предлагает IP файрвола. На него вы и должны направлять ваши DNS (запись A + запись AAAA).

Вы можете все запустить в Sucuri всего за пару минут. Это хорошо в случае с активной DDoS-атакой. Единственное, что нужно будет сделать – подождать, пока пройдет распространение DNS. Также Sucuri включает в себя HTTP/2 Anycast CDN. Так что это не просто файрвол. Он позволяет также ускорить работу сайта WordPress. Но вы также можете использовать и свои CDN, такие как KeyCDN.

Они предлагают бесплатный SSL-сертификат Let’s Encrypt. Вы можете также загрузить и свой сертификат. Единственный недостаток – Let’s Encrypt не автоматизирован, вам нужно будет создавать тикет. Еще один совет для повышения производительности – вы можете включить кэширование сайта. Но, скорее всего, у вас уже имеется кэширование на вашем хостинге WordPress.

Возможности дополнительной защиты

На странице безопасности вы можете легко заблокировать весь XML-RPC трафик, агрессивных ботов, включить дополнительные заголовки безопасности, такие как HSTS и т.д. Примечание: XML-RPC уже был заблокирован на нашем коммерческом сайте.

Просмотр в реальном времени

Нам понравилась возможность просмотра защиты от DDoS в реальном времени. Вы можете легко войти в данный пункт и посмотреть лог текущих запросов. Также вы можете с помощью одного клика добавить что-либо в черный список или в белый список.

Другие полезные отчеты

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

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

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

Среди других возможностей стоит отметить контроль доступа, где можно вести белые и черные списки IP-адресов и путей, блокировать user-agent, куки, HTTP-рефереры, а также защищать определенные страницы с помощью капчи, двухфакторной аутентификации или простого пароля.

Помог ли Sucuri нашему небольшому коммерческому WordPress-сайту? Через час после того, как DNS закончил свое распространение, пропускная полоса и запросы тут же стабилизировались, и с тех пор не было ни единой проблемы. Это хорошая инвестиция и экономия времени, если вы столкнулись с подобными неприятностями.

Читать еще:  Взлом сайта: инструменты и этапы проникновени?

Вот как выглядел сайт спустя некоторое время после переезда на Sucuri. Как вы можете видеть, все вернулось к изначальной передаче данных 30-40 Мб в день.

Даже если вы не находитесь под атакой, возможно, вам нужен способ исключения ботов, чтобы они не забивали вашу пропускную способность. Sucuri помогли WP Beginner заблокировать свыше 450 000 атак за 3 месяца. Мы также заметили интересный комментарий к сообщению:

Нас активно атакуют боты, расположенные на Amazon AWS и Google Cloud. Может ли файрвол Sucuri помочь с этим? В настоящее время мы используем WPEngine, которые имеют встроенный файрвол (ничего не блокирующий) и CloudFlare (тоже пропускает спам). Надеюсь, что Sucuri поможет с этим.

Если вы уже пробовали другие решения, то в таком случае воспользуйтесь Sucuri. Не поймите нас неправильно. CLoudflare – тоже хорошее решение для большинства сайтов, и мы рекомендуем этот сервис своим клиентам. Их планы за $200 в месяц, скорее всего, позволили ли быстро смягчить DDoS-атаки, однако всегда полезно иметь представление о других решениях. Особенно, если вы имеете лимитированный бюджет.

Как при взломе действовать юридически грамотно? Полиция поможет?

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

Дело в том, что персональные данные часто путают с личными, однако они определяются федеральным законом 152.

Простой пример: если злоумышленник получил серию и номер паспорта, то есть персональные данные – это серьезное правонарушение и регулируется ФЗ 152. Если хакер получил доступ к приватной переписке – ситуация, кончено, пикантная, но такие сведения не являются персональными данными.

Если вы обнаружили свои персональные данные в публичном доступе, то первым делом свяжитесь с администрацией ресурса, где они размещались. Ссылайтесь на закон «О персональных данных», который запрещает использование персданных без разрешения субъекта этих данных. Укажите, что в случае отказа вы обратитесь в суд. Чтобы убрать информацию из результатов поиска, нужно обратиться в техподдержку поискового сервиса и заполнить специальную форму.

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

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

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

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

От перечисленных мной способов атак длинный пароль не спасет. Сложные пароли помогут только против брутфорса (brute force – атака с перебором паролей). Но на деле такая атака работает далеко не всегда и не для всего. Но в любом случае пароль стоит использовать длинный и сложный, хотя бы для защиты от того же brute force. И конечно, нужно регулярно менять все пароли.

Стек протоколов TCPIP: порты и службы

Начнем пожалуй с краткой теории. Каким бы не был сервер, и какие бы сервисыслужбы не были на нем запущены — все они в обязательном порядке будут использовать порты (минимум один порт). Всего существует 65535 портов. По большому счету порты стандартизирован: например, 80 порт традиционно отводится под веб-сервер, который будет обрабатывать запросы поступающие от браузеров. Таким образом, обнаружив открытым 80 порт мы делаем заключение, что данный сервер используется владельцем в качестве веб-сервера. Довольно часто такие сервера также оставляют открытым 22 порт, который по умолчанию используется для удаленного администрирования через ssh. Обнаружив открытым данный порт злоумышленник может прибегнуть к брутфорсу (например, перебору паролей по словарю) для получения доступа к серверу с максимальными привилегиями.

К слову о 22 порту: большая часть злоумышленников крайне редко «включает мозг», и как правило делегирует функцию сбора и анализа информации софту, автоматизируя тем самым процесс подбора потенциальной жертвы. Таким образом, большую часть брутфорс атак на 22 порт можно предотвратить попросту сменив 22 порт на любой произвольный из 65535 (например, указать порт 42689 для ssh). После смены дефолтового порта на произвольный — атаки на ssh либо полностью прекращаются, либо встречаются крайне редко.

Как ограничить доступ к службам Mikrotik

Когда ваш роутер, в моем примере MikroTik RB4011iGS, получает внешний IP-адрес от провайдера, который вы настраиваете на WAN порту, то боты (Это такие роботизированные программы) завидев новое устройство с внешним адресом, сразу начинаю подбирать логин с паролем, чтобы получив к нему доступ начать рассылку спама или еще чего-нибудь. Данная практика касается абсолютно всех устройств. виртуальных машин, сайтов и многое другое, что имеет доступ в интернет, все это потенциальная цель для взлома и дальнейшего паразитического использования, поэтому вы как сетевой администратор или просто ответственный пользователь должны периодически просматривать события в журналах вашего устройства, чтобы идентифицировать попытки его компрометации.

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

  • Использование утилиты WinBox
  • SSH / Telnet
  • Web-интерфейс

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

Как видим идет постоянная подборка учетных данных, раз в три секунды, для самого роутера эти события имеют статус «system, error, critical» и их генерирование, плохо сказывается на работе оборудования, создавая лишнюю нагрузку.

Мобильная безопасность

Нелегальные функции вредоносов маскируются от систем безопасности Google с помощью обфускации, а атаки происходят в два этапа:

  1. Жертва скачивает замаскированный под полезную программу дроппер,
  2. По команде дроппер устанавливает основной зловред с удаленного сервера.

Одна программа может параллельно участвовать в целом наборе кампаний, а ее владельцы — получать деньги от нескольких заказчиков, сдавая в аренду «загрузочные мощности». Загружаемые вредоносные компоненты уже не попадают под контроль Google Play. Если пользователь не установил мобильный антивирус, он может и не узнать о заражении.

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

PHP Profi

Эта статья является статьёй-квестом. Мы желаем вам успехов в его прохождении. Итоги вашего прохождения будут опубликованы позже (следите за новостями в соц. сетях), а также всем прошедшим в дальнейшем будет выслан инвайт для регистрации на сайте.

Ставьте лайки, делитесь с друзьями и коллегами, репостите в соц.сетях.

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

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

Читать еще:  Поддельная флешка: проверить, обнаружить и не попасться

SQL инъекции

SQl-инъекция — это такая техника, когда злоумышленник вводит команды SQL в input поле на веб-странице. Этим imput`ом может быть что угодно — текстовое поле в форме, параметры _GET и _POST, cookies и т. д. Этот метод был весьма эффективным до появления фреймворков в мире PHP. Но этот способ взлома может быть по-прежнему опасен, если вы не используете ORM или какие-либо еще расширения для data object. Почему? Из-за способа передачи параметров в SQL запрос.

«Слепые» инъекции

Давайте начнем с классического примера SQL-statement`а, возвращающего пользователя по его логину и хешу от пароля (страница входа)

Пример 1

Я подставил вопросительные знаки в выражение из-за различных вариаций этого решения. Первый вариант, на мой взгляд, самый уязвимый:

Пример 1а

В этом случае в коде нет проверки на ввод неправильных данных. Значения передаются прямо из формы ввода в SQL запрос. В самом лучшем случае пользователь введет здесь свои логин и пароль. Что случится в худшем случае? Давайте попробуем хакнуть эту форму. Это можно сделать, передав «подготовленные» данные. Попытаемся войти как первый пользователь из базы данных, а в большинстве случаев — это админский аккаунт. Для этого, передадим специальную строку вместо ввода логина:

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

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

Более серьезные способы

В предыдущем примере всё не так уж страшно. Возможности в админской панели управления всегда имеют ограничения и потребуется реально много работы, чтобы поломать сайт. А вот атака через SQL инъекции может привести к куда большим повреждениям системы. Задумайтесь, сколько приложений создаются с главной таблицей ‘users’ , и что будет, если злоумышленник введет такой код в незащищённую форму:

Таблица ‘users’ будет удалена. Это одна из причин почаще делать бэкапы баз данных.

_GET параметры

Все параметры, заполненные через форму, передаются на сервер одним из двух методов — GET или POST. Наиболее распространенный параметр, передаваемый через GET — id. Это одно из самых уязвимых мест для атак, при этом неважно, какого вида урл вы используете — ` http://example.com/users/?id=1 `, или ` http://example.com/users/1 `, или ` http://. /. /post/35 `.

Что произойдет, если мы подставим в урл следующий код?

Вероятно, такой запрос вернет нам логин пользователя и. хеш от его пароля. Первая часть запроса `AND 1=0` превращает то, что перед ним в false, соответственно никаких записей не будет получено. А вторая часть запроса вернет данные в виде prepared data. А так как первым параметром идет id, следующим будет логин пользователя и хеш его пароля и еще сколько-то параметров. Существует множество программ, с помощью брутфорса декодирующих такой пароль, как в примере. А так как пользователь может использовать один и тот же пароль для разных сервисов, можно получить доступ и к ним.

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

проблемы не исчезнут.

Экранирование символов в строке

Когда я был новичком в программировании, мне было тяжело работать с кодировками. Я не понимал, в чем между ними различие, зачем использовать UTF-8, когда нужно UTF-16, почему база данных постоянно устанавливает кодировку в latin1. Когда я наконец начал всё это понимать, то обнаружил, что проблем станет меньше, если хранить всё в одном стандарте кодирования. Разбираясь со всем этим, я заметил также и проблемы безопасности, возникающие при преобразовании из одной кодировки в другую.

Проблем, описанных в большинстве предыдущих примеров, можно избежать, используя одинарные кавычки в запросах. Если вы используете addslashes() , атаки через SQL-инъекции, построенные на использовании одинарных кавычек, экранируемых обратным слэшем, потерпят неудачу. Но такая атака может пройти, если просто подставить символ с кодом 0xbf27 , addslashes() преобразует его в символ с кодом 0xbf5c27 – а это вполне валидный символ одинарной кавычки. Другими словами, `뼧` пройдет через addslashes() , а потом маппинг MySQL конвертирует его в два символа 0xbf (¿) и 0x27 (‘).

Этот пример можно хакнуть, передав 뼧 or 1=1; — в поле логина в форме. Движок SQL сгенерит конечный запрос так:

И вернет первого пользователя из БД.

Защита

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

Использование mysql_real_escape_string

Функция addslashes() ненадежна, так как не предусматривает многие случаи взлома. У mysql_real_escape_string нет таких проблем

Использование MySQLi

Это расширение для MySQL умеет работать со связанными параметрами:

Использование PDO

Длинный способ подстановки параметров:

Использование ORM

Используйте ORM и PDO и связывайте (используйте bind) параметры. Избегайте SQL в коде, если вы видите в коде SQL, значит, с ним что-то не так.

ORM позаботится о безопасности в самых узких местах в коде и о валидации параметров.

Выводы

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

Анализ риска

Риски от применения брутфорса зависят от количества объектов, на которые нацелены атаки, и намерений злоумышленника. С каждым годом появляются новые технологии, которые могут применяться как в благих, так и в преступных целях. Так, несколько лет назад на конференции DEF CON общественности был представлен WASP — беспилотник, который может собирать статистику домашних сетей Wi-Fi. Мощный компьютер на борту аппарата среди прочих функций имел возможность автоматического взлома паролей с помощью брутфорса.

Не так давно была замечена новая ботнет-сеть, проникающая в компьютерные системы с помощью подбора паролей SSH. Методы защиты, обычно применяемые против атак методом «грубой силы», не дают желаемого результата. Как в таком случае повысить уровень безопасности, можно узнать из нашей статьи.

Проблем со взломом через брутфорс можно избежать, если:

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