Quick Start
Strategies
Use--strategy to control how much reconnaissance Vigolium performs before dynamic testing.
Lite, Fast, Minimal Discovery
Runs only the dynamic-assessment phase against the provided targets. No crawling, no content discovery.Balanced, Default
Runs content discovery, browser spidering, known-issue-scan analysis, and audit.Deep, Maximum Recon
Adds external intelligence harvesting (Wayback Machine, CommonCrawl, etc.) on top of balanced.Phase-by-Phase Walkthrough
Input Formats
Vigolium accepts targets in multiple formats via-I / --input-mode:
External Harvesting
Queries external data sources for historical URLs and endpoints. Enabled by--strategy deep or --external-harvest.
vigolium-configs.yaml under external_harvester.sources.
Content Discovery
Brute-force directory and file discovery using the deparos engine. Enabled by--strategy balanced/deep or --discover.
Browser Spidering
Chromium-based crawling that handles SPAs, JavaScript rendering, and form interactions. Enabled by--strategy balanced/deep or --spider.
-b/--browsers, number of browser instances (default: 1)-E/--browser-engine,chromium,ungoogled, orfingerprint(default:chromium)--headless: headless mode (default: true)--no-cdp: disable CDP event listener detection--no-forms: disable automatic form filling--spider-max-time: max duration (default: 30m)
Known Issue Scan
Runs Nuclei templates and Kingfisher secret scanning against discovered hosts and response bodies. Enabled by--strategy balanced/deep or by the strategy.
By default, known-issue-scan enriches its target list with path prefixes discovered in previous phases (discovery, spidering). This increases coverage, Nuclei templates run against individual path prefixes (e.g., https://example.com/api/v1/) rather than just the host root. Disable this for faster but less granular scans:
Dynamic Assessment
The core scanning phase (canonical namedynamic-assessment; aliases audit, dast, assessment). Runs active and passive modules against all discovered HTTP records. Enabled in all strategies.
Uses a feedback loop (up to 3 rounds): after each round, checks for newly discovered records and rescans if found.
OAST (Out-of-band Application Security Testing) injects blind callback payloads when configured:
Performance Tuning
CLI Speed Flags
Scanning Pace (Config File)
Thescanning_pace section in vigolium-configs.yaml provides centralized speed control. Common values serve as a baseline inherited by all phases; per-phase subsections override specific values.
Proactive WAF/CDN Pacing
An aggressive active phase can burst a WAF/CDN edge into a rate-based block — and once the edge starts filtering, the findings that would have surfaced are hidden behind challenge pages. To stay ahead of that, the per-host rate limiter pre-throttles a host the first time earlier-phase traffic fingerprints it behind a recognized edge, before the heavy phase ever fires:- Detection reads ordinary responses — headers on plain
200s are enough to fingerprint CloudFront, Cloudflare, Akamai, Imperva/Incapsula, Sucuri, and Azure Front Door. No block or challenge is required to arm the pacing. - On the first match, per-host concurrency drops to a quarter of its ceiling (
MaxPerHost/4), then ramps back up on healthy responses so a well-behaved edge isn’t paced forever. - The drop prints once per host as a
[waf-pacing-armed]notice (for example40→10), so you can see exactly when and how far a host was throttled.
[waf-block-detected] notice covered on the discovery phase page), which fires after a confirmed block. Passing --no-waf-pacing disables only the proactive pacing; the reactive back-off after a confirmed block is unaffected.
Output Formats
Multiple formats can be combined with a comma, e.g.
--format jsonl,html.
Lightweight Scan Commands
For quick, targeted scans of individual URLs or raw requests.scan-url: Single URL
scan-request: Raw HTTP Request
--discover, --spider, --external-harvest, --known-issue-scan) are used with these commands, they delegate to the full Runner pipeline (database required).
Module Selection
Hand-picking modules auto-skips
known-issue-scan. Narrowing a scan to specific modules (--module-id, or -m/--modules) signals a targeted, low-noise run, so Vigolium auto-appends --skip known-issue-scan — otherwise the broad Nuclei/Kingfisher known-issue pass would flood the results. A one-line console note explains the auto-skip; pass --only known-issue-scan to force the pass back on. It’s a no-op when --only is set or when no module narrowing is active, and is silent under --silent.Filtering by Tag
Modules are tagged with classification labels (e.g.,spring, rails, django, xss, injection, light). Use --module-tag to run only modules matching specific tags:
-m and --module-tag are provided, the results are merged (union).
Custom Extensions
Load JavaScript or YAML extension modules alongside or instead of built-in modules. See Extension Scanning for full details.Heuristics
Pre-flight checks detect WAFs, redirects, and technology before scanning. Controlled via--heuristics-check:
--only is used.
OAST (Out-of-Band Testing)
OAST detects blind vulnerabilities where the application triggers an out-of-band callback (DNS/HTTP) instead of reflecting payloads in the response. Vigolium uses an interactsh server for callback tracking. OAST is enabled by default. The OAST probe module injects callback URLs into insertion points and monitors for interactions during and after the scan.vigolium-configs.yaml:
Mutation Strategy
The mutation strategy controls how Vigolium generates payloads for parameter fuzzing. Value-aware mutation analyzes the original parameter value, classifies it by semantic type, and generates type-appropriate mutations.Project Scoping
Use--project-id (with a UUID) or --project-name (with a name) to scope all scan data to a specific project for multi-tenant isolation:
