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
acesso antecipado

Garanta a Tandera antes do próximo engagement.

Entre na waitlist para acesso antecipado. Estamos integrando times de pentest em ondas.

Onboarding prioritário para times de pentest.
Linha direta com quem está construindo.
Preço de acesso antecipado, garantido.

Sem spam, sem cartão. Cancele quando quiser.

enespt-br