- Overview
- Features
- Architecture
- Project Structure
- Prerequisites
- Installation
- Usage
- API Reference
- Scanning Modules
- Nuclei Templates
- PDF Reports
- Configuration
- Security Notice
- Contributing
- License
WebVulnX is a full-stack web security assessment tool that combines a Flask REST API backend with a sleek, dark-themed single-page frontend. It integrates multiple industry-standard scanning techniques β vulnerability detection, port scanning via Nmap, directory fuzzing, technology fingerprinting, DNS reconnaissance, DMARC policy analysis, custom Nuclei template scanning, and CVE intelligence lookup β all accessible through a single unified interface.
Results from any combination of scans can be exported as a branded PDF report with executive summaries, CVSS scoring, and remediation recommendations.
| Feature | Description |
|---|---|
| π Vulnerability Scanner | Checks security headers, CORS, sensitive file exposure, LFI, open redirect, SSL/TLS |
| π Port Scanner | Nmap-based scanning with quick and full modes; risk-level assessment per port |
| π Directory Fuzzer | Built-in 100+ path wordlist; optional ffuf integration; status-code filtering |
| π§ Technology Detector | Fingerprints 30+ technologies from headers, cookies, and page body |
| π DNS Reconnaissance | A, AAAA, MX, NS, TXT, SOA records via Google DoH + IP geolocation |
| βοΈ Nuclei Scanner | Runs custom YAML templates (XSS, SQLi, CSRF) via Nuclei engine |
| π§ DMARC Analyzer | Queries DMARC DNS records and classifies email protection level |
| π CVE Xplorer | Looks up CVE details (description, CVSS, PoCs, affected products, Nuclei templates) via vulnx |
| π PDF Report Generator | Branded, 12-section security reports using ReportLab |
| π¨ Dark/Light Theme | Persistent theme toggle with cyberpunk dark mode and clean light mode |
| π½ Filter Severity | Nuclei findings can be filtered by severity (Critical / High / Medium / Low) |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Browser (SPA) β
β index.html + style.css + app.js β
β (Sidebar navigation, scan views, PDF export) β
βββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ
β HTTP REST (JSON)
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Flask API (app.py) β
β /api/vuln-scan /api/port-scan /api/dir-fuzz β
β /api/tech-detect /api/dns-recon /api/nuclei-scan β
β /api/dmarc-scan /api/cve-xplorer /api/generate-pdf β
β /api/scan-all /api/health β
ββββ¬βββββββ¬βββββββ¬βββββββ¬βββββββ¬βββββββ¬βββββββ¬βββββββ¬βββββββββ
β β β β β β β β
βΌ βΌ βΌ βΌ βΌ βΌ βΌ βΌ
scanner port dir_ tech_ dns_ nuclei dmarc cve_ pdf_
.py scanner fuzzer detect recon scanner scanner xplorer generator
(nmap) (ffuf) (DoH) (yaml) (dig) (vulnx) (ReportLab)
WebVulnX/
βββ app.py # Flask application β all API endpoints & URL validation
β
βββ Backend/
β βββ scanner.py # Core vulnerability scanner (headers, CORS, LFI, SSLβ¦)
β βββ port_scanner.py # Nmap-based port scanner
β βββ dir_fuzzer.py # Directory & file discovery
β βββ tech_detector.py # Technology fingerprinting
β βββ dns_recon.py # DNS reconnaissance (Google DoH)
β βββ nuclei_scanner.py # Nuclei template runner (JSONL output parser)
β βββ dmarc_scanner.py # DMARC DNS policy checker (dig)
β βββ cve_xplorer.py # CVE intelligence lookup via vulnx CLI
β
βββ Frontend/
β βββ index.html # Single-page application shell
β
βββ Style/
β βββ css/style.css # Full dark/light theme stylesheet
β βββ js/app.js # Frontend logic (API calls, rendering, filtering)
β βββ img/ # Assets (logo, icons, cover page)
β
βββ Nuclei/
β βββ nuclei.exe # Nuclei binary (Windows)
β βββ xss.yaml # Reflected, Stored & DOM XSS detection
β βββ sqlinjection.yaml # SQL Injection & auth bypass detection
β βββ multi_csrf.yaml # Multi-type CSRF misconfiguration detection
β βββ advanced_csrf.yaml # Advanced CSRF token enforcement check
β
βββ utils/
β βββ pdf_generator.py # ReportLab PDF report generator (12 sections)
β
βββ Diagram/
βββ README.md # This file β project documentation
βββ uml_diagrams.md # UML class diagrams (Mermaid)
βββ flow_chart.md # System flowchart (Mermaid)
βββ system_architecture.md # C4 system architecture diagram (Mermaid)
Ensure the following are installed and available in your system PATH:
| Tool | Purpose | Required |
|---|---|---|
| Python 3.9+ | Backend runtime | β Required |
| Nmap | Port scanning | β Required |
| Nuclei | Template-based scanning | β Required |
dig (part of BIND tools) |
DMARC DNS queries | β Required |
| vulnx | CVE intelligence lookup | β Required |
| ffuf | Directory fuzzing (fast mode) |
git clone https://github.com/your-username/WebVulnX.git
cd WebVulnXpython -m venv venv
# Windows
venv\Scripts\activate
# Linux / macOS
source venv/bin/activatepip install -r requirements.txtrequirements.txt:
Flask
Flask-Cors
requests
reportlab
beautifulsoup4
lxml
Werkzeug
python app.pyOpen your browser at: http://127.0.0.1:5000
- Select a scan type from the sidebar (Vulnerability Scan, Port Scan, Dir Fuzz, etc.)
- Enter a target URL or domain in the input field
- Click Scan / Start β results load into the results panel
- View results rendered in the results panel
- Optionally filter results (severity for Nuclei, status code for Dir Fuzz)
- Click Generate PDF to download a professional 12-section report
π‘ CVE Xplorer: Enter a CVE ID (e.g.
CVE-2021-44228) to instantly retrieve full vulnerability intelligence.
π‘ Scan All: Use the
Scan Allendpoint to chain all modules against a single target.
All endpoints accept and return JSON (except /api/generate-pdf which returns application/pdf).
| Method | Endpoint | Body | Description |
|---|---|---|---|
GET |
/api/health |
β | Health check |
POST |
/api/vuln-scan |
{ "target": "https://example.com" } |
Full vulnerability assessment |
POST |
/api/port-scan |
{ "target": "https://example.com", "scan_type": "quick" } |
Nmap port scan |
POST |
/api/dir-fuzz |
{ "target": "https://example.com" } |
Directory fuzzing |
POST |
/api/tech-detect |
{ "target": "https://example.com" } |
Technology detection |
POST |
/api/dns-recon |
{ "target": "https://example.com" } |
DNS reconnaissance |
POST |
/api/nuclei-scan |
{ "target": "https://example.com" } |
Nuclei template scan |
POST |
/api/dmarc-scan |
{ "target": "https://example.com" } |
DMARC policy check |
POST |
/api/cve-xplorer |
{ "cve_id": "CVE-2021-44228" } |
CVE intelligence lookup |
POST |
/api/generate-pdf |
{ scan results object } |
Generate PDF report |
POST |
/api/scan-all |
{ "target": "https://example.com" } |
Run all modules |
curl -X POST http://127.0.0.1:5000/api/vuln-scan \
-H "Content-Type: application/json" \
-d '{"target": "https://example.com"}'{
"success": true,
"results": {
"target": "example.com",
"ip_address": "93.184.216.34",
"vulnerabilities": [
{
"name": "Missing Content-Security-Policy Header",
"severity": "low",
"cvss_score": 4.3,
"cwe": "CWE-693",
"description": "...",
"recommendation": ["..."],
"references": ["https://..."]
}
]
}
}{
"success": true,
"results": {
"cve_id": "CVE-2021-44228",
"name": "Log4Shell",
"severity": "Critical",
"cvss_score": 10.0,
"description": "...",
"is_kev": true,
"affected_products": [...],
"pocs": [...],
"is_template": true
}
}Performs HTTP-based security checks:
- Security Headers: CSP, X-Frame-Options, HSTS, X-Content-Type-Options, X-XSS-Protection, Referrer-Policy
- CORS Misconfiguration: Wildcard origins, credential exposure, origin reflection
- Sensitive File Exposure:
.env,.git/config,wp-config.php,phpinfo.php,backup.sql, etc. - Local File Inclusion (LFI): Common path traversal payloads across multiple parameters
- Open Redirect: Unvalidated redirect parameters
- SSL/TLS Issues: Certificate validity and HTTP vs HTTPS enforcement
- Shodan CVE Check: Queries Shodan API for known CVEs on the resolved IP
- CVSS Scoring: All findings include CVSS v3 score and CWE classification
- Wraps Nmap via
subprocess quickmode:nmap -Pn <target>(default ports)fullmode:nmap -Pn -p- <target>(all 65535 ports)- Risk classification per port (High / Medium / Low)
- Resolves hostname to IP address before scanning
- Built-in wordlist of 100+ common paths (
/admin,/api,/.env,/backup, etc.) - Falls back to ffuf if installed for high-speed fuzzing
- Categorizes findings:
admin,api,auth,sensitive,backup,other - Status-code filter dropdown (200 / 301 / 401 / 403 / 500)
- Signature-based detection from HTTP headers, cookies, and page body
- Covers: Web servers, CMSs, frameworks, analytics, CDNs, JavaScript libraries
- Optional WhatCMS API and WhatWeb CLI integration
- Returns name, version, category, confidence %, and icon per technology
- Uses Google DNS-over-HTTPS (
dns.google) - Queries: A, AAAA, MX, NS, TXT, SOA records
- IP geolocation via
ip-api.com - Format: grouped by record type with TTL and geo info
- Executes the
nucleibinary with templates from theNuclei/directory - Uses
-jsonloutput mode for robust structured parsing - Parses JSONL output into structured findings with type, severity, URL, description, and recommendation
- Severity filter dropdown (Critical / High / Medium / Low / All)
- Queries
_dmarc.<domain>viadig ... TXT +short - Validates and extracts domain from full URLs automatically
- Parses
p=(policy),rua=(reporting URI) - Protection levels: Strong (
reject), Moderate (quarantine), Weak (noneor missing)
- Validates CVE ID format (
CVE-YYYY-NNNNN) before querying - Executes
vulnx id -j --silent <CVE-ID>to fetch structured JSON data - Returns: CVE name, CVSS score, severity, description, impact, affected products, PoC links, CISA KEV status, and Nuclei template availability
- Displayed in a rich details card in the frontend
Custom templates in the Nuclei/ directory:
| Template | ID | Severity | Tests |
|---|---|---|---|
xss.yaml |
Multi-XSS-Detection |
High | Reflected, Stored, DOM-based XSS |
sqlinjection.yaml |
Login-SQLi-Auth-Bypass-Encoded |
Critical | Auth bypass, Union, Time-based SQLi |
multi_csrf.yaml |
Multi-CSRF-Detection |
Medium | GET/POST CSRF, Login CSRF, CORS CSRF |
advanced_csrf.yaml |
Advanced-CSRF-Detection |
Medium | Token extraction & enforcement bypass |
Nuclei templates follow the Nuclei YAML DSL. You can add custom templates to the
Nuclei/folder and they'll be picked up automatically.
Generated via ReportLab and downloadable directly from the UI.
Each report includes 12 sections:
- Cover Page β Target, IP, scan date, scanner version, confidentiality notice
- Table of Contents β All section listings
- Executive Summary β Risk level, severity counts, key findings overview
- Key Recommendations β Prioritized remediation guidance by severity
- Security Headers Checker β List of analyzed headers and their importance
- Port Scanning β Open ports table with state, service, and source
- Directory Fuzzing β Discovered paths with HTTP status and type
- Technology Detection β Grouped by category with version and confidence
- DNS Reconnaissance β Grouped DNS records by type
- DMARC Scanner β Policy configuration and raw TXT record
- Nuclei Scan Findings β Template, severity, URL, description, recommendations
- Security Headers Findings β Full vulnerability details (CVSS, CWE, evidence, recommendations, references)
- CVE Xplorer Findings β CVE details, impact, affected products, PoCs, Nuclei template link
- Appendix β CVSS scoring reference table
No .env file is required for basic operation. Optional integrations:
# In scanner.py β Shodan API key
SHODAN_API_KEY = "your_api_key_here"
# In tech_detector.py β WhatCMS API key
WHATCMS_API_KEY = "your_api_key_here"The Flask server binds to 0.0.0.0:5000 by default. To change this, edit app.py:
app.run(debug=True, host='0.0.0.0', port=5000)
β οΈ WebVulnX is intended for authorized security testing only.
- Only use this tool against systems you own or have explicit written permission to test
- Unauthorized scanning may be illegal under the Computer Fraud and Abuse Act (CFAA), GDPR, and other laws
- The authors accept no liability for misuse of this software
Contributions are welcome! To contribute:
- Fork the repository
- Create your feature branch:
git checkout -b feature/my-new-scanner - Commit your changes:
git commit -m 'Add: new scanner module' - Push to the branch:
git push origin feature/my-new-scanner - Open a Pull Request
- Create
Backend/my_scanner.pywith ascan(target)βdictfunction - Add a route in
app.py:@app.route('/api/my-scan', methods=['POST']) - Add a sidebar item and scan view section in
Frontend/index.html - Add the render function and API call in
Style/js/app.js
This project is licensed under the MIT License β see the LICENSE file for details.
Built with β€οΈ for the security community
π‘οΈ WebVulnX β Know Your Attack Surface
