katana: crawling y descubrimiento de endpoints para pentests web

katana · MIT

katana hace crawl de una aplicación web y devuelve las URLs, endpoints y parámetros que encuentra. A diferencia de las fuentes pasivas de URL (gau, waybackurls), ve la aplicación tal como existe ahora, incluyendo rutas que nunca se archivaron — y, en modo headless, rutas que solo existen después de que se ejecuta el JavaScript.

Instalación

go install -v github.com/projectdiscovery/katana/cmd/katana@latest

El modo headless necesita un Chromium disponible; katana descargará uno en el primer uso.

Comandos principales

# crawl estándar
katana -u https://example.com -silent

# headless — obligatorio para SPAs
katana -u https://example.com -headless -silent

# profundidad, alcance y parsing de JS
katana -u https://example.com -d 3 -jc -kf all -silent

# mantenlo dentro del engagement
katana -u https://example.com -crawl-scope example.com -silent

# JSONL con el detalle de la solicitud
katana -u https://example.com -jsonl -o crawl.jsonl -field url,method

-jc parsea archivos JavaScript en busca de endpoints. -kf all sigue archivos conocidos como robots.txt y sitemap.xml. -d es la profundidad del crawl — 3 suele bastar; 5 en una app grande se ejecutará durante mucho tiempo.

Salida

{"timestamp":"2026-08-29T10:07:00Z","request":{"method":"GET",
 "endpoint":"https://example.com/api/v2/users?id=1"},
 "response":{"status_code":200}}

Dónde encaja en Tandera

katana aparece en tres flujos y dos fases — la única herramienta del catálogo agendada tan ampliamente. Se ejecuta en fingerprint para establecer la superficie de URLs, y de nuevo en enrich para profundizarla una vez que otras fuentes han contribuido.

Su salida es la entrada de varias etapas de analyze: linkfinder y jxscout minan el JavaScript que recupera, arjun hace fuzzing de los parámetros que encontró, y unfurl descompone el corpus de URLs en hostnames, paths y nombres de parámetro.

Uso en un pentest

Usa headless para cualquier cosa moderna. Un front-end React o Vue devuelve casi nada a un crawler no headless — las rutas solo existen después de que el bundle se ejecuta. Si katana devuelve 12 URLs para una aplicación que ves que es grande, esa es la razón.

Delimita el crawl explícitamente. -crawl-scope evita que se vaya a una CDN, un proveedor de pagos o un host de widget de terceros. Hacer crawl de esos está fuera de alcance y, según el objetivo, es ilegal.

Haz crawl antes de hacer fuzzing. Los nombres de parámetro que katana recupera valen más que cualquier wordlist genérica, porque son el vocabulario de la propia aplicación.

katana -u https://example.com -headless -jc -d 3 -silent 
  | unfurl -u paths | sort -u > paths.txt
acceso anticipado

Consigue Tandera antes de tu próximo engagement.

Únete a la waitlist para acceso anticipado. Estamos incorporando equipos de pentest por oleadas.

Onboarding prioritario para equipos de pentest.
Línea directa con quienes lo construyen.
Precio de acceso anticipado, asegurado.

Sin spam, sin tarjeta. Cancela cuando quieras.

enespt-br