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, diseñada para automatizar pruebas de seguridad de manera modular, fácil de instalar y usar.
Estado Actual del Proyecto
Versión: 1.4.0 (Fase 6 en progreso)
Cobertura OWASP Top 10 (2021): 7/10 (70%) + XSS extra
Pruebas: 114 pasando (100%)
Licencia: MIT (Open Source)
🚀 Características Implementadas ✅
Escáneres OWASP
- ✅ 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
- ✅ 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
- ✅ 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: Valores configurables vía
.env(login paths, credenciales, rutas admin) - ✅ 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
Roadmap de Desarrollo (Fases 4-6)
Fase 4: Nuevos Escáneres OWASP (Completada)
- ✅ A01 - Broken Access Control: IDOR, escalación de privilegios
- ✅ A02 - Cryptographic Failures: HTTPS faltante, cookies sin Secure, credenciales en URL
- ✅ A06 - Vulnerable Components: Detección de librerías (SCA)
- ✅ A07 - Auth Failures: Fuerza bruta suave, sesiones débiles
- ✅ A10 - SSRF: Parámetros de URL, IPs internas, esquemas peligrosos
- ✅ A03 - SQL Injection: Error-based, Boolean-based
- ✅ A05 - Security Misconfiguration: Validación de HTTP Security Headers
Fase 5: Mejoras Técnicas (80% completada)
- ✅ Barras de progreso (tqdm)
- ✅ Multithreading para escaneo paralelo
- ✅ Mejorar reportes (gráficos Chart.js)
- ✅ Valores configurables en
app/config.py - ✅ A02 - Cryptographic Failures implementado (10 pruebas)
- ✅ A10 - SSRF implementado (9 pruebas)
- 🔄 Interfaz web básica (FastAPI/Flask)
Fase 6: Empaquetado y Distribución (80% completada)
- ✅ Empaquetado con
setup.pyypyproject.toml - ✅ Configuración de CI/CD con GitHub Actions (
.github/workflows/) - ✅ Manifest y
.env.exampledocumentados - 🔄 Publicar en PyPI (
pip install vulnlab-scanner) - pendiente configurarPYPI_API_TOKEN - 🔄 Generar comunidad inicial
Próximos Escáneres OWASP (para llegar a 8/10)
- ✅ A02 - Cryptographic Failures: Detectar HTTPS faltante, TLS obsoleto, cookies sin Secure
- ✅ A10 - SSRF: Probar parámetros de URL (
?url=,?redirect=) - 🔄 A08 - Software Integrity Failures (opcional, complejo)
Objetivo actual: Llegar a 8/10 en funcionalidad profesional (actualmente 7/10 OWASP + XSS)
¡Documentación actualizada al día! ✅
Requisitos
- Python 3.8+
- pip
Instalación
Opción 1: Instalación desde PyPI (cuando esté publicado)
pip install vulnlab-scanner
Opción 2: Instalación Manual (Desarrollo)
# 1. Clonar el repositorio
git clone https://github.com/FARLEY-PIEDRAHITA-OROZCO/vulnlab-scanner.git
cd vulnlab-scanner
# 2. Crear entorno virtual
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
Opción 3: Script Automático
python install.py
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.0
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)
-x, --xss Escanear vulnerabilidades XSS
-s, --sqli Escanear vulnerabilidades SQL Injection
-H, --headers Validar HTTP Security Headers
-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)
--report-output 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
-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/
│ ├── main.py # Punto de entrada
│ ├── cli.py # Argumentos CLI
│ ├── config.py # Configuración centralizada (Clase Config)
│ ├── core/
│ │ ├── http.py # Cliente HTTP
│ │ └── session.py # Gestión de sesiones
│ ├── scanner/
│ │ ├── base.py # Clase base abstracta
│ │ ├── xss.py # Escáner XSS
│ │ ├── sqli.py # Escáner SQLi
│ │ ├── headers.py # Validador de headers
│ │ ├── access_control.py # Escáner A01 (Access Control)
│ │ ├── auth.py # Escáner A07 (Auth Failures)
│ │ └── components.py # Escáner A06 (Vulnerable Components)
│ └── utils/
│ ├── logger.py # Salida coloreada
│ ├── helpers.py # Funciones auxiliares
│ ├── renderer.py # Formateo de resultados
│ ├── reporter.py # Generación de reportes
│ ├── payloads.py # Payloads centralizados
│ └── disclaimer.py # Aviso legal
├── tests/ # Pruebas unitarias (114 pruebas)
├── reports/ # Reportes generados (no incluido en paquete)
├── .env.example # Ejemplo de configuración
├── requirements.txt
├── setup.py
├── pyproject.toml
├── MANIFEST.in
├── README.md
├── CHANGELOG.md
├── CONTRIBUTING.md
└── LICENSE
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/ (si existe):
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- Futuras mejorasDOCS/PROGRESO.md- Estado actual de desarrollo
Pruebas
Para ejecutar las pruebas unitarias:
pytest tests/ -v
Cobertura actual: 114 pruebas (100% pasando)
Contribuciones
Las contribuciones son bienvenidas. Por favor lee:
DOCS/ESTANDARES_CODIGO.mdantes de contribuir- Seguir convenciones de commits:
tipo(ámbito): descripción en español - Ejecutar pruebas antes de cada commit
Licencia
MIT License - Open Source
Estado de Desarrollo
| Fase | Descripción | Estado |
|---|---|---|
| Fase 1 | Análisis de Requisitos | ✅ Completada |
| Fase 2 | Diseño de Arquitectura | ✅ Completada |
| Fase 3 | Desarrollo (MVP) | ✅ Completada |
| Fase 4 | Nuevos Escáneres OWASP | ✅ Completada |
| Fase 5 | Mejoras Técnicas | 🔄 En progreso (80%) |
| Fase 6 | Empaquetado y Distribución | 🔄 En progreso (90%) |
| Fase 6 | Empaquetado y Distribución | 🔄 En progreso (80%) |
Siguiente hito: Publicar en PyPI (configurar PYPI_API_TOKEN) - ¡Ya implementados A02 y A10!
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.4.1.tar.gz.
File metadata
- Download URL: vulnlab_scanner-1.4.1.tar.gz
- Upload date:
- Size: 46.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f5766c4044f88c6dc2d1f0a7705a8edf95b48d61de14f9f0596ef0230e2ffa6
|
|
| MD5 |
51af5f7e878d4bb83f6dc28e3300aff8
|
|
| BLAKE2b-256 |
020bd0c1012d1fc668b1201fc8734a986af5c79f15fa65414e64563866756106
|
File details
Details for the file vulnlab_scanner-1.4.1-py3-none-any.whl.
File metadata
- Download URL: vulnlab_scanner-1.4.1-py3-none-any.whl
- Upload date:
- Size: 39.8 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 |
1803911a661a5ff3d214343ff7a15d7ca9e2e8ae7b714850eb6efd0616d60da7
|
|
| MD5 |
96adda329bde36d9823b0a92845fe93c
|
|
| BLAKE2b-256 |
faaf4c923e02b481c3c40c2ee1772b95793b6fb2bae3b50424bc4a7063a9b9a1
|