Ваш план перехода от новичка к ведущему хакеру

Bug Bounties - отличный способ получить опыт в области кибербезопасности и заработать дополнительные деньги. Я являюсь активным сторонником участия в программе вознаграждений за ошибки, поскольку это ваш путь в индустрию кибербезопасности.

После публикации «Как попасть в Bug Bounties» люди спрашивали о следующем шаге: как именно найти эту первую ошибку? Какие навыки мне нужны для этого?



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

Выбери свой трек

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

Веб-взлом

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

Большинство программ bug bounty на платформах - это веб-программы. И у большинства компаний, которые проводят программы вознаграждения за ошибки, есть какой-то веб-сайт, который они хотят протестировать.

Вот почему изучение веб-взлома будет самым быстрым способом начать взламывать и обеспечит довольно хорошую рентабельность вашего времени.

Мобильный взлом

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

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

Необходимые навыки

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

Научитесь использовать прокси

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

Использование прокси-сервера имеет важное значение, поскольку прокси-серверы позволяют:

  • Выполните разведку, изучая и анализируя трафик, идущий на сервер и с него,
  • Изучите интересные запросы на предмет потенциальных уязвимостей и
  • Используйте уязвимости, изменяя запросы.

Есть три прокси, которые особенно популярны среди охотников за ошибками: Burp Suite, Zed Attack Proxy (ZAP) и Tamper Data. Burp Suite - самый многофункциональный, а ZAP - бесплатная альтернатива Burp. Данные о вмешательстве - это надстройка браузера, которая позволяет редактировать только заголовки HTTP и параметры запроса POST.

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

Основы веб-технологий

Также важно понимать, как работают веб-технологии. Вот несколько концепций, о которых стоит прочитать:

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

Проблемы управления сеансом

Также важно узнать о том, как современные веб-приложения подходят к управлению сеансами. Например, каковы различные способы идентификации пользователя? Что такое файлы cookie и как они работают? Что такое заголовки аутентификации? И как идентификаторы сеанса выдаются, используются повторно и уничтожаются?

Изучение веб-взлома

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

Межсайтовый скриптинг (XSS)

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

XSS позволяет злоумышленникам внедрять пользовательские сценарии (Javascript, VBScript и другие) на страницы, просматриваемые другими пользователями. Эти скрипты используются для кражи информации и обхода контроля доступа.

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



Открыть перенаправление

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

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

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

Небезопасные прямые ссылки на объекты (IDOR)

IDOR - это еще один тип ошибок, который присутствует почти в каждом веб-приложении.

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

Узнайте больше о том, как найти IDOR здесь:





Подделка межсайтовых запросов (CSRF)

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

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

Узнайте больше о CSRF в этих сообщениях:







Подделка запросов на стороне сервера (SSRF)

SSRF - это уязвимость, которая возникает, когда злоумышленник может отправлять запросы от имени сервера. Это позволяет злоумышленникам «подделать» сигнатуры запросов уязвимого сервера, тем самым занимая привилегированное положение в сети, минуя средства управления брандмауэром и получая доступ к внутренним службам.

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

Узнайте больше о SSRF здесь:







SQL-инъекция

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

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

Проблемы десериализации

Небезопасная десериализация - это тип уязвимости, которая возникает, когда злоумышленник может манипулировать сериализованным объектом и вызывать непредвиденные последствия в потоке программы. Это может вызвать DoS, обход аутентификации или даже RCE.

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



Кликджекинг

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

Узнайте больше о кликджекинге в блоге Filedescriptor здесь:



Удаленное выполнение кода (RCE)

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

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

Будьте осторожны при создании доказательства концепции для RCE, так как легко переступить границы политики вознаграждения и нанести непреднамеренный ущерб целевому сайту. Часто чтения нечувствительного файла или создания собственного файла по случайному пути достаточно, чтобы подтвердить ваши выводы!

Условия гонки

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

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

Условия гонки больше всего влияют на финансовые сайты, торговые сайты и сайты электронной коммерции.

Сломанный контроль доступа

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

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

Изучение мобильного взлома

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

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

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

Например, если вы используете Burp и телефон Android, вы можете следовать этим двум руководствам:





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

Закрепление сертификата, также известное как закрепление SSL или закрепление сертификата, ограничивает приложение доверием только к заранее определенному сертификату. Он используется как дополнительный уровень защиты от атак типа Man-in-the-Middle (MITM). Если вы хотите перехватить и декодировать трафик приложения, использующего закрепление сертификата, вам придется сначала обойти закрепление сертификата.

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

  • Используйте крючок Фрида,
  • Замените упакованный сертификат вашим индивидуальным сертификатом,
  • Измените или отключите код проверки сертификата приложения.

Для получения более подробной информации об этих методах, пожалуйста, поищите в Google!

Веб-уязвимости

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

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

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

Жестко закодированные учетные данные

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

Небезопасное хранение данных

Некоторые приложения небезопасно хранят конфиденциальные данные в исходном коде приложения. Ищите такие вещи, как данные сеанса, финансовая информация и личная информация.

Управление сессией

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

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

Слабая криптография

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

Подробнее о том, как искать эти уязвимости в приложениях Android, читайте в моем сообщении здесь:



Общие полезные навыки

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

Разведывательные навыки

Один из самых мощных навыков в поиске ошибок - это навыки разведки: ваша способность находить новые активы и поверхности для атаки. Хорошие навыки разведки позволят вам опередить конкурентов и найти ошибки раньше других.

Читать Javascript

Также полезно научиться читать Javascript. Чтение Javascript может научить вас многому о том, как работает приложение, и может ускорить поиск ошибок.

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

Автоматизация

Также может быть очень полезно научиться писать сценарии и автоматизировать задачи. Есть много повторяющихся задач, которые вы должны выполнять в программе bug bounties, которую очень легко автоматизировать. Изучая язык программирования, такой как Python или Shell Scripting, вы можете автоматизировать эти задачи и сэкономить много времени.

Никогда не переставай учиться

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

Например, уязвимость ImageTragick была обнаружена еще в 2016 году. ImageTragick - это уязвимость со значительным воздействием, которая может привести к RCE. Спустя несколько месяцев или лет после его открытия охотники за головами постоянно находили уязвимые экземпляры в дикой природе. (И заставить банк сообщать об этом компаниям!) Так что, как хакеру, определенно окупается следить за последними новостями в области безопасности!

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



Заметка о дубликатах и ​​информативных материалах

Когда вы только начинаете, это нормально - получить массу дубликатов и информативных материалов. Так что не расстраивайтесь из-за них!

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

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

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

Напоследок несколько слов об опыте

Это трудно. Это действительно так. Когда я только начинал искать ошибки, я не мог найти ошибку недели или даже месяцы. И когда я все же найду ошибку, это будет что-то тривиальное и незначительное.

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

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

Спасибо за прочтение. Я что-то пропустил? Не стесняйтесь сообщить мне в Твиттере: https://twitter.com/vickieli7.