mirror of
https://github.com/CyberSecurityUP/NeuroSploit.git
synced 2026-08-25 19:02:43 +02:00
Full frontend rewrite following a deliberate visual direction (dense security-operations console — borders over shadows, two radii, one accent, no gradients/glassmorphism) and fixing real bugs found in review: - EventSource on the exploit stream never called es.close() on 'done', so the browser silently reconnected and re-streamed the whole job (duplicate log lines/findings). Fixed. - Sidebar 'running' step indicator and openRun() matched ANY running run instead of the one belonging to the current job (by runId). Fixed. New: - 5-step engagement wizard (Asset -> Scope & Auth -> Leads -> Model & Run -> Review) replacing the single flat board — inspired by the Discovery/Plan/Exploit/Remediate stage model both a.security and terra.security use publicly. - Model is now a real dropdown sourced from /api/providers (mirrors harness::models::providers()), with an API-key vs. subscription toggle that disables subscription for API-only providers. - One Auth & Keys menu: target auth header + named roles (IDOR/BOLA/BFLA multi-identity testing) materialize into an ephemeral creds.yaml passed via --creds; per-provider API keys live in server memory only (never on disk) and are merged into every spawned child's env. - Generative Attack Path Chaining: findings rendered as kill-chain columns (recon -> initial-access -> ... -> impact) with chains_from resolved to parent titles, live in the run view and static in run detail. - Findings are now a proper table (severity/title/endpoint/CWE/agent/ confidence) instead of stacked cards. - Explicit light/dark theme toggle persisted in localStorage, defaulting to light (previously light only won when the OS wasn't in dark mode). - All UI strings in English. Backend additions: GET /api/providers, GET/POST/DELETE /api/keys, ephemeral creds.yaml generation for auth/roles, env override merged into every exploit-job and REPL child spawn. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0129WdYHccPsH27k5GGuwijd
42 lines
2.0 KiB
Markdown
42 lines
2.0 KiB
Markdown
# NeuroSploit v4.0.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 REPL — 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 Exploitation` spawns 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.yaml` path override.
|
|
- **Generative Attack Path Chaining** — findings are grouped into kill-chain columns
|
|
(recon → initial-access → execution → privesc → lateral → exfil → impact) with chained findings
|
|
linked back to their parent, built live as findings stream in.
|
|
|
|
```bash
|
|
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`](./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 / REPL drawer styling
|
|
│ └── app.js client logic (fetch + EventSource, no framework)
|
|
├── API.md
|
|
└── package.json
|
|
```
|