•
8 min read
Websec-Audit

WebSec-Audit

Professional Web Security Audit Framework

Version License Bash Platform Maintenance

A modular, extensible Bash framework for comprehensive web application security assessments.
Automates 15+ attack surface modules, generates structured logs, and produces professional reports in HTML, JSON and TXT.

Features · Installation · Usage · Modules · Output · Contributing


This tool is intended exclusively for authorised security assessments.
Only run it against systems you own or have explicit written permission to test.
Unauthorised use against third-party systems is illegal and may result in criminal prosecution.
The author assumes no liability whatsoever for misuse of this software.


✨ Features

  • 15+ security modules — recon, port scanning, SSL/TLS, headers, SQLi, XSS, CMS, CORS, SSRF, subdomain takeover, and more
  • Modular architecture — enable or disable any module independently via --skip-<module>
  • Three scan modes — Normal, Aggressive (--aggressive), Stealth (--stealth)
  • Professional reporting — interactive HTML dashboard, structured JSON, and plain-text log
  • Tool-agnostic — gracefully degrades to fallbacks when optional tools are absent
  • Smart finding engine — findings stored as JSONL with severity, module, evidence, and remediation
  • Proxy support — route all traffic through Burp Suite or any HTTP proxy
  • CVSS-aligned severities — CRITICAL / HIGH / MEDIUM / LOW / INFO
  • Zero external dependencies — core scan works with only curl and nmap

📦 Installation

Ventana de terminal
git clone https://github.com/davidalvarezp/websec-audit.git
cd websec-audit
chmod +x install.sh websec-audit.sh
sudo ./install.sh

Manual (Debian/Ubuntu)

Ventana de terminal
# Required
sudo apt-get install -y curl nmap
# Recommended
sudo apt-get install -y nikto sqlmap gobuster whatweb wafw00f sslscan \
python3 python3-pip jq ruby dirb dnsutils whois wordlists
# Optional (improves coverage significantly)
pip3 install droopescan
gem install wpscan --no-document
git clone --depth 1 https://github.com/drwetter/testssl.sh.git /opt/testssl.sh
sudo ln -s /opt/testssl.sh/testssl.sh /usr/local/bin/testssl.sh

Kali Linux

Most tools are pre-installed. Run:

Ventana de terminal
sudo apt-get install -y gobuster dalfox subjack nuclei subfinder
./install.sh # handles remaining gaps

🚀 Usage

Basic

Ventana de terminal
./websec-audit.sh -t https://target.com

Aggressive (deeper, noisier)

Ventana de terminal
./websec-audit.sh -t https://target.com --aggressive -T 20

Stealth (slower, lower detection footprint)

Ventana de terminal
./websec-audit.sh -t https://target.com --stealth

Through a proxy (Burp Suite)

Ventana de terminal
./websec-audit.sh -t https://target.com --proxy http://127.0.0.1:8080

Custom output directory and JSON-only report

Ventana de terminal
./websec-audit.sh -t https://target.com -o /tmp/audit --format json

Skip specific modules

Ventana de terminal
./websec-audit.sh -t https://target.com --skip-nikto --skip-sqli --skip-cms -v

Full port scan with aggressive mode

Ventana de terminal
./websec-audit.sh -t https://target.com --ports full --aggressive --depth 5

📋 Full Options Reference

REQUIRED
-t, --target <url|ip> Target URL or IP address
OUTPUT
-o, --output <dir> Output directory
--format <fmt> json | html | txt | all (default: all)
SCAN OPTIONS
-T, --threads <n> Concurrent threads (default: 10)
-p, --ports <profile> top-100 | top-1000 | full (default: top-1000)
--timeout <s> Connection timeout (default: 10)
--depth <n> Crawl depth (default: 3)
--proxy <url> HTTP/HTTPS proxy
--aggressive Aggressive mode
--stealth Stealth mode
MODULE CONTROL (--skip-<module>)
--skip-recon WHOIS, DNS, subdomain enumeration
--skip-portscan nmap port scanning
--skip-fingerprint WhatWeb, WAF detection
--skip-ssl SSL/TLS analysis
--skip-headers HTTP security headers
--skip-dirbrute Directory/file brute-forcing
--skip-nikto Nikto web scanner
--skip-sqli SQL injection (sqlmap)
--skip-xss XSS (dalfox + manual)
--skip-cms CMS detection & scanning
--skip-cors CORS misconfiguration
--skip-redirect Open redirect
--skip-ssrf SSRF
--skip-subtakeover Subdomain takeover
--skip-nuclei Nuclei template scan
WORDLISTS
--wl-dirs-small <file> Small wordlist for directory brute-force
--wl-dirs-big <file> Large wordlist for directory brute-force
--wl-dns <file> DNS subdomain wordlist
MISC
-v, --verbose Verbose output
--no-color Disable ANSI colors
--no-banner Suppress banner
-V, --version Version info
-h, --help Help

🔍 Modules

# Module Description Key Tools
00 Target Info Resolve IP, initialise directories dig, host
01 Reconnaissance WHOIS, DNS records, AXFR, subdomain enum, SPF/DMARC, dorks whois, dig, subfinder, amass, dnsrecon
02 Port Scanning Full service/version detection, risk-based port analysis nmap
03 Fingerprinting Technology stack, WAF detection, version leakage whatweb, wafw00f
04 SSL/TLS Protocol support, ciphers, cert expiry, HSTS, CAA testssl.sh, sslscan, openssl
05 HTTP Headers 7+ security headers, cookie flags, CSP audit, HTTPS redirect curl
06 Dir & File Enum Directory brute-force + 40 sensitive path probes gobuster, ffuf, dirb
07 Nikto Web server misconfigurations, known CVEs nikto
08 SQL Injection Automated SQLi detection and exploitation sqlmap
09 XSS Reflected XSS probe across common parameters + DOM XSS dalfox, curl
10 CMS Scanning WordPress, Drupal, Joomla, Magento detection and scanning wpscan, droopescan
11 CORS Misconfigured CORS, wildcard origins, credentialed CORS curl
12 Open Redirect 20+ params × 10 redirect payloads curl
13 SSRF Cloud IMDS (AWS/GCP/Azure), internal IP probing curl
14 Subdomain Takeover Dangling CNAME detection for 20+ services subjack, nuclei, dig
15 Nuclei Community CVE/misconfiguration templates nuclei

📁 Output Structure

results_target_YYYYMMDD_HHMMSS/
├── logs/
│ ├── audit_YYYYMMDD_HHMMSS.log # Full timestamped audit log
│ └── findings.jsonl # One JSON object per finding
├── recon/
│ ├── whois.txt
│ ├── dns_records.txt
│ ├── subdomains.txt
│ ├── axfr.txt
│ ├── whatweb.json
│ ├── waf_detection.txt
│ └── google_dorks.txt
├── portscan/
│ ├── nmap.txt
│ ├── nmap.xml
│ └── nmap.gnmap
├── ssl/
│ ├── testssl.json
│ └── testssl.log
├── headers/
│ └── response_headers.txt
├── dirs/
│ ├── gobuster_dirs.txt
│ └── sensitive_paths_found.txt
├── vulns/
│ ├── sqlmap/
│ ├── xss/
│ └── nuclei/
├── cms/
│ ├── wpscan_results.json
│ └── droopescan_*.json
├── misc/
│ ├── cors_tests.txt
│ ├── open_redirect.txt
│ ├── ssrf_tests.txt
│ └── subtakeover.txt
└── reports/
├── report_YYYYMMDD_HHMMSS.html # Interactive dashboard
├── report_YYYYMMDD_HHMMSS.json # Structured JSON
└── report_YYYYMMDD_HHMMSS.txt # Plain text

📊 Report Examples

HTML Report

  • Interactive severity filter (Critical / High / Medium / Low / Info)
  • Live search across all findings
  • Risk bar and scan metadata panel
  • Evidence and remediation per finding
  • Dark theme, responsive layout

JSON Report

{
"metadata": {
"tool": "websec-audit",
"version": "1.0.1",
"target": "https://davidalvarezp.com",
"start_time": "2026-01-01 12:00:00",
"duration_secs": 342
},
"summary": {
"total": 18,
"critical": 2,
"high": 5,
"medium": 6,
"low": 3,
"info": 2
},
"findings": [
{
"id": 1,
"severity": "CRITICAL",
"module": "RECON",
"title": "DNS Zone Transfer (AXFR) is permitted",
"description": "Name server ns1.davidalvarezp.com allows AXFR — full DNS zone disclosed.",
"evidence": "...",
"recommendation": "Restrict AXFR to authorised secondary name servers only.",
"timestamp": "2026-01-01T12:00:12Z"
}
]
}

🔧 Requirements

Required

Tool Purpose Install
bash 5.0+ Shell interpreter apt-get install bash
curl HTTP requests apt-get install curl
nmap Port scanning apt-get install nmap
Tool Module Install
nikto Web vuln scan apt-get install nikto
sqlmap SQL injection apt-get install sqlmap
gobuster / ffuf Dir brute-force apt-get install gobuster
whatweb Fingerprinting apt-get install whatweb
wafw00f WAF detection apt-get install wafw00f
sslscan / testssl.sh SSL/TLS apt-get install sslscan
wpscan WordPress gem install wpscan
dalfox XSS GitHub releases
nuclei CVE templates GitHub releases
subfinder Subdomain enum GitHub releases
jq JSON parsing apt-get install jq
python3 Utilities apt-get install python3

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md before submitting a pull request.

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

📝 Changelog

See CHANGELOG.md for the full version history.


📜 License

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


Made with ❤️ by dap

⭐ Star this repo if you find it useful!