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