Kiterunner: content discovery feito para APIs

Kiterunner · AGPL-3.0

O Kiterunner é content discovery projetado para APIs em vez de sites. Brute-forcers genéricos enviam GET /path; APIs reais usam métodos, headers, parâmetros de path e content types específicos. O Kiterunner reproduz templates de requisição derivados de dezenas de milhares de especificações reais de API, então acha rotas que só respondem a, digamos, POST com corpo JSON.

Instalação

# release binário
wget https://github.com/assetnote/kiterunner/releases/latest/download/kiterunner_linux_amd64.tar.gz
tar xf kiterunner_linux_amd64.tar.gz && sudo mv kr /usr/local/bin/

# wordlists (arquivos kite routes-* da Assetnote)
wget https://wordlists-cdn.assetnote.io/data/kiterunner/routes-large.kite

Comandos principais

# scan com uma wordlist kite
kr scan https://api.example.com -w routes-large.kite

# uma lista de hosts
kr scan hosts.txt -w routes-large.kite -o json -O results.json

# carrega um header de auth
kr scan https://api.example.com -w routes-large.kite 
  -H "Authorization: Bearer TOKEN"

# ajusta concorrência e taxa
kr scan https://api.example.com -w routes-large.kite 
  --max-connection-per-host 5 -x 10

Saída

{"method":"POST","path":"/api/v2/users/import","status":401,"content_length":52,
 "host":"https://api.example.com"}

Um 401 aqui é um sinal, não uma falha: a rota existe e exige auth.

Onde ele entra no Tandera

O Kiterunner roda na fase de analyze do recon_api. Seus resultados alimentam a síntese de shadow-endpoints do fluxo — rotas que ele descobre são comparadas contra a especificação documentada da API, e qualquer coisa presente mas não documentada é revelada como superfície oculta.

Usando em um pentest

401 e 403 são os resultados interessantes, não 200. Eles significam que o endpoint existe e está protegido. Um endpoint não documentado que exige auth é exatamente onde a autorização quebrada no nível de objeto tende a viver — teste com e sem credenciais.

Combine o método, ou você não acha nada. A razão de brute-forcers genéricos perderem rotas de API é que só enviam GET. A consciência de método do Kiterunner é o ponto; não recorra a uma wordlist só de GET contra uma API.

Faça diff contra a spec. Se o cliente forneceu um documento OpenAPI, a lacuna entre o que ele documenta e o que o Kiterunner acha é a shadow API — não documentada, e geralmente menos testada.

Limite a taxa contra produção. As listas de rotas são grandes. Limite as conexões e coordene a janela com o cliente.

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