
jshunter è uno strumento da riga di comando progettato per analizzare file JavaScript ed estrarre endpoint. Questo strumento è specializzato nell'identificazione di dati sensibili, come endpoint API e potenziali vulnerabilità di sicurezza, rendendolo una risorsa essenziale per cacciatori di bug e ricercatori di sicurezza.
Strumento professionale per l'analisi della sicurezza JavaScript
Scoperta completa degli endpoint, rilevamento di dati sensibili e analisi avanzata del codice per professionisti della sicurezza
JSHunter è uno strumento completo da riga di comando per l'analisi della sicurezza JavaScript e la scoperta degli endpoint. Progettato per professionisti della sicurezza, penetration tester e sviluppatori, offre capacità di analisi di livello enterprise con algoritmi di rilevamento ad alta precisione e funzionalità di reporting professionale.
https://github.com/user-attachments/assets/5a5f60fa-f8dc-4aac-bd06-2e93779f9af4
JSHunter in azione — una cattura reale del terminale della CLI (ogni segreto mostrato è un dato di test fittizio)
Precisione di livello enterprise con algoritmi di analisi avanzati
JSHunter analizza il JavaScript che scansiona invece di limitarsi a confrontarlo con pattern. Uno scanner ECMAScript a passata singola classifica ogni byte della risposta come stringa letterale, template literal, commento, letterale di espressione regolare o codice, e le regole di rilevamento vengono valutate in base a tale classificazione.
Questo è importante perché una regex non ha idea di cosa abbia trovato. Gli stessi quaranta caratteri base64 significano "credenziale" all'interno di una stringa letterale, "hash di chunk" all'interno di un identificatore minificato, e nulla quando si trovano a cavallo della giunzione tra due token adiacenti. Sapere quale dei tre casi sia sostituisce una serie di euristiche di prossimità con una risposta strutturale:
key, il motore recupera l'identificatore o la chiave di proprietà a cui il valore è
effettivamente associato — const stripeSecret = "..." si legge in modo molto diverso da
{contentHash: "..."}, e una regola basata solo sulla forma ora richiede quel binding.role, SID Twilio — vengono classificati anziché segnalati come leak.
--include-public li segnala comunque.Ogni rifiuto è condizionato al fatto che il corpo sia con certezza JavaScript o JSON.
Su qualsiasi altra cosa — un file .env, prosa, HTML grezzo — il motore fornisce
evidenza ma non sopprime mai, così un input classificato erroneamente non può mai nascondere un segreto.
--no-structural disattiva l'intero livello e ripristina il comportamento della v0.7.
I risultati riportano il ragionamento come oggetto evidence in --json, --ndjson e
nel property bag 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` riporta cosa ha scartato ogni fase, così la pipeline resta verificabile.
### Grafo dei Chunk e Scoperta delle Rotte
Un'applicazione moderna distribuisce un bundle di ingresso e diverse centinaia di
chunk caricati in modo lazy i cui URL vengono assemblati a runtime a partire da un manifest che il bundler incorpora inline.
Nulla punta ad essi, quindi un crawler non li vede mai. `-G` recupera quel manifest
e stampa la lista completa degli asset e la tabella delle rotte client:```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
Runtime supportati: webpack 4 e 5 (__webpack_require__.u, miniCssF,
jsonpScriptSrc), manifest di build di Next.js, Vite e Rollup (__vite__mapDeps,
__vitePreload), import() dinamico semplice, e tabelle di route di React Router,
Vue Router e Angular. L'output è separato da tabulazioni e deduplicato, quindi può essere
reindirizzato direttamente come lista di input di una scansione successiva:```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
### Suite Professionale per HTTP e Networking
<details>
<summary><strong>Configurazione di Rete di Livello Enterprise</strong></summary>