Skip to content

devtint/NUCLEI_CNM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

65 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Nuclei Command Center

Nuclei Command Center

Enterprise-Grade Vulnerability Management Dashboard

Features β€’ Architecture β€’ Installation β€’ Security β€’ Documentation

Next.js TypeScript Auth.js SQLite License


Overview

Nuclei Command Center (NUCLEI_CNM) is a production-ready, security-hardened web interface for orchestrating vulnerability assessments using ProjectDiscovery's Nuclei scanner. Built by security professionals for security professionals, it transforms raw Nuclei output into actionable intelligence through a modern, authenticated dashboard.

Why Nuclei Command Center?

Challenge Solution
CLI-only workflow slows down operations One-click preset scans with configurable parameters
Findings scattered across JSON files Centralized SQLite database with full-text search
No vulnerability lifecycle tracking Status management: New β†’ Confirmed β†’ Fixed β†’ Closed
Team collaboration is difficult Import/Export capabilities with backup & restore
No access control for scan operations NextAuth v5 integration with bcrypt password hashing

Screenshots

πŸ” Authentication

Login Page
Secure login with bcrypt-hashed credentials


πŸ“Š Dashboard & Monitoring

Dashboard Overview
Real-time overview with vulnerability statistics and recent findings

Activity Monitor
Live scan activity tracking with process management


🎯 Vulnerability Scanning

Nuclei Scanner Scan History
Nuclei Scan Scan History
Configure and launch Nuclei scans View all past scan results

Vulnerability Findings
Detailed vulnerability findings with severity classification


🌐 Subdomain Discovery (Subfinder)

Subdomain Scan Inventory View
Subfinder Scan Subfinder Inventory
Launch subdomain enumeration Browse discovered subdomains

Subfinder Monitor
Monitor subdomain discovery progress


πŸ” HTTP Probing (HTTPX)

HTTPX Scan HTTPX Results
HTTPX Scan HTTPX Results
Configure HTTP probing parameters View live host analysis results

βš™οΈ System Administration

System Settings Scanner Management
System Settings System Scanner
Configure rate limits and performance Manage scanner binaries
Login Records Backup & Restore
Login Records Backup Restore
Audit authentication events Export and restore all data

Custom Templates
Create and manage custom Nuclei templates


Features

🎯 Vulnerability Management

  • Unified Finding Feed: Aggregate all scan results in a single, filterable interface
  • Severity Classification: Color-coded Critical/High/Medium/Low/Info badges
  • Status Workflow: Track findings through New β†’ Confirmed β†’ False Positive β†’ Fixed β†’ Closed
  • Surgical Rescan: Re-verify individual vulnerabilities with one click
  • Bulk Export: CSV exports filtered by severity level

⚑ Scan Operations

  • 7 Pre-Configured Presets:

    Preset Nuclei Flags Use Case
    Full Scan None Comprehensive assessment
    Critical Only -s critical High-priority triage
    High & Critical -s critical,high Risk-focused scan
    Technology Detection -tags tech Asset fingerprinting
    Recent CVEs -tags cve2023,cve2024 Patch verification
    Misconfigurations -tags misconfig Security hardening
    Admin Panels -tags panel,login Exposed interface detection
  • Custom Command Builder: Full CLI flag support for advanced operators

  • Real-time Activity Monitor: Live scan status with duration tracking

  • Background Processing: Non-blocking scan execution with process management

πŸ”§ System Management

  • Engine Updates: One-click updates for Nuclei, Subfinder, and HTTPX binaries
  • Template Management: Create, edit, and execute custom YAML templates
  • Performance Tuning: Configurable rate limits, concurrency, and bulk sizes
  • Access Logging: Audit trail for authentication events

πŸ’Ύ Data Management

  • SQLite Persistence: Indexed database with foreign key relationships
  • Full Backup: Export all scanners' data (Nuclei, Subfinder, HTTPX) to JSON
  • Transaction-Safe Restore: Atomic restore with rollback on failure
  • External Import: Ingest Nuclei JSON from CI/CD pipelines or other sources

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           NUCLEI COMMAND CENTER                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚  β”‚   Browser   │───▢│  proxy.ts   │───▢│  Next.js    β”‚                 β”‚
β”‚  β”‚   Client    β”‚    β”‚ (Middleware)β”‚    β”‚  App Router β”‚                 β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚         β”‚                  β”‚                  β”‚                         β”‚
β”‚         β”‚           β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”          β”‚                         β”‚
β”‚         β”‚           β”‚  NextAuth   β”‚          β”‚                         β”‚
β”‚         β”‚           β”‚  Sessions   β”‚          β”‚                         β”‚
β”‚         β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚                         β”‚
β”‚         β”‚                                    β”‚                         β”‚
β”‚         β”‚           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚         β”‚           β”‚              API Routes (/api/*)              β”‚   β”‚
β”‚         β”‚           β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚   β”‚
β”‚         β”‚           β”‚  β”‚  scan   β”‚ β”‚findings β”‚ β”‚ system/scanners β”‚ β”‚   β”‚
β”‚         β”‚           β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚
β”‚         β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚         β”‚                   β”‚           β”‚               β”‚              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚    React    β”‚     β”‚              SQLite Database             β”‚       β”‚
β”‚  β”‚  Components β”‚     β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚  β”‚ scans  β”‚  β”‚ findings β”‚  β”‚ access  β”‚  β”‚       β”‚
β”‚                      β”‚  β”‚        β”‚  β”‚          β”‚  β”‚  logs   β”‚  β”‚       β”‚
β”‚                      β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚       β”‚
β”‚                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚                                        β”‚                               β”‚
β”‚                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”                      β”‚
β”‚                               β”‚  Nuclei Binary  β”‚                      β”‚
β”‚                               β”‚   (System PATH) β”‚                      β”‚
β”‚                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Technology Stack

Layer Technology Purpose
Frontend Next.js 15, React 19, Tailwind CSS Server-side rendering, responsive UI
Components shadcn/ui (Radix primitives) Accessible, customizable UI library
Authentication Auth.js v5 (NextAuth) Session management, middleware protection
Password Security bcrypt (10 rounds) Secure credential hashing
Database SQLite + better-sqlite3 Embedded, zero-config persistence
API Next.js Route Handlers RESTful endpoints with type safety
Process Mgmt Node.js child_process Nuclei binary execution
Caching In-memory TTL cache Reduced database load

Installation

Prerequisites

Requirement Version Verification
Node.js β‰₯ 18.0.0 node --version
npm β‰₯ 9.0.0 npm --version
Go β‰₯ 1.21 go version
Nuclei β‰₯ 3.6.0 nuclei -version

Step 1: Install ProjectDiscovery Tools

# Install Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

# Install Subfinder (optional, for subdomain discovery)
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

# Install HTTPX (optional, for HTTP probing)
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest

# Ensure Go bin is in PATH
# Windows: Add %USERPROFILE%\go\bin to PATH
# Linux/macOS: export PATH=$PATH:$(go env GOPATH)/bin

Step 2: Clone and Install

git clone https://github.com/yourusername/NUCLEI_CNM.git
cd NUCLEI_CNM/dashboard
npm install

Step 3: Configure Authentication

Generate a secure password hash:

# Using Node.js
node -e "const bcrypt = require('bcrypt'); bcrypt.hash('YOUR_SECURE_PASSWORD', 10).then(h => console.log(h));"

Generate an auth secret:

# Using OpenSSL
openssl rand -base64 32

# Or using Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"

Create dashboard/.env.local:

# Required: Bcrypt hash of your admin password
ADMIN_PASSWORD_HASH="$2b$10$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# Required: Random secret for session signing (32+ characters)
AUTH_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

Step 4: Initialize and Run

# Development mode (with hot reload)
npm run dev

# Production build
npm run build
npm start

Access the dashboard at http://localhost:3000


Security

Authentication Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Security Layers                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                              β”‚
β”‚  Layer 1: Edge Middleware (proxy.ts)                        β”‚
β”‚  β”œβ”€ Intercepts ALL requests before routing                  β”‚
β”‚  β”œβ”€ Validates session existence                             β”‚
β”‚  β”œβ”€ Redirects unauthenticated users to /login               β”‚
β”‚  └─ Enforces HTTPS in production                            β”‚
β”‚                                                              β”‚
β”‚  Layer 2: API Route Guards                                   β”‚
β”‚  β”œβ”€ Every API handler calls await auth()                    β”‚
β”‚  β”œβ”€ Returns 401 Unauthorized if no session                  β”‚
β”‚  └─ Prevents direct API access bypass                       β”‚
β”‚                                                              β”‚
β”‚  Layer 3: Password Security                                  β”‚
β”‚  β”œβ”€ Bcrypt hashing with 10 salt rounds                      β”‚
β”‚  β”œβ”€ Timing-safe comparison                                  β”‚
β”‚  └─ No plaintext password storage                           β”‚
β”‚                                                              β”‚
β”‚  Layer 4: Session Management                                 β”‚
β”‚  β”œβ”€ Secure HTTP-only cookies                                β”‚
β”‚  β”œβ”€ CSRF protection (built-in)                              β”‚
β”‚  └─ Configurable session lifetime                           β”‚
β”‚                                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Security Best Practices

Practice Implementation
Secrets Management All secrets in .env.local (gitignored)
Password Policy Minimum 12 characters recommended
SQL Injection Prepared statements via better-sqlite3
XSS Prevention React's built-in escaping + CSP headers
CSRF Protection NextAuth automatic token validation
Access Logging Authentication events logged to database
Sensitive Data Database and scan results excluded from Git

Protected Resources

Resource Protection Method
/ (Dashboard) Middleware redirect
/vulnerabilities Middleware redirect
/api/scan 401 if no session
/api/findings 401 if no session
/api/backup/* 401 if no session
/api/system/* 401 if no session

Configuration

Environment Variables

Variable Required Description
ADMIN_PASSWORD_HASH βœ… Bcrypt hash of admin password
AUTH_SECRET βœ… Session signing secret (32+ chars)
NODE_ENV ❌ development or production

Performance Tuning

Located in Settings within the dashboard:

Setting Default Range Impact
Rate Limit 150 req/s 50-1000 Target server load
Concurrency 25 25-300 Parallel template execution
Bulk Size 25 25-100 Hosts per batch

Project Structure

NUCLEI_CNM/
β”œβ”€β”€ dashboard/                          # Next.js Application
β”‚   β”œβ”€β”€ app/                            # App Router
β”‚   β”‚   β”œβ”€β”€ api/                        # Backend API Routes
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/                   # NextAuth endpoints
β”‚   β”‚   β”‚   β”œβ”€β”€ scan/                   # Scan CRUD operations
β”‚   β”‚   β”‚   β”œβ”€β”€ findings/               # Finding management
β”‚   β”‚   β”‚   β”œβ”€β”€ backup/                 # Export/restore
β”‚   β”‚   β”‚   └── system/                 # Engine updates, health
β”‚   β”‚   β”œβ”€β”€ login/                      # Authentication page
β”‚   β”‚   └── page.tsx                    # Main dashboard
β”‚   β”œβ”€β”€ components/                     # React Components
β”‚   β”‚   β”œβ”€β”€ dashboard/                  # Overview, stats
β”‚   β”‚   β”œβ”€β”€ findings/                   # Table, filters
β”‚   β”‚   β”œβ”€β”€ scan/                       # Wizard, console
β”‚   β”‚   └── ui/                         # shadcn/ui primitives
β”‚   β”œβ”€β”€ lib/                            # Core Logic
β”‚   β”‚   β”œβ”€β”€ db.ts                       # Database operations
β”‚   β”‚   β”œβ”€β”€ cache.ts                    # TTL caching
β”‚   β”‚   β”œβ”€β”€ env.ts                      # Environment handling
β”‚   β”‚   └── nuclei/                     # Config, presets
β”‚   β”œβ”€β”€ proxy.ts                        # Authentication middleware
β”‚   β”œβ”€β”€ auth.ts                         # Credentials provider
β”‚   β”œβ”€β”€ auth.config.ts                  # NextAuth config
β”‚   └── scans/                          # Scan output (gitignored)
β”œβ”€β”€ Refrencce and Usage And Guide/      # Technical Documentation
β”‚   β”œβ”€β”€ GETTING_STARTED.md
β”‚   β”œβ”€β”€ AUTHENTICATION.md
β”‚   β”œβ”€β”€ ARCHITECTURE.md
β”‚   β”œβ”€β”€ API_REFERENCE.md
β”‚   β”œβ”€β”€ FEATURES.md
β”‚   └── COMPONENTS.md
β”œβ”€β”€ .gitignore                          # Security-conscious ignores
└── README.md                           # This file

Documentation

Document Description
GETTING_STARTED.md Complete setup and first scan guide
AUTHENTICATION.md Security implementation details
ARCHITECTURE.md System design and data flow
API_REFERENCE.md Endpoint specifications
FEATURES.md Feature catalog
COMPONENTS.md React component documentation

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/enhancement)
  3. Commit changes (git commit -m 'feat: add new capability')
  4. Push to branch (git push origin feature/enhancement)
  5. Open a Pull Request

Commit Convention

This project follows Conventional Commits:

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation
  • refactor: Code refactoring
  • security: Security improvements

License

This project is licensed under the MIT License. See LICENSE for details.

Nuclei is a product of ProjectDiscovery and is also licensed under the MIT License.


Acknowledgments


Built with πŸ” Security in Mind

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages