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