Полезные знания Как начать заниматься багхантингом веб-приложений Ч.1

DOMINUS_EDEM

Прошлый ник Khan
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
Private Club
Старожил
Регистрация
23/1/16
Сообщения
2.068
Репутация
5.626
Реакции
5.875
RUB
0
Депозит
22 000 рублей
Сделок через гаранта
21
Компании могут проверять свои продукты, сервисы или инфраструктуру на реальность взлома разными способами: это и пентест (тестирование на проникновение), и редтиминг (Red Team, проверка возможностей компании по выявлению и предотвращению вторжения), и bug bounty (набор условий, в соответствии с которыми белые хакеры получают от организаций вознаграждение за уязвимости, найденные в их IT-сетях, системах и приложениях). Дыры в программном обеспечении могут обернуться убытками для компаний и компрометацией персональных данных (а иногда и финансовыми потерями) для пользователей.

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

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

Дисклеймер

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

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

Для начала определимся с терминами:
  • Багхантер (bug hunter) — исследователь безопасности, легально ищущий уязвимости в программном обеспечении. Сейчас в открытом доступе есть масса учебных материалов, видеоуроков и тренировочных площадок, которые помогут стать багхантером любому человеку. И эта статья станет хорошим дополнением в этом списке.
  • Багхантинг (bug hunting) — этичный (легальный и ответственный) поиск багхантерами уязвимостей, за которые вендор может выплатить денежную награду, выдать памятный подарок и упомянуть в зале славы.
  • Вендор (vendor) — разработчик продукции или услуг.
  • Баг баунти (bug bounty) — программа, по которой багхантеры получают от компаний вознаграждение за найденные в их IT-сетях, системах и приложениях уязвимости.
  • Скоуп (scope) — разрешенная область действий, устанавливаемые программой bug bounty границы, в рамках которых разрешено производить багхантинг. В него могут входить IP-адреса, CIDR-диапазоны, домены, поддомены, десктопные и мобильные приложения.

Платформы bug bounty

Свои программы bug bounty обычно объявляют владельцы и разработчики сайтов, сервисов и программного обеспечения, чтобы поощрить исследователей безопасности сообщать об уязвимостях, особенно о таких критически опасных, как RCE. Делать это они могут на собственных ресурсах, продвигая их своими силами. Но если компания хочет сразу привлечь большое количество независимых исследователей безопасности, то она размещает свои программы на платформе bug bounty.

Платформа bug bounty — это агрегатор, объединяющий на своей площадке программы самых разных компаний и позволяющий исследователям безопасности выбирать себе проект. При размещении на платформе компании публикуют список ресурсов, за отчет о недостатках защищенности в которых они готовы платить. А белые хакеры, заинтересованные в решении интересных задач, публичном признании и получении награды, обеспечивают объективность и достоверность исследований.

Среди наиболее известных платформ можно выделить Bugcrowd, HackerOne, Vulnerability Lab, BountyFactory и Synack. Платформы есть и в СНГ: standoff365, bugbounty.ru (Россия), bugbounty.kz (Казахстан), bugbounty.by (Беларусь) и т. д.

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

В этой статье мы приводим данные о стоимости отдельных видов уязвимостей на примере платформы HackerOne, так как именно на ней на данный момент собрана самая обширная статистика.

Градация знаний и опыта

В области информационной безопасности существует условная градация знаний и опыта:

  • Начинающий багхантер знакомится с теоретическими и практическими основами работы веб-приложений, узнает, что такое информационная безопасность и какие бывают виды атак и уязвимостей. Одновременно с этим он начинает участвовать в программах bug bounty, чтобы заработать рейтинг (багхантеров с высоким рейтингом приглашают в приватные программы с ограниченным количеством участников), получить денежное вознаграждение и бесценный опыт.
  • Опытный багхантер постоянно стремится углублять свои навыки и опыт, активно участвует в публичных и приватных программах bug bounty, посещает тематические конференции, может быть участником команды в соревнованиях по взлому систем с заранее заложенными уязвимостями — Capture the Flag (CTF).
  • Багхантер с многолетним опытом также участвует в различных программах bug bounty, ищет уязвимости и новые техники их эксплуатации в крупнейших мировых продуктах, выступает на конференциях и делится своим опытом.

Приведем пару ярких достижений багхантеров. Есть примеры, когда багхантеры с многолетним опытом, действуя в интересах, в том числе, и мировых IT-гигантов, находили критические уязвимости или выявляли новые методики атак, использующие нестандартную технику эксплуатации, с помощью которых можно было захватить серверы компаний. К примеру, багхантер alexbirsan обнаружил проблему путаницы зависимостей в цепочке поставок, которая приводила ко взлому Apple, Microsoft и десятки других компаний. О результатах исследований багхантер сообщал компаниям. Каждая организация, которая была подвергнута атаке, предоставила ему разрешение на проверку своей безопасности либо в публичной программе вознаграждения, либо в частной форме. Другим ярким примером является багхантер albinowax, который обнаружил технику HTTP Request Smuggling. Она позволяла отправлять двусмысленный запрос, который по-разному обрабатывался frontend- и backend-серверами приложения, что могло дать киберпреступнику возможность получить доступ к пользовательским данным.

Что касается денежного вознаграждения в bug bounty, то и тут есть яркие примеры. Первым, кто заработал 1 миллион долларов на американской площадке HackerOne, был багхантер Santiago Lopez, а другой багхантер inhibitor181 первым заработал на этой же площадке уже 2 миллиона долларов.

С чего начинается багхантинг

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

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

  • ОС — работа с Linux/Windows, командной строкой Bash/PowerShell, TCP/IP — Model, HTTP/S — Protocol, Port/Socket;
  • программирование — один из языков программирования, например Python, Ruby, PHP, Java, JavaScript, и желательно умение пользоваться отладчиком;
  • разметка — работа с HTML-разметкой;
  • СУБД — реляционные PostgreSQL/MySQL;
  • веб-серверы — конфигурация и эксплуатация Nginx, Apache2;
  • понимание принципов работы frontend/backend, frameworks;
  • вспомогательное ПО — BurpSuite, Metasploit, Docker, netcat, sqlmap, nmap, ffuf, dirbuster.

Примеры самых часто встречающихся уязвимостей

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

  • Внедрение кода. Одним из видов этого класса уязвимостей является внедрение SQL-кода (SQL Injection). Злоумышленник может вмешиваться в формирование SQL-запроса приложения к базе данных. Как правило, это позволяет злоумышленнику несанкционированно получить информацию. Полученная информация может быть как системной (версия СУБД, наименование и структура таблиц, столбцов), так и пользовательской (ФИО, телефоны, адреса электронной почты, пароли, личные сообщения). Существует несколько видов SQL Injection: in-band, inferential, out-of-band.
  • Некорректная нейтрализация входных данных при генерировании веб-страниц (межсайтовое выполнение сценариев). Одной из атак на пользователя является Cross-Site Scripting (XSS). Результат атаки — выполнение вредоносного JavaScript-кода в браузере жертвы. Злоумышленник может похитить cookies пользователя, произвести редирект на фишинговую страницу, отрисовать любое содержимое на текущей странице, считать нажимаемые пользователем клавиши и многое другое. Существует несколько видов XSS: reflected, stored, dom.
  • Подделка межсайтового запроса (CSRF). Атака, позволяющая злоумышленнику выполнить от лица жертвы различные запросы на сервер в уязвимой системе, в том числе и критического действия. Результатом может служить несанкционированная смена персональных данных — почты, телефона, пароля, а также выполнение других действий — отправка личных сообщений, публикация постов, перевод денежных средств.

Полезный инструментарий

Использование дополнительного программного обеспечения позволяет ускорить и упростить работу багхантера. Первое, о чем хотелось бы упомянуть, — это BurpSuite от компании PortSwigger. Это программное обеспечение является одним из лучших в своем классе для сканирования уязвимостей, тестирования на проникновение и обеспечения безопасности веб-приложений. Существует бесплатная версия BurpSuite CommunityEdition, платная BurpSuite Professional и корпоративная BurpSuite Enterprise Edition, включающая в себя несколько инструментов. Рассмотрим некоторые из них:

  • Proxy — перехватывающий веб-прокси, который служит посредником между браузером и веб-приложением. С его помощью багхантер во время своих исследований может перехватывать, изменять и проверять идущий в обоих направлениях трафик.
  • Intruder — инструмент, который может использоваться исследователем для проведения автоматизированных и настраиваемых атак.
  • Repeater — инструмент для ручной обработки и повторной отправки запросов, а также анализа ответов от приложения.
  • Decoder — инструмент для выполнения ручного или интеллектуального кодирования и декодирования данных приложения.
  • Extender — инструмент, позволяющий исследователю загружать свои и сторонние расширения Burp.

3e7c31d0a912609729eb4cffd8ef9a2c.png

Другой инструмент, называемый швейцарским ножом белого хакера, пентестера и багхантера, — Metasploit от компании Rapid7. Он является модульным, расширяемым и изначально уже содержит большое количество модулей различного направления: эксплойты, полезные нагрузки, энкодеры и т. д.

3fc7538c56d8cefa0997f7c3509080e9.png

Для автоматизации обнаружения и использования уязвимостей SQL Injection и захвата серверов баз данных можно использовать инструмент с открытым исходным кодом — sqlmap. Он содержит большое количество функций. Приведем наиболее важные из них (с остальным функционалом можно ознакомиться на официальном сайте):

  • полная поддержка MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, Informix, MariaDB, MemSQL, TiDB, CockroachDB, HSQLDB, H2, MonetDB, Apache Derby, Amazon Redshift, системы управления базами данных Vertica, Mckoi, Presto, Altibase, MimerSQL, CrateDB, Greenplum, Drizzle, Apache Ignite, Cubrid, InterSystems Cache, IRIS, eXtremeDB, FrontBase, Raima Database Manager, YugabyteDB и Virtuoso;
  • полная поддержка шести методов SQL Injection: вслепую на основе логических значений (boolean-based blind), вслепую на основе времени (time-based blind), на основе ошибок (error-based), на основе запросов UNION (UNION query-based), стекированных запросов (stacked queries) и внеполосных запросов (out-of-band queries);
  • автоматическое распознавание форматов хешей паролей и проверка их на взламываемость с помощью атаки по словарю.

793987e3468eab917864f61302375a48.png

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

10b98b101911fcea1496915a0fc383a8.png

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

2e989f4ef990a2791f9f410ca419220f.png

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