Herramienta profesional de escaneo de vulnerabilidades web basada en OWASP Top 10
Project description
VulnLab Scanner
Herramienta profesional de escaneo de vulnerabilidades web basada en OWASP Top 10 (2021), diseñada para automatizar pruebas de seguridad de manera modular, fácil de instalar y usar.
Estado Actual del Proyecto
Versión: 1.5.0 (Fase 7 completada) Cobertura OWASP Top 10 (2021): 10/10 (100%) Pruebas: 154 passed (100% total) Licencia: MIT (Open Source) Estado: Listo para producción y publicación en PyPI
🚀 Características Implementadas ✅
Escáneres OWASP (10/10)
- ✅ A01 - Broken Access Control: IDOR, escalación de privilegios, Forceful Browsing
- ✅ A02 - Cryptographic Failures: HTTPS faltante, cookies sin Secure, credenciales en URL
- ✅ A03 - SQL Injection: Error-based, Boolean-based
- ✅ A04 - Insecure Design: Rate limiting, CSRF, validación de entrada, flujos inseguros
- ✅ A05 - Security Misconfiguration: Validación de HTTP Security Headers
- ✅ A06 - Vulnerable Components: Detección de librerías desactualizadas (jQuery, Bootstrap)
- ✅ A07 - Auth Failures: Credenciales débiles, fuerza bruta suave, gestión de sesiones
- ✅ A09 - Security Logging: Headers de logging, manejo de errores, monitoreo, audit logs
- ✅ A10 - SSRF: Parámetros de URL, IPs internas, esquemas peligrosos
- ✅ XSS Scanner: Reflected, Stored, DOM-based (extra, no es categoría Axx)
Mejoras Técnicas
- ✅ Multithreading: Escaneo paralelo con
concurrent.futures - ✅ Progress Bars: Barras de progreso con
tqdm - ✅ Chart.js Reports: Gráficos de severidad en reportes HTML
- ✅ Autenticación: Soporte para login automático en sitios protegidos
- ✅ Configuración centralizada: Clase
Configenapp/config.pycon variables de entorno - ✅ Modo DRY-RUN: Simulación sin ataques reales
- ✅ Rate Limiting: Control de velocidad para no saturar servidores
- ✅ Aviso Legal: Validación de permisos antes de escanear
- ✅ Arquitectura Modular: Fácil extensión con nuevos escáneres
- ✅ Reportes: Generación en JSON y HTML con resúmenes y gráficos
Roadmap de Desarrollo (Fases 1-6)
✅ Fase 1: Análisis de Requisitos (Completada)
- Documentación de requisitos (
DOCS/REQUISITOS.md,DOCS/ALCANCE.md)
✅ Fase 2: Diseño de Arquitectura (Completada)
- Arquitectura técnica (
DOCS/ARQUITECTURA.md,DOCS/ESTANDARES_CODIGO.md)
✅ Fase 3: Desarrollo MVP (Completada)
- Escáneres básicos: XSS, SQLi, Headers
- Gestión de sesiones y reportes
✅ Fase 4: Nuevos Escáneres OWASP (Completada)
- ✅ A01 - Broken Access Control (11 pruebas)
- ✅ A02 - Cryptographic Failures (10 pruebas)
- ✅ A06 - Vulnerable Components (8 pruebas)
- ✅ A07 - Auth Failures (10 pruebas)
- ✅ A10 - SSRF (9 pruebas)
✅ Fase 5: Mejoras Técnicas (Completada)
- ✅ Barras de progreso (tqdm)
- ✅ Multithreading (
concurrent.futures) - ✅ Gráficos Chart.js en reportes
- ✅ Configuración centralizada (
Configclass)
✅ Fase 6: Empaquetado y Distribución (95% completada)
- ✅ Empaquetado con
setup.pyypyproject.toml - ✅ Configuración de CI/CD (GitHub Actions)
- ✅ Manifest y
.env.exampledocumentados - ✅ Archivos profesionales:
SECURITY.md,CODE_OF_CONDUCT.md,CODEOWNERS - ✅ Configuración de desarrollo:
.pre-commit-config.yaml,tox.ini,Makefile - ✅ Plantillas GitHub: issues, PR, Dependabot
- 🔄 Publicar en PyPI (
pip install vulnlab-scanner) - pendiente configurarPYPI_API_TOKEN
Requisitos
- Python 3.8+
- pip
- Dependencias:
requests,colorama,python-dotenv,jinja2,tqdm
Instalación
Opción 1: Instalación desde PyPI (recomendada)
pip install vulnlab-scanner
Opción 2: Instalación desde código fuente (Desarrollo)
# 1. Clonar el repositorio
git clone https://github.com/FARLEY-PIEDRAHITA-OROZCO/vulnlab-scanner.git
cd vulnlab-scanner
# 2. Crear entorno virtual (recomendado)
python -m venv .venv
# 3. Activar entorno virtual
# Windows:
.\.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate
# 4. Instalar dependencias
pip install -r requirements.txt
# 5. Instalar en modo editable (para desarrollo)
pip install -e .
Configuración
Edita el archivo .env para personalizar la configuración (puedes copiar de .env.example):
# Configuración General
DEBUG=False
VERBOSE=False
# Configuración de HTTP
RATE_LIMIT=0.5
DEFAULT_TIMEOUT=10
USER_AGENT=VulnLabScanner/1.4.3
MAX_RETRIES=3
# Configuración de Autenticación
DEFAULT_LOGIN_PATHS=/login,/signin,/auth,/login.php
DEFAULT_BRUTE_FORCE_ATTEMPTS=3
DEFAULT_BRUTE_FORCE_PASSWORDS=123456,password,admin123,qwerty,letmein
# Configuración de Access Control
DEFAULT_ADMIN_PATHS=/admin,/administrator,/admin/users,/dashboard/admin
# Directorios
REPORTS_DIR=reports
Uso
Escaneo básico
python -m app.main -u http://ejemplo.com --all
Opciones disponibles
Uso: python -m app.main [OPCIONES]
Argumentos principales:
-u, --url URL URL del sitio a escanear (obligatorio si no usa --disclaimer)
-x, --xss Escanear vulnerabilidades XSS
-s, --sqli Escanear vulnerabilidades SQL Injection
-H, --headers Validar HTTP Security Headers
-A, --access-control Escanear Broken Access Control (A01)
-U, --auth Escanear Authentication Failures (A07)
-C, --vuln-components Escanear Vulnerable Components (A06)
-K, --crypto Escanear Cryptographic Failures (A02)
-R, --ssrf Escanear SSRF (A10)
-a, --all Ejecutar todos los escáneres
Autenticación:
--login-url URL URL de la página de login
--username USER Usuario para autenticación
--password PASS Contraseña para autenticación
--login-username-field NAME Campo usuario (default: username)
--login-password-field NAME Campo password (default: password)
Reportes:
--report-format FMT Formato: json, html, ambos (default: ambos)
--output-dir DIR Directorio de salida (default: ./reports)
Opciones adicionales:
--dry-run Simular sin ataques reales
--rate-limit SEC Segundos entre peticiones (default: 0.5)
--disclaimer Mostrar aviso legal y salir
--no-disclaimer Omitir aviso legal (no recomendado)
-v, --verbose Modo verbose
Ejemplos
Escaneo completo con autenticación:
python -m app.main -u http://juiceshop:3000 --all \
--login-url http://juiceshop:3000/#/login \
--username admin@juice-sh.op \
--password admin123
Solo verificar headers:
python -m app.main -u https://www.google.com --headers
Probar XSS en modo simulación:
python -m app.main -u "http://test.com/search?q=test" --xss --dry-run
Estructura del Proyecto
vulnlab-scanner/
├── app/
│ ├── __init__.py # Versión 1.4.2
│ ├── main.py # Punto de entrada principal
│ ├── cli.py # Argumentos CLI
│ ├── config.py # Configuración centralizada (Clase Config)
│ ├── core/
│ │ ├── http.py # Cliente HTTP con rate limiting
│ │ └── session.py # Gestión de sesiones y login
│ ├── scanner/
│ │ ├── base.py # Clase base abstracta BaseScanner
│ │ ├── xss.py # Escáner XSS
│ │ ├── sqli.py # Escáner SQL Injection
│ │ ├── headers.py # Validador de HTTP Security Headers
│ │ ├── access_control.py # Escáner A01 (Broken Access Control)
│ │ ├── auth.py # Escáner A07 (Auth Failures)
│ │ ├── components.py # Escáner A06 (Vulnerable Components)
│ │ ├── crypto.py # Escáner A02 (Cryptographic Failures)
│ │ └── ssrf.py # Escáner A10 (SSRF)
│ └── utils/
│ ├── logger.py # Salida coloreada
│ ├── helpers.py # Funciones auxiliares
│ ├── renderer.py # Formateo de resultados
│ ├── reporter.py # Generación de reportes JSON/HTML
│ ├── payloads.py # Payloads centralizados
│ └── disclaimer.py # Aviso legal
├── tests/ # Pruebas unitarias (114 pruebas)
├── docs/ # Documentación completa
├── reports/ # Reportes generados (no incluido en paquete)
├── .env.example # Ejemplo de configuración
├── requirements.txt # Dependencias de producción
├── requirements-dev.txt # Dependencias de desarrollo
├── setup.py # Configuración de empaquetado
├── pyproject.toml # Configuración moderna de build
├── MANIFEST.in # Control de archivos incluidos
├── Makefile # Tareas comunes (test, lint, format)
├── tox.ini # Configuración de pruebas multi-entorno
├── .pre-commit-config.yaml # Hooks de pre-commit
├── .editorconfig # Configuración de editor
├── SECURITY.md # Política de seguridad
├── CODE_OF_CONDUCT.md # Código de conducta
├── CODEOWNERS # Propietarios del código
├── CHANGELOG.md # Registro de cambios
├── CONTRIBUTING.md # Guía de contribución
├── README.md # Este archivo
└── LICENSE # Licencia MIT
Aviso Legal
Esta herramienta está diseñada exclusivamente para propósitos de seguridad ética.
Al usar VulnLab Scanner, declaras que:
- Solo escanearás sistemas para los cuales tienes autorización explícita
- No usarás la herramienta para actividades ilegales
- Eres responsable del uso que le des a los resultados
Para ver el aviso legal completo:
python -m app.main --disclaimer
Documentación
La documentación completa está en el directorio docs/:
docs/REQUISITOS.md- Requisitos del sistemadocs/ALCANCE.md- Alcance del proyectodocs/ARQUITECTURA.md- Arquitectura técnicadocs/ESTANDARES_CODIGO.md- Estándares de códigodocs/GUIA_USUARIO.md- Guía de usuariodocs/ROADMAP.md- Roadmap de desarrollodocs/PROGRESO.md- Estado actual de desarrollodocs/PROGRESO_ACTUAL.md- Progreso actual detallado
Pruebas
Para ejecutar las pruebas unitarias:
pytest tests/ -v
Cobertura actual: 154 pruebas (154 passed, 0 skipped)
Contribuciones
Las contribuciones son bienvenidas. Por favor lee:
CONTRIBUTING.mdantes de contribuirdocs/ESTANDARES_CODIGO.mdpara estándares de código- Seguir convenciones de commits:
tipo(ámbito): descripción en español - Ejecutar pruebas antes de cada commit:
make testopytest tests/ -v
Licencia
MIT License - Open Source
Contacto
- Proyecto: https://github.com/FARLEY-PIEDRAHITA-OROZCO/vulnlab-scanner
- Issues: https://github.com/FARLEY-PIEDRAHITA-OROZCO/vulnlab-scanner/issues
- Seguridad: security@vulnlab.com
Agradecimientos
Agradecemos a todos los contribuidores y a la comunidad OWASP por las referencias y metodologías.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vulnlab_scanner-1.5.0.tar.gz.
File metadata
- Download URL: vulnlab_scanner-1.5.0.tar.gz
- Upload date:
- Size: 55.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e564d136ed11f26a690abc445d24ecd2d6c38e17ff7052029f12fac47e51804e
|
|
| MD5 |
d62b821f3be855e2fd1bfbacd5eefff4
|
|
| BLAKE2b-256 |
c6332b85850a909057c8fea95ad05fad44b289e9d3c3daeee1bf2c148dd114a8
|
File details
Details for the file vulnlab_scanner-1.5.0-py3-none-any.whl.
File metadata
- Download URL: vulnlab_scanner-1.5.0-py3-none-any.whl
- Upload date:
- Size: 46.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
523748d8b534a4c49e306646348ad77e567c6b789b7493053cd5c1e7ee426170
|
|
| MD5 |
db7472fce94793f96508f3ca191cb52d
|
|
| BLAKE2b-256 |
0db4680e8349d7b49c98402ac21f2694e102a13b1cec413f2a870e1131f277ad
|