
jshunter é uma ferramenta de linha de comando projetada para analisar arquivos JavaScript e extrair endpoints. Esta ferramenta é especializada em identificar dados sensíveis, como endpoints de API e potenciais vulnerabilidades de segurança, tornando-a um recurso essencial para caçadores de bug bounty e pesquisadores de segurança.
Ferramenta Profissional de Análise de Segurança em JavaScript
Descoberta completa de endpoints, detecção de dados sensíveis e análise avançada de código para profissionais de segurança
JSHunter é uma ferramenta de linha de comando abrangente para análise de segurança em JavaScript e descoberta de endpoints. Desenvolvida para profissionais de segurança, testadores de penetração e desenvolvedores, oferece capacidades de análise de nível empresarial com algoritmos de detecção de alta precisão e recursos de relatórios profissionais.
https://github.com/user-attachments/assets/5a5f60fa-f8dc-4aac-bd06-2e93779f9af4
JSHunter em ação — uma captura real do terminal da CLI (todo segredo exibido é dado de teste fictício)
Precisão de nível empresarial com algoritmos avançados de análise
O JSHunter analisa o JavaScript que escaneia em vez de apenas aplicar correspondência de padrões. Um scanner ECMAScript de passagem única classifica cada byte da resposta como literal de string, literal de template, comentário, literal de expressão regular ou código, e as regras de detecção são avaliadas com base nessa classificação.
Isso importa porque uma regex não tem ideia do que correspondeu. Os mesmos quarenta caracteres base64 significam "credencial" dentro de um literal de string, "hash de chunk" dentro de um identificador minificado, e absolutamente nada quando atravessam a emenda entre dois tokens adjacentes. Saber qual é o caso substitui uma pilha de heurísticas de proximidade por uma resposta estrutural:
key, o motor recupera o identificador ou a chave de propriedade à qual o valor está de fato vinculado — const stripeSecret = "..." lê-se de forma muito diferente de {contentHash: "..."}, e uma regra baseada apenas em forma agora exige essa vinculação.role, SIDs do Twilio — são classificados em vez de reportados como vazamentos. --include-public os reporta mesmo assim.Toda rejeição é condicional ao corpo ser confiavelmente JavaScript ou JSON. Em qualquer outra coisa — um arquivo .env, texto corrido, HTML bruto — o motor contribui com evidências mas nunca suprime, de modo que uma entrada mal classificada jamais pode ocultar um segredo. --no-structural desativa toda a camada e restaura o comportamento da v0.7.
Os achados carregam o raciocínio como um objeto evidence em --json, --ndjson e no property bag do SARIF:```json
"exposure": "secret",
"evidence": {
"region": "string-literal",
"role": "assignment",
"bound_to": "awsAccessKeyId",
"shape": "opaque-token",
"charset": "alphanumeric",
"signals": [
{"name": "in-literal", "delta": 0.04, "detail": "value is a complete string-literal"},
{"name": "credential-binding", "delta": 0.12, "detail": "bound to 'awsAccessKeyId'"}
]
}
`--stats` informa o que cada estágio descartou, para que o pipeline permaneça auditável.
### Grafo de Chunks e Descoberta de Rotas
Uma aplicação moderna entrega um bundle de entrada e várias centenas de chunks
carregados sob demanda cujas URLs são montadas em tempo de execução a partir de um manifesto que o bundler embute. Nada aponta para eles, então um crawler nunca os vê. `-G` recupera esse manifesto
e imprime a lista completa de assets e a tabela de rotas do cliente:```console
$ jshunter -u https://target.example/_next/static/chunks/main-a1b2c3.js -G
[CHUNKS] https://target.example/...: next runtime, 214 chunks, 37 routes
[CHUNK] https://target.example/... https://target.example/_next/static/chunks/settings.11aa22bb33cc.js
[ROUTE] https://target.example/... /admin/users/:id
Runtimes suportados: webpack 4 e 5 (__webpack_require__.u, miniCssF,
jsonpScriptSrc), manifestos de build do Next.js, Vite e Rollup (__vite__mapDeps,
__vitePreload), import() dinâmico simples, e tabelas de rotas do React Router,
Vue Router e Angular. A saída é separada por tabulações e deduplicada, pelo que pode ser encaminhada
diretamente como lista de entrada de uma análise subsequente:```bash
jshunter -u https://target.example/main.js -G -q | awk -F'\t' '/^[CHUNK]/{print $3}' > chunks.txt
jshunter -l chunks.txt -s -j > findings.json
### Suíte Profissional de HTTP e Rede
<details>
<summary><strong>Configuração de Rede de Nível Empresarial</strong></summary>