Создано искусственным интеллектомУлучшено людьми
Riqli · живые документы · обновляются постоянно
Где знания об искусственном интеллекте встречаются с человеческой практикой.
Поделиться с друзьями

Bug Bounty
(bug bounty, программы bug bounty, заработок на багах, hackerone как начать, bug bounty платформы, как найти первую уязвимость на bug bounty, bug bounty writeup subdomain takeover, как использовать nuclei в баг хантинге, охотник за багами обучение с нуля)
Введение в Bug Bounty и важность безопасности веб-приложений
Этот курс посвящен практическому поиску уязвимостей в рамках программ Bug Bounty. В современном мире веб-приложения обрабатывают огромные объемы конфиденциальных данных, и их безопасность имеет решающее значение. Основная цель баг-хантинга — не просто найти ошибку, а доказать ее реальное влияние на бизнес, что является главным отличием от классического пентеста.
В отличие от пентеста, где отчитываются о всех найденных недочетах, в Bug Bounty основное внимание уделяется критическим уязвимостям с высоким уровнем воздействия. Не стоит тратить время на отчеты о слабой политике паролей или отсутствии заголовков безопасности, если вы не можете использовать их для компрометации системы. Успех в баг-хантинге напрямую зависит от способности демонстрировать бизнес-риски.
Основы веб-технологий и протоколов
Для успешного поиска уязвимостей необходимо понимать, как работает веб. HTML формирует структуру страницы, CSS отвечает за внешний вид, а JavaScript добавляет интерактивность, но также является источником многих проблем безопасности. Ключевое звено — протокол HTTP, который определяет методы запросов (GET, POST, PUT, DELETE) и коды ответов, позволяя анализировать поведение приложения.
DNS (Domain Name System) преобразует доменные имена в IP-адреса, работая как телефонная книга интернета. Понимание иерархии доменов и типов DNS-записей (A, CNAME, MX) критически важно для этапа разведки. Это знание помогает находить новые поддомены и активы, которые часто остаются без должного внимания и становятся легкой целью для исследователей.
Разведка и сбор информации (Reconnaissance)
Разведка — это фундамент успешного баг-хантинга. Глубокий сбор информации позволяет найти векторы атак, которые упускают другие исследователи. Используя инструменты, такие как Subfinder и Assetfinder, вы можете обнаружить множество поддоменов, связанных с вашей целью. Далее, с помощью httpx проверяется их доступность, что позволяет сузить круг поиска.
Фингерпринтинг технологий помогает определить стек приложения (например, PHP, Apache, Java). Знание используемых технологий и их версий позволяет искать специфические уязвимости. Инструменты вроде BuiltWith и расширения Wappalyzer автоматизируют этот процесс, предоставляя ценную информацию о серверных решениях и фреймворках.
Сканирование и перебор каталогов
Перебор каталогов и файлов (Directory Bruteforcing) помогает обнаружить скрытые точки входа в приложение. Инструмент ffuf — это мощный фаззер, использующий словари для поиска скрытых папок, файлов конфигурации и страниц администрирования. Этот метод позволяет найти недокументированные функции и старые версии приложений, которые часто содержат уязвимости.
Важно помнить, что использование данного метода должно быть строго в рамках разрешенного объема (scope), чтобы избежать проблем с законом. В рамках программы Bug Bounty всегда проверяйте правила: разрешены ли автоматизированные запросы и с какой скоростью. Сканирование каталогов позволяет получить карту приложения, что является критически важным для планирования дальнейших атак.
Аутентификация и атаки на логику (Authentication & Logic)
Механизмы аутентификации — это первая линия обороны. Атаки грубой силой (Brute-force) направлены на подбор логинов и паролей с использованием словарей. Программы Bug Bounty часто исключают подобные атаки из-за риска блокировки аккаунтов, однако проверка на наличие ограничений скорости (rate limiting) и блокировок остается актуальной задачей.
Следует различать аутентификацию и авторизацию. Аутентификация — это подтверждение личности (кто вы), а авторизация — это определение прав доступа (что вам разрешено). Уязвимости в логике авторизации, такие как IDOR (Insecure Direct Object Reference), позволяют получить доступ к данным другого пользователя, просто изменив параметр в запросе, что часто является критической находкой.
Инъекционные атаки (SQL, Command, XXE)
SQL-инъекция — одна из самых опасных уязвимостей, позволяющая манипулировать запросами к базе данных. Суть атаки заключается во внедрении вредоносного SQL-кода в пользовательский ввод. Например, подстановка условия ' OR 1=1 -- может вернуть все записи из таблицы, что служит доказательством наличия уязвимости.
Слепое SQL-инъецирование (Blind SQL Injection) сложнее в эксплуатации, так как не выводит данные напрямую. Для извлечения информации используются логические вопросы (True/False) или временные задержки (Time-based). Специализированные инструменты, такие как sqlmap, могут автоматизировать процесс поиска и эксплуатации уязвимостей в сложных сценариях.
XSS и SSTI (Cross-Site Scripting & Template Injection)
Cross-Site Scripting (XSS) позволяет выполнять произвольный JavaScript-код в браузере жертвы. XSS бывает отраженным, сохраненным и DOM-типа. Сохраненный XSS наиболее опасен, так как злоумышленник может украсть сессионные cookie или выполнить действия от имени администратора, что в Bug Bounty считается высокоэффективной уязвимостью.
Server-Side Template Injection (SSTI) возникает, когда пользовательский ввод встраивается в шаблон на стороне сервера без должной обработки. Это позволяет выполнить произвольный код на сервере. Например, ввод в движок Twig может привести к выполнению команды через функцию system(), что дает полный контроль над сервером, что является критической находкой в Bug Bounty.
Небезопасная загрузка файлов и CSRF
Уязвимости при загрузке файлов часто приводят к выполнению кода на сервере. Злоумышленники обходят клиентские проверки (например, через отключение JavaScript) или используют двойные расширения (shell.php.png) для выполнения вредоносного кода. Одна из серьезных угроз — это атака CSRF, когда жертва, будучи авторизованной, по неволе выполняет нежелательное действие.
CSRF-атаки могут менять пароль пользователя или совершать финансовые операции без его ведома. Защита от них реализуется через уникальные токены (CSRF tokens), которые должны привязываться к сессии пользователя. В ходе пентеста важно проверять, проверяется ли токен на сервере, а не просто его наличие, так как многие реализации такой защиты оказываются неэффективными.
SSRF и Subdomain Takeover
Server-Side Request Forgery (SSRF) позволяет атакующему отправлять запросы от имени уязвимого сервера. Эта уязвимость часто используется для сканирования внутренних сетей и доступа к закрытым сервисам (например, метаданные AWS). Обнаружение слепого (Blind) SSRF затруднено, но подтверждается с помощью внешнего коллаборатора, засекающего входящий запрос.
Subdomain Takeover (захват поддомена) происходит, когда DNS-запись указывает на несуществующий ресурс, который можно зарегистрировать. Например, если CNAME ведет на удаленный аккаунт GitHub, который был удален, злоумышленник может создать его и разместить вредоносное содержимое по адресу поддомена. Это может привести к XSS-атакам и компрометации репутации.
Написание отчетов и CVSS
Качество отчета напрямую влияет на скорость выплаты вознаграждения. Четкий репорт должен содержать шаги воспроизведения, полезную нагрузку и доказательства (скриншоты). Важно указывать CVSS-скор, однако помните, что оценка влияния уязвимости субъективна и может быть скорректирована командой платформы. Рекомендации по исправлению уязвимости повышают ценность отчета.
Коммуникация с триажером — ключевой навык. Избегайте агрессивного тона и не предоставляйте неполную информацию, так как это может затянуть проверку. Ожидайте, что триажер может уточнять детали, и всегда отвечайте на запросы вежливо. Соблюдение правил программы и корректное предоставление Proof of Concept (PoC) — залог успеха в Bug Bounty.
Questions and answers
В чем заключается основная цель баг-хантинга, которая отличает его от классического пентеста?
Основная цель — не просто найти ошибку, а доказать ее реальное влияние на бизнес.
В баг-хантинге акцент делается на критических уязвимостях, демонстрирующих бизнес-риски, в отличие от пентеста, где отчитываются о всех найденных недочетах.
Цель — найти как можно больше уязвимостей и составить подробный отчет.
Основная цель — автоматизировать поиск с помощью инструментов, таких как ffuf и sqlmap.
Какое ключевое звено веб-технологий определяет методы запросов и коды ответов, позволяя анализировать поведение приложения?
Протокол HTTP, который определяет методы запросов (GET, POST, PUT, DELETE) и коды ответов.
Понимание протокола HTTP критически важно для анализа взаимодействия с веб-приложением и поиска уязвимостей.
Протокол DNS, который преобразует доменные имена в IP-адреса.
Язык программирования JavaScript, который добавляет интерактивность страницам.
Почему понимание иерархии доменов и типов DNS-записей критически важно для этапа разведки в баг-хантинге?
Это помогает находить новые поддомены и активы, которые часто остаются без должного внимания.
Иерархия доменов и DNS-записи (A, CNAME, MX) позволяют обнаруживать скрытые ресурсы, которые могут быть легкой целью для атак.
Это необходимо для перебора каталогов и файлов с помощью инструмента ffuf.
Это позволяет определить стек технологий приложения (например, PHP или Java).
Какие инструменты используются для обнаружения поддоменов, связанных с целью, и проверки их доступности?
Subfinder и Assetfinder для обнаружения, а httpx для проверки доступности.
Эти инструменты являются частью глубокого сбора информации, который позволяет найти атакуемые векторы, упущенные другими исследователями.
BuiltWith и Wappalyzer для фингерпринтинга технологий.