katana: crawling e descoberta de endpoints para pentests web
katana · MIT
O katana faz crawl de uma aplicação web e retorna as URLs, endpoints e parâmetros que encontra. Diferente das fontes passivas de URL (gau, waybackurls), ele vê a aplicação como ela existe agora, incluindo rotas que nunca foram arquivadas — e, em modo headless, rotas que só existem depois que o JavaScript roda.
Instalação
go install -v github.com/projectdiscovery/katana/cmd/katana@latest O modo headless precisa de um Chromium disponível; o katana baixa um no primeiro uso.
Comandos principais
# crawl padrão
katana -u https://example.com -silent
# headless — obrigatório para SPAs
katana -u https://example.com -headless -silent
# profundidade, escopo e parsing de JS
katana -u https://example.com -d 3 -jc -kf all -silent
# mantém dentro do engajamento
katana -u https://example.com -crawl-scope example.com -silent
# JSONL com o detalhe da requisição
katana -u https://example.com -jsonl -o crawl.jsonl -field url,method O -jc parseia arquivos JavaScript em busca de endpoints. O -kf all segue arquivos conhecidos como robots.txt e sitemap.xml. O -d é a profundidade do crawl — 3 costuma bastar; 5 numa app grande vai rodar por muito tempo.
Saída
{"timestamp":"2026-08-29T10:07:00Z","request":{"method":"GET",
"endpoint":"https://example.com/api/v2/users?id=1"},
"response":{"status_code":200}} Onde ele entra no Tandera
O katana aparece em três fluxos e duas fases — a única ferramenta do catálogo agendada tão amplamente. Roda em fingerprint para estabelecer a superfície de URLs, e de novo em enrich para aprofundá-la depois que outras fontes contribuíram.
Sua saída é a entrada de várias etapas de analyze: linkfinder e jxscout mineram o JavaScript que ele recupera, arjun faz fuzzing dos parâmetros que ele achou, e unfurl decompõe o corpus de URLs em hostnames, paths e nomes de parâmetro.
Usando em um pentest
Use headless para qualquer coisa moderna. Um front-end React ou Vue devolve quase nada para um crawler não headless — as rotas só existem depois que o bundle executa. Se o katana retorna 12 URLs para uma aplicação que você vê que é grande, é essa a razão.
Delimite o crawl explicitamente. O -crawl-scope impede que ele vagueie para uma CDN, um provedor de pagamento ou um host de widget de terceiros. Fazer crawl nesses está fora do escopo e, dependendo do alvo, é ilegal.
Faça crawl antes de fazer fuzzing. Os nomes de parâmetro que o katana recupera valem mais que qualquer wordlist genérica, porque são o vocabulário da própria aplicação.
katana -u https://example.com -headless -jc -d 3 -silent
| unfurl -u paths | sort -u > paths.txt