Привет, Хабр! Сегодня хочу поделиться историей о том, как желание автоматизировать рутинную работу привело меня к созданию собственного инструмента FullMute и, как следствие, к первым серьезным выплатам на платформах bug bounty.
Как многие начинающие исследователи, я начал с хаотичного ручного поиска уязвимостей: проверял заголовки, искал известные пути к админкам, пытался угадать версии CMS. Это было неэффективно, медленно и сильно зависело от везения. Мне нужен был «компас», который бы проводил первоначальную разведку за меня и давал четкие цели для атаки. Так родилась идея FullMute.
Идея: Сканер-разведчик, а не очередной bruteforcer
Я не хотел создавать тысячный сканер уязвимостей, который бездумно брутфорсит endpoints. Моя цель была иной: интеллектуальная технологическая разведка (Tech-Int). Инструмент должен был отвечать на ключевые вопросы:
Что здесь работает? (CMS, фреймворк, сервер, язык)
Из чего это собрано? (плагины, темы, библиотеки)
Есть ли известные дыры (CVE) в этой конкретной версии?
Получив такие данные, я могу сфокусироваться не на «стрельбе по площадям», а на целенаправленном исследовании. Именно этот подход и лег в основу FullMute.
Архитектура: Простота и модульность
Сканер написан на Python и построен по модульному принципу:
CLI: Удобный интерфейс для запуска сканирования и работы с базой.
Core: «Мозг», который управляет потоком задач.
Detector: Набор независимых модулей-детекторов. Каждый отвечает за свою область: CMS, сервера, камеры, JS-библиотеки. Это позволяет легко добавлять новые методы обнаружения.
DB (SQLite): Все найденные данные аккуратно складываются в локальную базу. Это ключевой момент! Вся история сканирований всегда под рукой.
Utils: Вспомогательные функции, такие как «стелс»-клиент с рандомными задержками и юзер-агентами, чтобы не попадать под базовые защиты.
Ключевые особенности, которые сделали его полезным
Сканер не просто собирает заголовки. Его сила в деталях:
1. Широта охвата: Он ищет не только банальный WordPress, но и камеры (Axis, Hikvision), роутеры (MikroTik, Ubiquiti), специфичные JS-библиотеки. Часто именно нетривиальные цели (IoT-устройства, старые административные панели) содержат критические уязвимости.
2. Глубина: Обнаружение плагинов и тем для популярных CMS. Устаревший плагин с известным CVE — это почти готовый репорт для bug bounty.
3. Интеграция CVE: Автоматическая сверка всех обнаруженных технологий и их версий с базой уязвимостей NVD. Сканер не просто говорит «здесь WordPress 5.7.1», он сразу показывает: «WordPress 5.7.1 — уязвим к CVE-2021-xxxx (CVSS: 9.8)».
4. Мощный поиск по базе: Вся разведданные хранятся локально. Хочешь найти все домены на устаревшем nginx? Или все WordPress-сайты с плагином akismet версии ниже 4.0? Пара команд — и у тебя список целей для прицельного аудита.
Как это превратилось в заработок: Тактика на практике
Вот типичный рабочий процесс, который позволил мне находить уязвимости эффективнее:
1. Массовая разведка: Я брал списки доменов с программ bug bounty (например, с HackerOne или Bugcrowd) и прогонял их через fullmute. Сканер на нескольких потоках собирал технологический стэк.
2. Анализ и приоритизация: Команда fullmute search fullmute.db -t cve -q "2025" сразу давала список технологий с свежими уязвимостями. Цели с высоким CVSS получали наивысший приоритет.
3. Глубокая фокусировка: Найдя, например, несколько Drupal-сайтов, я искал конкретные модули (fullmute search ... -t plugin). Обнаружив устаревшую версию модуля, я детально изучал связанный с ней CVE и пробовал эксплоит или искал свой вектор атаки.
4. Поиск low-hanging fruit: Детектор камер и роутеров часто находил устройства, выведенные в интернет по ошибке, с дефолтными учетными данными. Такие находки часто классифицируются как критичные.
Конкретный пример:
Сканер обнаружил на одном из доменов сервер OpenResty устаревшей версии. Быстрая проверка в базе CVE показала уязвимость RCE. После изучения метаданных CVE и пары часов экспериментов у меня на руках был работающий proof-of-concept. Репорт был принят и оценен как High.
Выводы и советы тем, кто хочет повторить
1. Автоматизируйте скучное. Ваша сила — в анализе и креативном мышлении. Поручите машине сбор данных.
2. Стройте свою базу знаний. Локальная база данных (как SQLite в FullMute) — это ваш главный актив. Она сохраняет контекст между сессиями.
3. Фокусируйтесь на нише. FullMute силен в технологической разведке. Найдите свою «фишку»: парсинг JS-файлов на секреты, анализ карт источников, умное фаззингование API.
4. Инструмент — это продолжение мысли. FullMute вырос из моего собственного workflow. Лучший инструмент — тот, который вы написали под себя, идеально подстраиваясь под ваш стиль работы.
5. Делитесь. Выложив код как open-source (как в моем случае), вы получаете feedback, помощь в развитии и репутацию в комьюнити.
Написание FullMute Scanner стало для меня не просто способом заработать, но и невероятно ценным опытом в разработке и понимании веб-безопасности изнутри. Он перестал быть «черным ящиком». А главное — это доказательство того, что инвестиции времени в создание собственных инструментов окупаются сторицей, как в знаниях, так и в материальном выражении.
Дополнение
Моя мало развитая экосистема ИБ
P.S. Это мой первый опыт, инструмент постоянно развивается. Буду рад конструктивной критике, звездочкам и пулл-реквестам!
