mirror of
https://github.com/CyberSecurityUP/NeuroSploit.git
synced 2026-10-17 21:20:55 +02:00
The REPL decorates every streamed line with a leading glyph (" · ",
" ✗ ", " 🧪 testing "), so the server's anchored regexes for finding_json:
and "exploit <name> via … → N candidate(s)" never matched — findings and
per-agent progress reached the attack graph (built from findings.json) but
never the live Findings tab or the "what's being tested" panel.
Normalize each line (strip the leading decoration) before matching the
machine markers, and relax the anchors accordingly.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
NeuroSploit v4.2.0 — web console
A browser UI for the neurosploit CLI harness: a 5-step engagement wizard (Asset → Scope & Auth
→ Leads → Model & Run → Review), a live structured findings view with a generative attack-path
graph, run history, an Auth & Keys menu, and a real terminal — all driven by spawning the actual
CLI binary, never a reimplementation of harness logic.
- Asset — pick black/white/grey-box, host/infra, or AI/LLM, set the target or repo.
- Scope & Auth — objective, focus, out-of-scope, and a link into the Auth & Keys menu.
- Leads — the categorized agent picker (435 agents auto-classified) + custom leads.
- Model & Run — pick a provider/model from the live catalog, API-key vs. subscription auth mode, votes/chain-depth/recon intensity.
- Review — confirm the plan, then
Start Exploitationspawns the real CLI. - Auth & Keys (one menu, 🔑 in the sidebar) — target auth header + named roles for
IDOR/BOLA/BFLA testing, per-provider API keys (kept in server memory only, never on disk), and
an explicit
creds.yamlpath override. - Attack graph — the run's graph memory (web + internal network): host → service → finding → credential → impact, every edge marked confirmed / needs validation / hypothesis, findings ordered by kill-chain stage. Refreshed live at each graph checkpoint; click a finding to open it. Chains and Dependencies list the same paths as text and as the step-by-step todolist.
- Wire evidence in the finding — the finding modal shows the real request/response pairs the harness measured (baseline vs. attack, the identity pair, matrix probes, the oracle), each tagged with its wire provenance, plus the finding's wire-check summary and any recorded flow on the same endpoint. The proof as bytes, not as the agent's prose.
- Per-finding re-test with history — ⟳ Re-test re-runs one finding's recorded proof through the scope-guarded replay engine and keeps a dated history (reproduced / changed / gone / unverifiable), so a finding drifting to "gone" over time is visible. Nothing is written back to the findings.
- Transcript viewer — the Traces tab renders a chosen agent's transcript split into navigable, collapsible blocks at each tool-call / HTTP-request boundary; search still spans every agent.
- Terminal dock (xterm.js) —
❭_in the sidebar, the topbar button, orCtrl+\`` opens a docked terminal running a realneurosploitREPL session. Its stdout is streamed **unstripped**, so the harness's own colour and box-drawn panels render as they do in a local shell. Line editing (echo, ←/→, history,Tabslash-command completion,Ctrl+C/L/U/A/E`) is local because the child is spawned over a pipe, not a PTY, and therefore never echoes. The target picker in its header switches between a standalone session and the running engagement, so mid-run instructions go to the same process that is doing the testing. - Real REPL underneath run/whitebox/greybox — the wizard scripts an actual interactive
neurosploitsession instead of a one-shot CLI call, so it keeps reading stdin while the engagement streams. The Activity log tab grows a❭prompt box to send/status,/stop,/continue, or a plain-language instruction mid-run.host/aitest/skillsstay one-shot (their onboarding scope picker can't be scripted over piped stdin).
cd neurosploit-rs && cargo build --release # build the CLI once
node web/server.js # → http://localhost:4173
Zero npm dependencies (Node ≥18, built-ins only: http, child_process, events, fs).
API reference: API.md.
Layout
web/
├── server.js backend: static server + agents_md/runs reader + CLI process manager
├── public/
│ ├── index.html SPA shell
│ ├── style.css lead-board / live-run / terminal-dock styling
│ ├── app.js client logic (fetch + EventSource + terminal, no framework)
│ └── vendor/ xterm.js + fit addon (vendored; nothing is fetched at runtime)
├── API.md
└── package.json