Katana
Katana - современный, высокопроизводительный веб-краулер и парсер, написанный на Go. Для успешной установки katana требуется Go 1.21+. Установить можно следующей командой:CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest
Поддерживает 2 режима работы:
Стандартный режим
сканирования использует стандартную библиотеку go http для обработки HTTP-запросов и ответов. Этот режим намного быстрее, так как не требует дополнительных ресурсов браузера. Однако он анализирует только "сырое" тело ответа — без выполнения JavaScript и без рендеринга DOM. Из-за этого он может пропустить URL или точки входа, которые появляются только после загрузки страницы в браузере или в результате асинхронных запросов.
Headless режим
перехватывает внутренние вызовы для обработки HTTP-запросов/ответов непосредственно в контексте браузера. Это даёт два преимущества:
- Fingerprint клиента (TLS, User-Agent) полностью идентифицирует его как настоящий браузер.
- Лучшее покрытие, поскольку эндпоинты обнаруживаются при анализе стандартного необработанного ответа, как и в предыдущем случае, а также при анализе ответа, отображаемого браузером с включенным JavaScript.
Headless сканирование не является обязательным и может быть включено с помощью -headless опции.
Использование
katana требует url или эндпоинт для сканирования и принимает один или несколько входных параметров. URL-адрес для ввода можно указать с помощью опции -u, а несколько значений можно указать через запятую. Аналогичным образом поддерживается ввод через файл с помощью опции -list, а также ввод через stdin.
При использовании режима headless могут понадобится следующие флаги:
-no-sandbox - полезен при запуске от имени пользователя root.
-no-incognito - полезен при использовании локального браузера.
Контроль области сканирования
-field-scope - самый удобный способ задать область видимости с помощью заранее заданного имени поля.
- rdn — сканирование корневого домена и всех поддоменов (например, *example.com) (по умолчанию)
- fqdn - сканирование в пределах заданного поддомена (например, www.example.com или api.example.com)
- dn — сканирование по ключевому слову в доменном имени.
katana -u https://tesla.com -fs dn
-crawl-scope - расширенное управление областью видимости с поддержкой regex.katana -u https://tesla.com -cs login
-crawl-out-scope - определение целей, которые не нужно сканировать. Также с поддержкой regex.
Обход аутентификации
Включение пользовательских заголовков или файлов cookie в HTTP-запросы для доступа к защищенным ресурсам. Эти заголовки содержат информацию об аутентификации или авторизации, что позволяет сканировать защищенный контент/эндпоинты.katana -u https://tesla.com -H 'Cookie: usrsess=AmljNrESo'
Управление сканированием
Возможность указать глубину для отслеживания URL-адресов при сканировании.katana -u https://tesla.com -d 5
Возможность включить анализ файлов JavaScript и сканирование эндпоинтов, обнаруженных в файлах JavaScript, по умолчанию отключена.katana -u https://tesla.com -jc
Возможность включить автоматическое заполнение формы для известных/неизвестных полей. Значения известных полей можно настроить по своему усмотрению, обновив файл конфигурации формы по адресу $HOME/.config/katana/form-config.yaml.katana -u https://tesla.com -aff
