WebSec-Audit
Framework Profesional de Auditoría de Seguridad Web
Un framework en Bash modular y extensible para evaluaciones integrales de seguridad en aplicaciones web.
Automatiza más de 15 módulos de superficies de ataque, genera registros estructurados y produce informes profesionales en HTML, JSON y TXT.
Características · Instalación · Uso · Módulos · Estructura de Salida · Contribución
⚠️ Aviso Legal
Esta herramienta está diseñada exclusivamente para evaluaciones de seguridad autorizadas. Ejecútala únicamente contra sistemas de tu propiedad o sobre los que tengas autorización explícita por escrito para realizar pruebas. El uso no autorizado contra sistemas de terceros es ilegal y puede dar lugar a procesos penales. El autor no asume ninguna responsabilidad de ningún tipo por el mal uso de este software.
✨ Características
- Más de 15 módulos de seguridad — reconocimiento, escaneo de puertos, SSL/TLS, cabeceras, SQLi, XSS, CMS, CORS, SSRF, toma de control de subdominios y más
- Arquitectura modular — activa o desactiva cualquier módulo de forma independiente mediante
--skip-<módulo> - Tres modos de escaneo — Normal, Agresivo (
--aggressive), Sigiloso (--stealth) - Informes profesionales — panel interactivo en HTML, JSON estructurado y registro en texto plano
- Independiente de herramientas rígidas — recurre de forma fluida a alternativas si faltan herramientas opcionales
- Motor de hallazgos inteligente — hallazgos almacenados como JSONL con gravedad, módulo, evidencia y remediación
- Soporte para proxy — enruta todo el tráfico a través de Burp Suite o cualquier proxy HTTP
- Gravedades alineadas con CVSS — CRITICAL / HIGH / MEDIUM / LOW / INFO (Crítica / Alta / Media / Baja / Info)
- Cero dependencias externas obligatorias — el escaneo principal funciona únicamente con
curlynmap
📦 Instalación
Instalación rápida (recomendada)
git clone https://github.com/davidalvarezp/websec-audit.gitcd websec-auditchmod +x install.sh websec-audit.shsudo ./install.shManual (Debian/Ubuntu)
# Obligatoriassudo apt-get install -y curl nmap
# Recomendadassudo apt-get install -y nikto sqlmap gobuster whatweb wafw00f sslscan \ python3 python3-pip jq ruby dirb dnsutils whois wordlists
# Opcionales (mejora significativamente la cobertura)pip3 install droopescangem install wpscan --no-documentgit clone --depth 1 https://github.com/drwetter/testssl.sh.git /opt/testssl.shsudo ln -s /opt/testssl.sh/testssl.sh /usr/local/bin/testssl.shKali Linux
La mayoría de las herramientas vienen preinstaladas. Ejecuta:
sudo apt-get install -y gobuster dalfox subjack nuclei subfinder./install.sh # gestiona los componentes restantes🚀 Uso
Básico
./websec-audit.sh -t https://objetivo.comAgresivo (más profundo, más ruidoso)
./websec-audit.sh -t https://objetivo.com --aggressive -T 20Sigiloso (más lento, huella de detección menor)
./websec-audit.sh -t https://objetivo.com --stealthA través de un proxy (Burp Suite)
./websec-audit.sh -t https://objetivo.com --proxy http://127.0.0.1:8080Directorio de salida personalizado e informe exclusivo en JSON
./websec-audit.sh -t https://objetivo.com -o /tmp/audit --format jsonOmitir módulos específicos
./websec-audit.sh -t https://objetivo.com --skip-nikto --skip-sqli --skip-cms -vEscaneo completo de puertos con modo agresivo
./websec-audit.sh -t https://objetivo.com --ports full --aggressive --depth 5📋 Referencia Completa de Opciones
OBLIGATORIAS -t, --target <url|ip> URL o dirección IP objetivo
SALIDA -o, --output <dir> Directorio de salida --format <fmt> json | html | txt | all (por defecto: all)
OPCIONES DE ESCANEO -T, --threads <n> Hilos concurrentes (por defecto: 10) -p, --ports <perfil> top-100 | top-1000 | full (por defecto: top-1000) --timeout <s> Tiempo de espera de conexión (por defecto: 10) --depth <n> Profundidad de rastreo (por defecto: 3) --proxy <url> Proxy HTTP/HTTPS --aggressive Modo agresivo --stealth Modo sigiloso
CONTROL DE MÓDULOS (--skip-<módulo>) --skip-recon WHOIS, DNS, enumeración de subdominios --skip-portscan Escaneo de puertos con nmap --skip-fingerprint WhatWeb, detección de WAF --skip-ssl Análisis SSL/TLS --skip-headers Cabeceras de seguridad HTTP --skip-dirbrute Fuerza bruta de directorios/archivos --skip-nikto Escáner web Nikto --skip-sqli Inyección SQL (sqlmap) --skip-xss XSS (dalfox + manual) --skip-cms Detección y escaneo de CMS --skip-cors Mala configuración de CORS --skip-redirect Redirección abierta --skip-ssrf SSRF --skip-subtakeover Toma de control de subdominios --skip-nuclei Escaneo con plantillas de Nuclei
DICCIONARIOS (WORDLISTS) --wl-dirs-small <archivo> Diccionario pequeño para fuerza bruta de directorios --wl-dirs-big <archivo> Diccionario grande para fuerza bruta de directorios --wl-dns <archivo> Diccionario de subdominios DNS
VARIOS -v, --verbose Salida detallada --no-color Desactivar colores ANSI --no-banner Ocultar banner -V, --version Información de versión -h, --help Ayuda🔍 Módulos
| # | Módulo | Descripción | Herramientas Clave |
|---|---|---|---|
| 00 | Información del Objetivo | Resolver IP, inicializar directorios | dig, host |
| 01 | Reconocimiento | WHOIS, registros DNS, AXFR, enumeración de subdominios, SPF/DMARC, dorks | whois, dig, subfinder, amass, dnsrecon |
| 02 | Escaneo de Puertos | Detección completa de servicios/versiones, análisis de puertos basado en riesgos | nmap |
| 03 | Identificación (Fingerprinting) | Pila tecnológica, detección de WAF, filtración de versiones | whatweb, wafw00f |
| 04 | SSL/TLS | Soporte de protocolos, cifrados, caducidad de certificados, HSTS, CAA | testssl.sh, sslscan, openssl |
| 05 | Cabeceras HTTP | Más de 7 cabeceras de seguridad, flags de cookies, auditoría CSP, redirección HTTPS | curl |
| 06 | Enum. de Dir. y Archivos | Fuerza bruta de directorios + sondeo de 40 rutas sensibles | gobuster, ffuf, dirb |
| 07 | Nikto | Errores de configuración de servidores web, CVEs conocidos | nikto |
| 08 | Inyección SQL | Detección automatizada y explotación de SQLi | sqlmap |
| 09 | XSS | Sondeo de XSS reflejado en parámetros comunes + XSS basado en DOM | dalfox, curl |
| 10 | Escaneo de CMS | Detección y escaneo de WordPress, Drupal, Joomla, Magento | wpscan, droopescan |
| 11 | CORS | CORS mal configurado, orígenes comodín, CORS con credenciales | curl |
| 12 | Redirección Abierta | Más de 20 parámetros × 10 payloads de redirección | curl |
| 13 | SSRF | IMDS en la nube (AWS/GCP/Azure), sondeo de IPs internas | curl |
| 14 | Toma de Control de Subdominios | Detección de CNAME huérfanos para más de 20 servicios | subjack, nuclei, dig |
| 15 | Nuclei | Plantillas comunitarias de CVEs y errores de configuración | nuclei |
📁 Estructura de Salida
results_objetivo_AAAAMMDD_HHMMSS/├── logs/│ ├── audit_AAAAMMDD_HHMMSS.log # Registro de auditoría completo con marca de tiempo│ └── findings.jsonl # Un objeto JSON por hallazgo encontrado├── 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_AAAAMMDD_HHMMSS.html # Panel interactivo ├── report_AAAAMMDD_HHMMSS.json # JSON estructurado └── report_AAAAMMDD_HHMMSS.txt # Texto plano📊 Ejemplos de Informes
Informe HTML
- Filtro interactivo por gravedad (Crítica / Alta / Media / Baja / Info)
- Búsqueda en tiempo real entre todos los hallazgos
- Barra de riesgo y panel de metadatos del escaneo
- Evidencia y remediación detalladas por cada hallazgo
- Tema oscuro, diseño adaptativo (responsive)
Informe JSON
{ "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" } ]}🔧 Requisitos
Obligatorios
| Herramienta | Propósito | Instalación |
|---|---|---|
bash 5.0+ |
Intérprete de comandos | apt-get install bash |
curl |
Solicitudes HTTP | apt-get install curl |
nmap |
Escaneo de puertos | apt-get install nmap |
Recomendados (mejoran considerablemente la cobertura)
| Herramienta | Módulo | Instalación |
|---|---|---|
nikto |
Escaneo de vulnerabilidades web | apt-get install nikto |
sqlmap |
Inyección SQL | apt-get install sqlmap |
gobuster / ffuf |
Fuerza bruta de directorios | apt-get install gobuster |
whatweb |
Identificación tecnológica | apt-get install whatweb |
wafw00f |
Detección de WAF | apt-get install wafw00f |
sslscan / testssl.sh |
SSL/TLS | apt-get install sslscan |
wpscan |
WordPress | gem install wpscan |
dalfox |
XSS | Lanzamientos en GitHub |
nuclei |
Plantillas CVE | Lanzamientos en GitHub |
subfinder |
Enumeración de subdominios | Lanzamientos en GitHub |
jq |
Análisis de JSON | apt-get install jq |
python3 |
Utilidades | apt-get install python3 |
🤝 Contribución
¡Las contribuciones son bienvenidas! Por favor, lee CONTRIBUTING.md antes de enviar una solicitud de extracción (pull request).
- Haz un fork del repositorio
- Crea una rama para tu funcionalidad:
git checkout -b feature/nuevo-modulo - Realiza el commit de tus cambios:
git commit -m 'feat: add new-module' - Sube los cambios a tu rama:
git push origin feature/nuevo-modulo - Abre una Pull Request
📝 Registro de Cambios (Changelog)
Consulta CHANGELOG.md para ver el historial completo de versiones.
📜 Licencia
Este proyecto está licenciado bajo la Licencia MIT — consulta el archivo LICENSE para más detalles.
Hecho con ❤️ por dap
⭐ Dale una estrella a este repositorio si te resulta útil.