Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
katana — Фреймворк нового поколения для сканирования и обхода веб-сайтов. | Kitploit
Инструменты/GitHubGitHub/projectdiscovery/katana
РазведкаСбор информацииВеб-безопасностьТестирование на ПроникновениеКраулер
GitHubprojectdiscovery/katana

katana

Фреймворк нового поколения для сканирования и обхода веб-сайтов.

Репозиторий
17.3k1.2k4 дней назадПроверено Kitploit

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

katana

Фреймворк нового поколения для краулинга и паукинга

Возможности • Установка • Использование • Область • Настройка • Фильтры • Присоединиться к Discord

Возможности

image

  • Быстрый и полностью настраиваемый веб-краулинг
  • Режимы Standard и Headless
  • Разбор/краулинг JavaScript
  • Настраиваемое автоматическое заполнение форм
  • Контроль области - предварительно настроенные поля/регулярные выражения
  • База знаний - ML-классификация типов страниц/форм (автоматически загружаемая модель)
  • Настраиваемый вывод - предварительно настроенные поля
  • ВВОД - STDIN, URL и LIST
  • ВЫВОД - STDOUT, FILE и JSON

Установка

Для установки katana требуется Go 1.26+. Если возникнут проблемы с установкой, рекомендуем попробовать установить с последней доступной версией Go, так как минимальная требуемая версия могла измениться. Выполните команду ниже или скачайте предварительно скомпилированный бинарный файл со страницы релизов.```console CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest

root@kitploit:~
**Дополнительные параметры установки / запуска katana-**

<details>
  <summary>Docker</summary>

> Чтобы установить / обновить docker до последнего тега -```sh
docker pull projectdiscovery/katana:latest

Запуск katana в стандартном режиме с использованием docker -```sh docker run projectdiscovery/katana:latest -u https://tesla.com

root@kitploit:~
> Чтобы запустить katana в безголовом режиме с помощью docker -```sh
docker run projectdiscovery/katana:latest -u https://tesla.com -system-chrome -headless
Ubuntu

Рекомендуется установить следующие предварительные требования -```sh sudo apt update sudo apt install zip curl wget git snapd sudo snap refresh sudo snap install golang --classic

sudo install -d -m 0755 /etc/apt/keyrings curl -fsSL https://dl.google.com/linux/linux_signing_key.pub
| sudo gpg --dearmor -o /etc/apt/keyrings/google-chrome.gpg

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg]
http://dl.google.com/linux/chrome/deb/ stable main"
| sudo tee /etc/apt/sources.list.d/google-chrome.list > /dev/null

sudo apt update sudo apt install google-chrome-stable

root@kitploit:~
> install katana -```sh
go install github.com/projectdiscovery/katana/cmd/katana@latest

Использование```console

katana -h

root@kitploit:~
Это отобразит справку по инструменту. Вот все переключатели, которые он поддерживает.```console
Katana is a fast crawler focused on execution in automation
pipelines offering both headless and non-headless crawling.

Usage:
  ./katana [flags]

Flags:
INPUT:
   -u, -list string[]     target url / list to crawl
   -resume string         resume scan using resume.cfg
   -e, -exclude string[]  exclude host matching specified filter ('cdn', 'private-ips', cidr, ip, regex)

CONFIGURATION:
   -r, -resolvers string[]       list of custom resolver (file or comma separated)
   -d, -depth int                maximum depth to crawl (default 3)
   -jc, -js-crawl                enable endpoint parsing / crawling in javascript file
   -jsl, -jsluice                enable jsluice parsing in javascript file (memory intensive)
   -ct, -crawl-duration value    maximum duration to crawl the target for (s, m, h, d) (default s)
   -kf, -known-files string      enable crawling of known files (all,robotstxt,sitemapxml), a minimum depth of 3 is required to ensure all known files are properly crawled.
   -mrs, -max-response-size int  maximum response size to read (default 4194304)
   -timeout int                  time to wait for request in seconds (default 10)
   -aff, -automatic-form-fill    enable automatic form filling (experimental)
   -fx, -form-extraction         extract form, input, textarea & select elements in jsonl output
   -retry int                    number of times to retry the request (default 1)
   -proxy string                 http/socks5 proxy to use
   -td, -tech-detect             enable technology detection
   -H, -headers string[]         custom header/cookie to include in all http request in header:value format (file)
   -config string                path to the katana configuration file
   -fc, -form-config string      path to custom form configuration file
   -flc, -field-config string    path to custom field configuration file
   -s, -strategy string          Visit strategy (depth-first, breadth-first) (default "depth-first")
   -iqp, -ignore-query-params    Ignore crawling same path with different query-param values
   -fsu, -filter-similar         filter crawling of similar looking URLs (e.g., /users/123 and /users/456)
   -fst, -filter-similar-threshold int  number of distinct values before a path position is treated as parameter (default 10)
   -tlsi, -tls-impersonate       enable experimental client hello (ja3) tls randomization
   -dr, -disable-redirects       disable following redirects (default false)
   -kb, -knowledge-base          enable knowledge base classification
   -kb-secrets                   enable secrets extractor in the knowledge base
   -kb-validate-secrets          validate detected secrets against their provider (sends live API calls)
   -kb-endpoints                 enable endpoints extractor (classifies REST/GraphQL/SOAP/XHR requests)
   -mdp, -max-domain-pages int   maximum number of pages to crawl per domain (default unlimited)

DEBUG:
   -health-check, -hc        run diagnostic check up
   -elog, -error-log string  file to write sent requests error log
   -pprof-server             enable pprof server

HEADLESS:
   -hl, -headless                    enable headless hybrid crawling (experimental)
   -sc, -system-chrome               use local installed chrome browser instead of katana installed
   -sb, -show-browser                show the browser on the screen with headless mode
   -ho, -headless-options string[]   start headless chrome with additional options
   -nos, -no-sandbox                 start headless chrome in --no-sandbox mode
   -cdd, -chrome-data-dir string     path to store chrome browser data
   -scp, -system-chrome-path string  use specified chrome browser for headless crawling
   -noi, -no-incognito               start headless chrome without incognito mode
   -cwu, -chrome-ws-url string       use chrome browser instance launched elsewhere with the debugger listening at this URL
   -xhr, -xhr-extraction             extract xhr request url,method in jsonl output
   -pls, -page-load-strategy string  page load strategy (heuristic, load, domcontentloaded, networkidle, none) (default "heuristic")
   -dwt, -dom-wait-time int          time in seconds to wait after page load when using domcontentloaded strategy (default 5)
   -csp, -captcha-solver-provider string  captcha solver provider (e.g. capsolver)
   -csk, -captcha-solver-key string       captcha solver provider api key

SCOPE:
   -cs, -crawl-scope string[]       in scope url regex to be followed by crawler
   -cos, -crawl-out-scope string[]  out of scope url regex to be excluded by crawler
   -fs, -field-scope string         pre-defined scope field (dn,rdn,fqdn) or custom regex (e.g., '(company-staging.io|company.com)') (default "rdn")
   -ns, -no-scope                   disables host based default scope
   -do, -display-out-scope          display external endpoint from scoped crawling

FILTER:
   -mr, -match-regex string[]             regex or list of regex to match on output url (cli, file)
   -fr, -filter-regex string[]            regex or list of regex to filter on output url (cli, file)
   -f, -field string                      field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir) (Deprecated: use -output-template instead)
   -sf, -store-field string               field to store in per-host output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir)
   -em, -extension-match string[]         match output for given extension (eg, -em php,html,js,none)
   -ef, -extension-filter string[]        filter output for given extension (eg, -ef png,css)
   -ndef, -no-default-ext-filter bool     remove default extensions from the filter list
   -mdc, -match-condition string          match response with dsl based condition
   -fdc, -filter-condition string         filter response with dsl based condition
   -duf, -disable-unique-filter           disable duplicate content filtering
   -filter-page-type string[]      filter response with page type (e.g. error,captcha,parked)

RATE-LIMIT:
   -c, -concurrency int          number of concurrent fetchers to use (default 10)
   -p, -parallelism int          number of concurrent inputs to process (default 10)
   -rd, -delay int               request delay between each request in seconds
   -rl, -rate-limit int          maximum requests to send per second (default 150)
   -rlm, -rate-limit-minute int  maximum number of requests to send per minute
   -hrl, -host-rate-limit int    maximum requests to send per second per host
   -hrlm, -host-rate-limit-minute int  maximum number of requests to send per minute per host

UPDATE:
   -up, -update                 update katana to latest version
   -duc, -disable-update-check  disable automatic katana update check

OUTPUT:
   -o, -output string                file to write output to
   -output-template string      custom output template
   -sr, -store-response              store http requests/responses
   -srd, -store-response-dir string  store http requests/responses to custom directory
   -ncb, -no-clobber                 do not overwrite output file
   -sfd, -store-field-dir string     store per-host field to custom directory
   -or, -omit-raw                    omit raw requests/responses from jsonl output
   -ob, -omit-body                   omit response body from jsonl output
   -lof, -list-output-fields         list available fields for jsonl output format
   -eof, -exclude-output-fields      exclude fields from jsonl output
   -j, -jsonl                        write output in jsonl format
   -nc, -no-color                    disable output content coloring (ANSI escape codes)
   -silent                           display output only
   -v, -verbose                      display verbose output
   -debug                            display debug output
   -version                          display project version

Запуск Katana

Ввод для katana

katana требует url или endpoint для обхода и принимает один или несколько входов.

URL ввода можно указать с помощью опции -u, несколько значений можно указать через запятую, также поддерживается ввод из файла с помощью опции -list и дополнительно конвейерный ввод (stdin).

URL ввод```sh

katana -u https://tesla.com

root@kitploit:~
#### Множественный ввод URL (через запятую)```sh
katana -u https://tesla.com,https://google.com

Ввод списка```bash

$ cat url_list.txt

https://tesla.com https://google.com

root@kitploit:~
ВВОД:```
katana -list url_list.txt

STDIN (конвейерный ввод)```sh

echo https://tesla.com | katana

root@kitploit:~
-h, --help            показать это справочное сообщение и выйти
  -se SESSION, --session SESSION
                        возобновить прерванный сеанс, используя ранее
                        сгенерированные файлы сеанса. (по умолчанию: None)
  -m {kerberos,azuread}, --method {kerberos,azuread}
                        выбрать метод аутентификации: kerberos или azuread
                        (по умолчанию: kerberos)
  -dc HOST, --domain-controller HOST
                        IP-адрес или FQDN контроллера домена. Если
                        не указан, будет получен через DNS.
  -b, --benchmark       тестирование модулей перебора для выбора наиболее
                        эффективной стратегии перед началом атаки
                        (по умолчанию: False)
  -p, --passwords       только взлом паролей с выводом в stdout (полезно при
                        использовании --no-save совместно с пользовательской
                        техникой взлома паролей, например hashcat)

mode:
  Режимы выполнения

  --shred SHRED         Уничтожить ранее созданный файл .clemps (удаляет его)
  --restore RESTORE     Восстановить файл .clemps из его фрагментов (по умолчанию
                        билеты Kerberos уничтожаются вместо удаления)
  --export EXPORT       Экспортировать все хеши из NTDS.dit в файл для hashcat

output options:
  Параметры управления выводом

  --export-xlsx EXPORT_XLSX
                        экспортировать результаты в файл Excel
  --export-sqlite EXPORT_SQLITE
                        экспортировать результаты в файл базы данных SQLite3
  --no-save             не сохранять результаты на диск

kerberos:
  Параметры аутентификации Kerberos

  -u USERNAME, --username USERNAME
                        имя пользователя для аутентификации Kerberos
  -d DOMAIN, --domain DOMAIN
                        имя домена для аутентификации Kerberos
  -k, --ticket          аутентифицироваться с помощью билета Kerberos, выбранного из
                        файла ccache
  -cc CCFILE, --ccache CCFILE
                        файл ccache для аутентификации Kerberos
  -H, --hashes          аутентифицироваться с использованием хешей
  -nh, --no-hash        не запрашивать NT-хеш целевого пользователя (полезно в режиме
                        только kerberoasting)
  --aes AES             ключ AES для аутентификации Kerberos (шестнадцатеричная строка)```sh
cat domains | httpx | katana

Пример запуска katana -```console katana -u https://youtube.com


/ /_____ / /___ ____ ___ _ / '/ _ / __/ _ / _ / _ / //_\,/_/_,////_,_/ v0.0.1

root@kitploit:~
  projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions. [WRN] Developers assume no liability and are not responsible for any misuse or damage. https://www.youtube.com/ https://www.youtube.com/about/ https://www.youtube.com/about/press/ https://www.youtube.com/about/copyright/ https://www.youtube.com/t/contact_us/ https://www.youtube.com/creators/ https://www.youtube.com/ads/ https://www.youtube.com/t/terms https://www.youtube.com/t/privacy https://www.youtube.com/about/policies/ https://www.youtube.com/howyoutubeworks?utm_campaign=ytgen&utm_source=ythp&utm_medium=LeftNav&utm_content=txt&u=https%3A%2F%2Fwww.youtube.com%2Fhowyoutubeworks%3Futm_source%3Dythp%26utm_medium%3DLeftNav%26utm_campaign%3Dytgen https://www.youtube.com/new https://m.youtube.com/ https://www.youtube.com/s/desktop/4965577f/jsbin/desktop_polymer.vflset/desktop_polymer.js https://www.youtube.com/s/desktop/4965577f/cssbin/www-main-desktop-home-page-skeleton.css https://www.youtube.com/s/desktop/4965577f/cssbin/www-onepick.css https://www.youtube.com/s/_/ytmainappweb/_/ss/k=ytmainappweb.kevlar_base.0Zo5FUcPkCg.L.B1.O/am=gAE/d=0/rs=AGKMywG5nh5Qp-BGPbOaI1evhF5BVGRZGA https://www.youtube.com/opensearch?locale=en_GB

root@kitploit:~
## Режим сканирования

### Стандартный режим

Стандартный режим сканирования использует под капотом стандартную библиотеку go http для обработки HTTP-запросов/ответов. Этот режим работает гораздо быстрее, так как не имеет накладных расходов браузера. Тем не менее, он анализирует тело HTTP-ответа как есть, без какого-либо JavaScript или рендеринга DOM, потенциально пропуская конечные точки, появляющиеся после рендеринга DOM, или асинхронные вызовы конечных точек, которые могут происходить в сложных веб-приложениях, зависящих, например, от специфических для браузера событий.

### Headless-режим

Headless-режим перехватывает внутренние вызовы headless для обработки HTTP-запросов/ответов непосредственно в контексте браузера. Это дает два преимущества:
- HTTP-отпечаток (TLS и user agent) полностью идентифицирует клиента как легитимный браузер
- Лучшее покрытие, поскольку конечные точки обнаруживаются при анализе как стандартного необработанного ответа, как в предыдущем режиме, так и ответа, отрендеренного браузером с включенным JavaScript.

Headless-сканирование является опциональным и может быть включено с помощью опции `-headless`.

Вот другие CLI-опции headless -```console
katana -h headless

Flags:
HEADLESS:
   -hl, -headless                    enable headless hybrid crawling (experimental)
   -sc, -system-chrome               use local installed chrome browser instead of katana installed
   -sb, -show-browser                show the browser on the screen with headless mode
   -ho, -headless-options string[]   start headless chrome with additional options
   -nos, -no-sandbox                 start headless chrome in --no-sandbox mode
   -cdd, -chrome-data-dir string     path to store chrome browser data
   -scp, -system-chrome-path string  use specified chrome browser for headless crawling
   -noi, -no-incognito               start headless chrome without incognito mode
   -cwu, -chrome-ws-url string       use chrome browser instance launched elsewhere with the debugger listening at this URL
   -xhr, -xhr-extraction             extract xhr requests
   -pls, -page-load-strategy string  page load strategy (heuristic, load, domcontentloaded, networkidle, none) (default "heuristic")
   -dwt, -dom-wait-time int          time in seconds to wait after page load when using domcontentloaded strategy (default 5)
   -csp, -captcha-solver-provider string  captcha solver provider (e.g. capsolver)
   -csk, -captcha-solver-key string       captcha solver provider api key

-no-sandbox

Запускает безголовый браузер Chrome с опцией no-sandbox, полезно при запуске от пользователя root.```console katana -u https://tesla.com -headless -no-sandbox

root@kitploit:~
*`-no-incognito`*
----

Запускает headless-браузер Chrome без режима инкогнито, полезно при использовании локального браузера.```console
katana -u https://tesla.com -headless -no-incognito

Чтобы сохранить файлы cookie и другие данные сессии браузера между запусками, комбинируйте -no-incognito с -chrome-data-dir, чтобы Katana повторно использовала выбранный каталог профиля Chrome вместо временного изолированного.```console katana -u https://tesla.com -headless -no-incognito -chrome-data-dir /tmp/katana-profile

root@kitploit:~
*`-headless-options`*
----

При сканировании в безголовом режиме можно указать дополнительные параметры Chrome с помощью `-headless-options`, например -```console
katana -u https://tesla.com -headless -system-chrome -headless-options --disable-gpu,proxy-server=http://127.0.0.1:8080

-page-load-strategy

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

root@kitploit:~
Стратегия `domcontentloaded` особенно полезна для одностраничных приложений (SPA), которые никогда полностью не завершают загрузку из-за непрерывных фоновых запросов (websockets, polling и т.д.).

*`-dom-wait-time`*
----

При использовании стратегии загрузки страницы `domcontentloaded` эта опция определяет, сколько секунд ждать после события DOMContentLoaded. Это дает время JavaScript для рендеринга интерактивных элементов. Значение по умолчанию — 5 секунд.```console
katana -u https://tesla.com -headless -pls domcontentloaded -dwt 10

Решение капчи

Katana поддерживает автоматическое обнаружение и решение капчи при headless-сканировании. При обнаружении страницы с капчей katana определяет провайдера капчи, решает её через внешний сервис и продолжает сканирование.

Поддерживаемые типы капчи: reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Enterprise, Cloudflare Turnstile, hCaptcha

-captcha-solver-provider

Опция для указания провайдера решения капчи. В настоящее время поддерживается: capsolver.

-captcha-solver-key

API-ключ для провайдера решения капчи.```console katana -u https://example.com -headless -csp capsolver -csk YOUR_API_KEY

root@kitploit:~
Провайдер и ключ также можно задать через переменные окружения:```console
export CAPTCHA_SOLVER_PROVIDER=capsolver
export CAPTCHA_SOLVER_KEY=YOUR_API_KEY
katana -u https://example.com -headless

Управление областью сканирования

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

-field-scope

Наиболее удобная опция для определения области с помощью предопределённого имени поля; rdn является опцией по умолчанию для области поля.

  • rdn - сканирование ограничено корневым доменным именем и всеми поддоменами (например, *example.com) (по умолчанию)
  • fqdn - сканирование ограничено указанным поддоменом (например, www.example.com или api.example.com)
  • dn - сканирование ограничено ключевому слову доменного имени (например, example)```console katana -u https://tesla.com -fs dn
root@kitploit:~
*`-crawl-scope`*
------

Для продвинутого контроля области видимости можно использовать опцию `-cs`, которая поддерживает **regex**.```console
katana -u https://tesla.com -cs login

Для нескольких правил в области видимости можно передавать файловый ввод с многострочной строкой / regex.```bash $ cat in_scope.txt

login/ admin/ app/ wordpress/

root@kitploit:~
``````console
katana -u https://tesla.com -cs in_scope.txt

-crawl-out-scope

Для определения того, что не нужно обходить, может использоваться опция -cos, которая также поддерживает ввод regex.```console katana -u https://tesla.com -cos logout

root@kitploit:~
Для множества правил, выходящих за область действия, можно передать файловый ввод с многострочной строкой / регулярным выражением.```bash
$ cat out_of_scope.txt

/logout
/log_out

Требования

  • golang 1.22 (go1.22.10 или новее)
  • пакет go-win64api (устанавливаемый через go get -u github.com/iamacarpet/go-win64api)
  • wmic (командная строка Windows Management Instrumentation), предустановленная в Windows.```console katana -u https://tesla.com -cos out_of_scope.txt
root@kitploit:~
*`-no-scope`*
----

Katana по умолчанию ограничивает область сканирования `*.domain`. Чтобы отключить это, можно использовать опцию `-ns`; она также позволяет сканировать интернет.```console
katana -u https://tesla.com -ns

-display-out-scope

По умолчанию, при использовании опции scope, она также применяется к ссылкам, отображаемым в выводе, поэтому внешние URL-адреса по умолчанию исключаются. Чтобы переопределить это поведение, можно использовать опцию -do, чтобы отобразить все внешние URL-адреса, существующие в URL/Endpoint целей в рамках scope.``` katana -u https://tesla.com -do

root@kitploit:~
Вот все параметры командной строки для управления областью -```console
katana -h scope

Flags:
SCOPE:
   -cs, -crawl-scope string[]       in scope url regex to be followed by crawler
   -cos, -crawl-out-scope string[]  out of scope url regex to be excluded by crawler
   -fs, -field-scope string         pre-defined scope field (dn,rdn,fqdn) (default "rdn")
   -ns, -no-scope                   disables host based default scope
   -do, -display-out-scope          display external endpoint from scoped crawling

Конфигурация краулера

Katana предоставляет несколько опций для настройки и управления сканированием по нашему желанию.

-depth

Опция для определения depth (глубины) следования по URL-адресам для сканирования: чем больше глубина, тем больше число конечных точек сканируется + время для сканирования.``` katana -u https://tesla.com -d 5

root@kitploit:~
*`-js-crawl`*
----

Опция для включения разбора JavaScript-файлов и обхода конечных точек, обнаруженных в JavaScript-файлах, отключена по умолчанию.```
katana -u https://tesla.com -jc

-crawl-duration

Опция для задания предопределенной продолжительности обхода, отключена по умолчанию.``` katana -u https://tesla.com -ct 2

root@kitploit:~
*`-known-files`*
----
Опция для включения сканирования файлов `robots.txt` и `sitemap.xml`, отключена по умолчанию.```
katana -u https://tesla.com -kf robotstxt,sitemapxml

-automatic-form-fill

Опция для включения автоматического заполнения форм для известных / неизвестных полей. Значения известных полей можно настраивать по необходимости, обновляя файл конфигурации форм по пути $HOME/.config/katana/form-config.yaml.

Автоматическое заполнение форм — экспериментальная функция.``` katana -u https://tesla.com -aff

root@kitploit:~
Значения конфигурации форм поддерживают вспомогательные функции DSL для генерации динамических данных. Все функции `rand_*` из библиотеки [projectdiscovery/dsl](https://github.com/projectdiscovery/dsl) доступны:```yaml
# $HOME/.config/katana/form-config.yaml
email: "rand_email()"
phone: "rand_phone()"
placeholder: "rand_first_name()"
password: 'rand_base(16, "")'
color: "#e66465"

-filter-similar

Опция для фильтрации обхода похожих URL-адресов путем нормализации динамических сегментов пути. Это выявляет идентификаторы, UUID, хеши, даты и другие динамические значения, а также изучает повторяющиеся шаблоны во время выполнения. Например, /users/123 и /users/456 считаются одной и той же конечной точкой.``` katana -u https://tesla.com -fsu

root@kitploit:~
Порог продвижения (сколько различных значений в позиции пути, прежде чем оно будет рассматриваться как параметр) можно настроить с помощью `-fst`. Меньшие значения более агрессивны (меньше URL-адресов сканируется), большие значения более снисходительны. По умолчанию — `10`.```
katana -u https://tesla.com -fsu -fst 5

-max-domain-pages

Опция для ограничения количества страниц, сканируемых на один домен. Предотвращает ситуацию, когда отдельный домен расходует весь бюджет сканирования, полезно для крупных сайтов или защиты от ловушек сканера.``` katana -u https://tesla.com -mdp 100

root@kitploit:~
## Классификация базы знаний

Katana может обогащать результаты сканирования с помощью **базы знаний** — классификации каждой просканированной страницы на основе машинного обучения, работающей на базе [dit](https://github.com/HappyHackingSpace/dit). При включении этой функции каждый ответ классифицируется по **типу страницы** (например, `login`, `error`, `captcha`, `parked`), а любые формы на странице идентифицируются, и результат прикрепляется к полю `knowledgebase` вывода JSONL. Это работает во всех **движках** (стандартном и headless).

> **Примечание**: Модель классификации **автоматически загружается** при первом использовании в `~/.dit/model.json` (с [Hugging Face](https://huggingface.co/datasets/happyhackingspace/dit)). Это одноразовая операция на каждую машину — последующие запуски используют кэшированную модель. Ручная установка `dit` не требуется.

*`-knowledge-base`*
----

Включить классификацию базы знаний. Классификация типа страницы и форм добавляется в поле `knowledgebase` каждого результата.```console
katana -u https://example.com -kb -jsonl

Установка

root@kitploit:~
sudo apt update
sudo apt install -y nmap masscan

Для систем на основе Debian

root@kitploit:~
sudo apt install -y python3 python3-pip git

Для macOS

С использованием Homebrew:

root@kitploit:~
brew install nmap masscan python git

Для систем на основе RHEL (Fedora, CentOS и т.д.)

С использованием DNF:

root@kitploit:~
sudo dnf install -y nmap masscan python3 python3-pip git

Сборка из исходников

Для установки из исходников используйте:

root@kitploit:~
git clone https://github.com/example/repo.git
cd repo
pip3 install -r requirements.txt
python3 setup.py install
``````json
{
  "timestamp": "...",
  "request": { "...": "..." },
  "response": {
    "...": "...",
    "knowledgebase": {
      "PageType": "login",
      "Forms": [{ "type": "login", "fields": { "username": "username or email", "password": "password" } }]
    }
  }
}

-filter-page-type

Фильтровать результаты только по заданному(ым) типу(ам) страницы. Включение этого подразумевает -kb (классификатор инициализируется автоматически).```console katana -u https://example.com -fpt login,error

root@kitploit:~
*`-kb-secrets`*
----

Включите извлечение секретов в базе знаний, отображая обнаруженные секреты (ключи API, токены и т.д.) в ключе `secrets`. Добавьте `-kb-validate-secrets` для проверки обнаруженных секретов у их провайдера — обратите внимание, это **отправляет живые вызовы API**.```console
katana -u https://example.com -kb-secrets

-kb-endpoints

Включает извлекатель конечных точек, который классифицирует запросы как REST, GraphQL, SOAP или XHR под ключом endpoints.```console katana -u https://example.com -kb-endpoints

root@kitploit:~
## Аутентифицированное сканирование

Аутентифицированное сканирование включает добавление пользовательских заголовков или куки-файлов в HTTP-запросы для доступа к защищённым ресурсам. Эти заголовки предоставляют информацию для аутентификации или авторизации, что позволяет сканировать аутентифицированный контент/конечные точки. Вы можете указать заголовки напрямую в командной строке или передать их в виде файла для katana, чтобы выполнить аутентифицированное сканирование.

> **Примечание**: Пользователь должен вручную выполнить аутентификацию и экспортировать сессионный куки/заголовок в файл для использования с katana.

*`-headers`*
----

Опция для добавления пользовательского заголовка или куки в запрос.
> Синтаксис [заголовков](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2) в спецификации HTTP

Вот пример добавления куки в запрос:```
katana -u https://tesla.com -H 'Cookie: usrsess=AmljNrESo'

Также можно передавать заголовки или куки в виде файла. Например:``` $ cat cookie.txt

Cookie: PHPSESSIONID=XXXXXXXXX X-API-KEY: XXXXX TOKEN=XX

root@kitploit:~
Пожалуйста, предоставьте содержимое Markdown для перевода.```
katana -u https://tesla.com -H cookie.txt

При необходимости есть больше опций для настройки, вот все опции CLI, связанные с конфигурацией -```console katana -h config

Flags: CONFIGURATION: -r, -resolvers string[] list of custom resolver (file or comma separated) -d, -depth int maximum depth to crawl (default 3) -jc, -js-crawl enable endpoint parsing / crawling in javascript file -ct, -crawl-duration int maximum duration to crawl the target for -kf, -known-files string enable crawling of known files (all,robotstxt,sitemapxml) -mrs, -max-response-size int maximum response size to read (default 9223372036854775807) -timeout int time to wait for request in seconds (default 10) -aff, -automatic-form-fill enable automatic form filling (experimental) -fx, -form-extraction enable extraction of form, input, textarea & select elements -retry int number of times to retry the request (default 1) -proxy string http/socks5 proxy to use -H, -headers string[] custom header/cookie to include in request -config string path to the katana configuration file -fc, -form-config string path to custom form configuration file -flc, -field-config string path to custom field configuration file -s, -strategy string Visit strategy (depth-first, breadth-first) (default "depth-first") -iqp, -ignore-query-params Ignore crawling same path with different query-param values -fsu, -filter-similar filter crawling of similar looking URLs (e.g., /users/123 and /users/456) -fst, -filter-similar-threshold int number of distinct values before a path position is treated as parameter (default 10) -mdp, -max-domain-pages int maximum number of pages to crawl per domain (default unlimited)

root@kitploit:~
### Подключение к активному сеансу браузера

Katana также может подключаться к активному сеансу браузера, в котором пользователь уже вошел в систему и прошёл аутентификацию, и использовать его для сканирования. Единственное требование для этого — запустить браузер с включённой удалённой отладкой.

Вот пример запуска браузера Chrome с включённой удалённой отладкой и его использования с katana -

**шаг 1) Сначала определите путь к исполняемому файлу chrome**

| Операционная система | Расположение исполняемого файла Chromium | Расположение исполняемого файла Google Chrome |
|----------------------|------------------------------------------|-----------------------------------------------|
| Windows (64-битная) | `C:\Program Files (x86)\Google\Chromium\Application\chrome.exe` | `C:\Program Files (x86)\Google\Chrome\Application\chrome.exe` |
| Windows (32-битная) | `C:\Program Files\Google\Chromium\Application\chrome.exe` | `C:\Program Files\Google\Chrome\Application\chrome.exe` |
| macOS | `/Applications/Chromium.app/Contents/MacOS/Chromium` | `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome` |
| Linux | `/usr/bin/chromium` | `/usr/bin/google-chrome` |

**шаг 2) Запустите chrome с включённой удалённой отладкой — он вернёт websocket-URL. Например, на macOS вы можете запустить chrome с включённой удалённой отладкой с помощью следующей команды** -

chrome --remote-debugging-port=9222

После запуска chrome вы можете использовать этот websocket-URL с katana с помощью опции `-headless` или `-active`:

katana -headless -proxy http://127.0.0.1:9222```console
$ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222


DevTools listening on ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6

Теперь войдите на сайт, который хотите просканировать, и оставьте браузер открытым.

шаг 3) Теперь используйте URL веб-сокета с katana, чтобы подключиться к активному сеансу браузера и просканировать сайт```console katana -headless -u https://tesla.com -cwu ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6 -no-incognito

root@kitploit:~
> **Примечание**: вы можете использовать опцию `-cdd`, чтобы указать пользовательский каталог данных Chrome для хранения данных браузера и куки-файлов, но это не сохраняет данные сессии, если куки-файл установлен только на `Session` или истекает через определенное время.


## Фильтры

*`-field`*
----

> [!WARNING]
> Устарело: используйте [**`-output-template`**](#-output-template) вместо этого. Флаг field по-прежнему поддерживается для обратной совместимости.

Katana поставляется со встроенными полями, которые можно использовать для фильтрации вывода по желаемой информации. Опцию `-f` можно использовать для указания любого из доступных полей.```
   -f, -field string  field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,key,value,kv,dir,udir)

Вот таблица с примерами каждого поля и ожидаемый вывод при использовании:

Вот пример использования опции поля для отображения только всех URL с параметром запроса:``` katana -u https://tesla.com -f qurl -silent

https://shop.tesla.com/en_au?redirect=no https://shop.tesla.com/en_nz?redirect=no https://shop.tesla.com/product/men_s-raven-lightweight-zip-up-bomber-jacket?sku=1740250-00-A https://shop.tesla.com/product/tesla-shop-gift-card?sku=1767247-00-A https://shop.tesla.com/product/men_s-chill-crew-neck-sweatshirt?sku=1740176-00-A https://www.tesla.com/about?redirect=no https://www.tesla.com/about/legal?redirect=no https://www.tesla.com/findus/list?redirect=no

root@kitploit:~
### Пользовательские поля

Вы можете создавать пользовательские поля для извлечения и хранения определённой информации из ответов страниц с помощью правил регулярных выражений. Эти пользовательские поля определяются с помощью YAML-файла конфигурации и загружаются из расположения по умолчанию `$HOME/.config/katana/field-config.yaml`. В качестве альтернативы вы можете использовать параметр `-flc` для загрузки файла конфигурации пользовательских полей из другого расположения.
Вот пример пользовательского поля.```yaml
- name: email
  type: regex
  regex:
  - '([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)'
  - '([a-zA-Z0-9+._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)'

- name: phone
  type: regex
  regex:
  - '\d{3}-\d{8}|\d{4}-\d{7}'

При определении пользовательских полей поддерживаются следующие атрибуты:

  • name (обязательный)

Значение атрибута name используется как значение опции -field в cli.

  • type (обязательный)

Тип пользовательского атрибута, в настоящее время поддерживается - regex

  • part (необязательный)

Часть ответа, из которой извлекается информация. Значение по умолчанию — response, которое включает как заголовок, так и тело. Другие возможные значения: header и body.

  • group (необязательный)

Вы можете использовать этот атрибут для выбора конкретной сопоставленной группы в регулярном выражении, например: group: 1

Запуск katana с пользовательским полем:```console

katana -u https://tesla.com -f email,phone

root@kitploit:~
*`-store-field`*
---

В дополнение к опции `field`, которая позволяет фильтровать вывод во время выполнения, существует опция `-sf, -store-fields`, которая работает точно так же, как опция field, за исключением того, что вместо фильтрации она сохраняет всю информацию на диск в каталог `katana_field`, отсортированную по URL-адресу цели. Используйте `-sfd` или `-store-field-dir`, чтобы указать другое местоположение для хранения данных.```
katana -u https://tesla.com -sf key,fqdn,qurl -silent

I notice that no content was provided after "INPUT:" in your message. I cannot translate something that isn't there. Please supply the actual Markdown content you need translated.```bash $ ls katana_field/

https_www.tesla.com_fqdn.txt https_www.tesla.com_key.txt https_www.tesla.com_qurl.txt

root@kitploit:~
Опция `-store-field` может быть полезна для сбора информации с целью создания целенаправленного списка слов для различных целей, включая, но не ограничиваясь:

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

### Katana Filters

*`-extension-match`*
---

Результаты сканирования могут быть легко отфильтрованы по конкретному расширению с помощью опции `-em`, чтобы отображать только вывод, содержащий заданное расширение.```
katana -u https://tesla.com -silent -em js,jsp,json

Используйте специальное значение none, чтобы также включать URL-адреса без расширения файла в вывод:``` katana -u https://tesla.com -silent -em js,jsp,json,none

root@kitploit:~
*`-extension-filter`*
---

Результаты сканирования можно легко отфильтровать по конкретному расширению с помощью опции `-ef`, которая обеспечивает удаление всех URL, содержащих заданное расширение.```
katana -u https://tesla.com -silent -ef css,txt,md

-no-default-ext-filter

Katana по умолчанию фильтрует несколько расширений. Это можно отключить с помощью опции -ndef.``` katana -u https://tesla.com -silent -ndef

root@kitploit:~
*`-match-regex`*
---
Флаг `-match-regex` или `-mr` позволяет фильтровать выходные URL-адреса с помощью регулярных выражений. При использовании этого флага в выводе будут напечатаны только те URL-адреса, которые соответствуют указанному регулярному выражению.```
katana -u https://tesla.com -mr 'https://shop\.tesla\.com/*' -silent

-filter-regex

Флаг -filter-regex или -fr позволяет фильтровать выходные URL-адреса с помощью регулярных выражений. При использовании этого флага будут пропущены URL-адреса, которые соответствуют указанному регулярному выражению.``` katana -u https://tesla.com -fr 'https://www\.tesla\.com/*' -silent

root@kitploit:~
### Расширенная фильтрация

Katana поддерживает выражения на основе DSL для расширенных возможностей сопоставления и фильтрации:

- Чтобы сопоставить конечные точки с кодом состояния 200:```shell
katana -u https://www.hackerone.com -mdc 'status_code == 200'
  • Чтобы сопоставить конечные точки, которые содержат "default" и имеют код состояния, отличный от 403:```shell katana -u https://www.hackerone.com -mdc 'contains(endpoint, "default") && status_code != 403'
root@kitploit:~
- Для сопоставления конечных точек с технологиями PHP:```shell
katana -u https://www.hackerone.com -mdc 'contains(to_lower(technologies), "php")'
  • Чтобы отфильтровать конечные точки, работающие на Cloudflare:```shell katana -u https://www.hackerone.com -fdc 'contains(to_lower(technologies), "cloudflare")'
root@kitploit:~
Функции DSL могут быть применены к любым ключам в выводе jsonl. Для получения дополнительной информации о доступных функциях DSL посетите [dsl project](https://github.com/projectdiscovery/dsl).

Вот дополнительные параметры фильтрации -```console
katana -h filter

Flags:
FILTER:
   -mr, -match-regex string[]             regex or list of regex to match on output url (cli, file)
   -fr, -filter-regex string[]            regex or list of regex to filter on output url (cli, file)
   -f, -field string                      field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir)
   -sf, -store-field string               field to store in per-host output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir)
   -em, -extension-match string[]         match output for given extension (eg, -em php,html,js,none)
   -ef, -extension-filter string[]        filter output for given extension (eg, -ef png,css)
   -ndef, -no-default-ext-filter bool     remove default extensions from the filter list
   -mdc, -match-condition string          match response with dsl based condition
   -fdc, -filter-condition string         filter response with dsl based condition
   -duf, -disable-unique-filter           disable duplicate content filtering

Ограничение скорости

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

-delay

Опция для введения задержки в секундах между каждым новым запросом, который katana выполняет во время сканирования. По умолчанию отключена.``` katana -u https://tesla.com -delay 20

root@kitploit:~
*`-concurrency`*
-----
опция для управления количеством URL-адресов на цель, загружаемых одновременно.```
katana -u https://tesla.com -c 20

-parallelism

опция для указания количества целей, обрабатываемых одновременно из входного списка.``` katana -u https://tesla.com -p 20

root@kitploit:~
*`-rate-limit`*
-----
Максимальное количество запросов в секунду, применяется глобально ко всем хостам.```
katana -u https://tesla.com -rl 100

-rate-limit-minute

Максимальное количество запросов в минуту, применяется глобально ко всем хостам.``` katana -u https://tesla.com -rlm 500

root@kitploit:~
*`-host-rate-limit`*
-----
Максимальное количество запросов в секунду на хост. Каждый хост получает свой собственный bucket лимита скорости, поэтому медленный хост не будет замедлять быстрые. Заменяет глобальный лимит скорости при установке. Katana также автоматически снижает скорость с экспоненциальной задержкой и джиттером, когда хост возвращает 429 или 503.```console
katana -u https://tesla.com -hrl 50

-host-rate-limit-minute

Максимальное количество запросов в минуту на хост.```console katana -u https://tesla.com -hrlm 200

root@kitploit:~
Вот все длинные/короткие опции CLI для контроля ограничения скорости -```console
katana -h rate-limit

Flags:
RATE-LIMIT:
   -c, -concurrency int          number of concurrent fetchers to use (default 10)
   -p, -parallelism int          number of concurrent inputs to process (default 10)
   -rd, -delay int               request delay between each request in seconds
   -rl, -rate-limit int          maximum requests to send per second (default 150)
   -rlm, -rate-limit-minute int  maximum number of requests to send per minute
   -hrl, -host-rate-limit int    maximum requests to send per second per host
   -hrlm, -host-rate-limit-minute int  maximum number of requests to send per minute per host

Вывод

Katana поддерживает вывод в файл как в формате обычного текста, так и в JSON, который включает дополнительную информацию, такую как название source, tag и attribute для соотнесения обнаруженных конечных точек.

-output

По умолчанию katana выводит сканированные конечные точки в формате обычного текста. Результаты могут быть записаны в файл с помощью опции -output.```console katana -u https://example.com -no-scope -output example_endpoints.txt

root@kitploit:~
*`-output-template`*
---

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

Пример использования опции `-output-template`:```sh
katana -u https://example.com -output-template '{{email}} - {{url}}'

В этом примере email представляет собой настраиваемое поле, которое извлекает и отображает адреса электронной почты, найденные в исходном url.

[!NOTE] Если указанное поле не существует или не содержит значения, оно будет просто опущено в выводе.

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

-jsonl ---```console katana -u https://example.com -jsonl | jq .

root@kitploit:~
Главная [Руководства](#guides) [Инструменты](#tools) [Коллекция](#collection)

## Руководства

- [Случай деаутентификации Wi-Fi](#wi-fi-deauth-case) - Узнайте, как работает атака деаутентификации Wi-Fi
- [DNS-спуфинг](#dns-spoofing) - Настройте атаку подмены DNS за считанные минуты
- [Сбор учётных данных](#credential-harvesting) - Ознакомьтесь с различными методами сбора учётных данных
- [Создание перехватывающего портала](#create-captive-portal) - Настройте перехватывающий портал с помощью одной команды```json
{
  "timestamp": "2023-03-20T16:23:58.027559+05:30",
  "request": {
    "method": "GET",
    "endpoint": "https://example.com",
    "raw": "GET / HTTP/1.1\r\nHost: example.com\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36\r\nAccept-Encoding: gzip\r\n\r\n"
  },
  "response": {
    "status_code": 200,
    "headers": {
      "accept_ranges": "bytes",
      "expires": "Mon, 27 Mar 2023 10:53:58 GMT",
      "last_modified": "Thu, 17 Oct 2019 07:18:26 GMT",
      "content_type": "text/html; charset=UTF-8",
      "server": "ECS (dcb/7EA3)",
      "vary": "Accept-Encoding",
      "etag": "\"3147526947\"",
      "cache_control": "max-age=604800",
      "x_cache": "HIT",
      "date": "Mon, 20 Mar 2023 10:53:58 GMT",
      "age": "331239"
    },
    "body": "<!doctype html>\n<html>\n<head>\n    <title>Example Domain</title>\n\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <style type=\"text/css\">\n    body {\n        background-color: #f0f0f2;\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n        padding: 2em;\n        background-color: #fdfdff;\n        border-radius: 0.5em;\n        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (max-width: 700px) {\n        div {\n            margin: 0 auto;\n            width: auto;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1>Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href=\"https://www.iana.org/domains/example\">More information...</a></p>\n</div>\n</body>\n</html>\n",
    "technologies": [
      "Azure",
      "Amazon ECS",
      "Amazon Web Services",
      "Docker",
      "Azure CDN"
    ],
    "raw": "HTTP/1.1 200 OK\r\nContent-Length: 1256\r\nAccept-Ranges: bytes\r\nAge: 331239\r\nCache-Control: max-age=604800\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Mon, 20 Mar 2023 10:53:58 GMT\r\nEtag: \"3147526947\"\r\nExpires: Mon, 27 Mar 2023 10:53:58 GMT\r\nLast-Modified: Thu, 17 Oct 2019 07:18:26 GMT\r\nServer: ECS (dcb/7EA3)\r\nVary: Accept-Encoding\r\nX-Cache: HIT\r\n\r\n<!doctype html>\n<html>\n<head>\n    <title>Example Domain</title>\n\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <style type=\"text/css\">\n    body {\n        background-color: #f0f0f2;\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n        padding: 2em;\n        background-color: #fdfdff;\n        border-radius: 0.5em;\n        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (max-width: 700px) {\n        div {\n            margin: 0 auto;\n            width: auto;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1>Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href=\"https://www.iana.org/domains/example\">More information...</a></p>\n</div>\n</body>\n</html>\n"
  }
}

-store-response

Опция -store-response позволяет записывать все запросы и ответы обойденных конечных точек в текстовый файл. При использовании этой опции текстовые файлы, содержащие запрос и ответ, будут записаны в каталог katana_response. Если вы хотите указать свой каталог, можете использовать опцию -store-response-dir.```console katana -u https://example.com -no-scope -store-response

root@kitploit:~
- **HTTP Request Smuggling**: Обнаружение уязвимостей, связанных с контрабандой HTTP-запросов.
- **SSRF**: Тестирование на уязвимости подделки серверных запросов (SSRF).
- **Open Redirect**: Выявление уязвимостей открытого перенаправления.
- **SSTI**: Обнаружение уязвимостей внедрения шаблонов на стороне сервера.
- **Command Injection**: Тестирование на уязвимости внедрения команд.
- **SQL Injection**: Обнаружение уязвимостей SQL-инъекций.
- **NoSQL Injection**: Тестирование на уязвимости NoSQL-инъекций.
- **LDAP Injection**: Обнаружение уязвимостей LDAP-инъекций.
- **XPath Injection**: Тестирование на уязвимости XPath-инъекций.
- **Header Injection**: Обнаружение уязвимостей внедрения заголовков.```bash
$ cat katana_response/index.txt

katana_response/example.com/327c3fda87ce286848a574982ddd0b7c7487f816.txt https://example.com (200 OK)
katana_response/www.iana.org/bfc096e6dd93b993ca8918bf4c08fdc707a70723.txt http://www.iana.org/domains/reserved (200 OK)

Примечание:

-store-response опция не поддерживается в режиме -headless.

-list-output-fields

Флаг -list-output-fields или -lof отображает все доступные поля, которые можно использовать в формате вывода JSONL. Это полезно для понимания, какие данные доступны при использовании пользовательских шаблонов вывода или при исключении определенных полей.```console katana -lof

root@kitploit:~
*`-exclude-output-fields`*
----

Флаг `-exclude-output-fields` или `-eof` позволяет исключить определённые поля из вывода JSONL. Это полезно для уменьшения размера вывода или сосредоточения на определённых данных путём удаления ненужных полей.```console
katana -u https://example.com -jsonl -eof raw,body

Вот дополнительные параметры командной строки, относящиеся к выводу -```console katana -h output

OUTPUT: -o, -output string file to write output to -sr, -store-response store http requests/responses -srd, -store-response-dir string store http requests/responses to custom directory -lof, -list-output-fields list available fields for jsonl output format -eof, -exclude-output-fields exclude fields from jsonl output -j, -json write output in JSON Lines format -nc, -no-color disable output content coloring (ANSI escape codes) -silent display output only -v, -verbose display verbose output -version display project version

root@kitploit:~
## Katana как библиотека
`katana` можно использовать как библиотеку, создав экземпляр структуры `Option` и заполнив его теми же опциями, которые указываются через CLI. С помощью опций вы можете создать `crawlerOptions` и, соответственно, стандартный или гибридный `crawler`.
Метод `crawler.Crawl` должен быть вызван для обхода входных данных.```go
package main

import (
	"math"

	"github.com/projectdiscovery/gologger"
	"github.com/projectdiscovery/katana/pkg/engine/standard"
	"github.com/projectdiscovery/katana/pkg/output"
	"github.com/projectdiscovery/katana/pkg/types"
)

func main() {
	options := &types.Options{
		MaxDepth:     3,             // Maximum depth to crawl
		FieldScope:   "rdn",         // Crawling Scope Field
		BodyReadSize: math.MaxInt,   // Maximum response size to read
		Timeout:      10,            // Timeout is the time to wait for request in seconds
		Concurrency:  10,            // Concurrency is the number of concurrent crawling goroutines
		Parallelism:  10,            // Parallelism is the number of urls processing goroutines
		Delay:        0,             // Delay is the delay between each crawl requests in seconds
		RateLimit:    150,           // Maximum requests to send per second
		Strategy:     "depth-first", // Visit strategy (depth-first, breadth-first)
		OnResult: func(result output.Result) { // Callback function to execute for result
			gologger.Info().Msg(result.Request.URL)
		},
	}
	crawlerOptions, err := types.NewCrawlerOptions(options)
	if err != nil {
		gologger.Fatal().Msg(err.Error())
	}
	defer crawlerOptions.Close()
	crawler, err := standard.New(crawlerOptions)
	if err != nil {
		gologger.Fatal().Msg(err.Error())
	}
	defer crawler.Close()
	var input = "https://www.hackerone.com"
	err = crawler.Crawl(input)
	if err != nil {
		gologger.Warning().Msgf("Could not crawl %s: %s", input, err.Error())
	}
}

Сообщение об ошибках и запросы функций

Для поддержки отслеживания проблем и повышения эффективности сортировки:

Все сообщения начинаются как GitHub Discussions

  • Сообщения об ошибках → Начать обсуждение Q&A
  • Запросы функций → Начать обсуждение идей
  • Вопросы → Начать обсуждение Q&A

Почему сначала обсуждения?

  • Сообщество может помочь с быстрыми вопросами и устранением неполадок
  • Лучшая сортировка - подтвержденные ошибки/функции становятся отслеживаемыми проблемами
  • Более чистый трекер проблем - сосредоточение только на действенных пунктах

Мейнтейнеры будут преобразовывать обсуждения в проблемы по мере необходимости после соответствующего рассмотрения.


katana создан с ❤️ командой projectdiscovery и распространяется по лицензии MIT.

Присоединиться к Discord

Скачать инструмент
https://www.youtube.com/manifest.webmanifest
https://www.youtube.com/s/desktop/4965577f/cssbin/www-main-desktop-watch-page-skeleton.css
https://www.youtube.com/s/desktop/4965577f/jsbin/web-animations-next-lite.min.vflset/web-animations-next-lite.min.js
https://www.youtube.com/s/desktop/4965577f/jsbin/custom-elements-es5-adapter.vflset/custom-elements-es5-adapter.js
https://www.youtube.com/s/desktop/4965577f/jsbin/webcomponents-sd.vflset/webcomponents-sd.js
https://www.youtube.com/s/desktop/4965577f/jsbin/intersection-observer.min.vflset/intersection-observer.min.js
https://www.youtube.com/s/desktop/4965577f/jsbin/scheduler.vflset/scheduler.js
https://www.youtube.com/s/desktop/4965577f/jsbin/www-i18n-constants-en_GB.vflset/www-i18n-constants.js
https://www.youtube.com/s/desktop/4965577f/jsbin/www-tampering.vflset/www-tampering.js
https://www.youtube.com/s/desktop/4965577f/jsbin/spf.vflset/spf.js
https://www.youtube.com/s/desktop/4965577f/jsbin/network.vflset/network.js
https://www.youtube.com/howyoutubeworks/
https://www.youtube.com/trends/
https://www.youtube.com/jobs/
https://www.youtube.com/kids/
СтратегияОписание
heuristic(по умолчанию) Интеллектуальное ожидание, адаптирующееся к поведению страницы — ожидание загрузки, бездействия сети и стабильности DOM
loadОжидает только события загрузки браузера
domcontentloadedОжидает события DOMContentLoaded плюс дополнительное время (настраивается через -dwt) для рендеринга JavaScript
networkidleОжидает прекращения сетевой активности
noneБез ожидания — возвращается сразу после начала навигации
katana -u https://tesla.com -headless -pls domcontentloaded
ПолеОписаниеПример
urlКонечная точка URLhttps://admin.projectdiscovery.io/admin/login?user=admin&password=admin
qurlURL с параметрами запросаhttps://admin.projectdiscovery.io/admin/login.php?user=admin&password=admin
qpathПуть с параметрами запроса/login?user=admin&password=admin
pathПуть URLhttps://admin.projectdiscovery.io/admin/login
fqdnПолное доменное имяadmin.projectdiscovery.io
rdnКорневое доменное имяprojectdiscovery.io
rurlКорневой URLhttps://admin.projectdiscovery.io
ufileURL с файломhttps://admin.projectdiscovery.io/login.js
fileИмя файла в URLlogin.php
keyКлючи параметров в URLuser,password
valueЗначения параметров в URLadmin,admin
kvКлючи=Значения в URLuser=admin&password=admin
dirИмя каталога URL/admin/
udirURL с каталогомhttps://admin.projectdiscovery.io/admin/