francovillagra/web-vulnerability-scanner
GitHub: francovillagra/web-vulnerability-scanner
Stars: 0 | Forks: 0
# 🛡️ Web Vulnerability Scanner
Una herramienta web para detectar vulnerabilidades de seguridad en sitios web. Analiza headers HTTP, certificados SSL, cookies, redirecciones y más — sin necesidad de registro ni instalación.
🔗 **[Demo en vivo](https://web-vulnerability-scanner-red.vercel.app)**

## ✨ Funcionalidades
### 🔍 Detección de vulnerabilidades
- **SSL/TLS** — Valida certificados: detecta certificados inválidos, vencidos o con cadena incompleta
- **Security Headers** — Verifica la presencia de headers críticos:
- `Content-Security-Policy` (CSP)
- `Strict-Transport-Security` (HSTS)
- `X-Frame-Options`
- `X-Content-Type-Options`
- `Permissions-Policy`
- **Cookies inseguras** — Detecta cookies sin flags `Secure`, `HttpOnly` o `SameSite`
- **Information Disclosure** — Identifica comentarios HTML, versiones expuestas en headers y stack traces
- **Open Redirect** — Detecta redirecciones abiertas que pueden ser explotadas
- **Server Info Disclosure** — Detecta headers `Server` y `X-Powered-By` con información sensible
### 📊 Dashboard visual
- Gráfico de dona con distribución por severidad (Crítico / Alto / Medio / Bajo)
- Cards con contadores animados por nivel de severidad
- Lista detallada de vulnerabilidades con descripción y recomendación
- Historial de scans guardado en `localStorage` (últimos 20)
- Exportar reporte completo en formato **JSON**
### 🔒 Seguridad del scanner
- Prevención de **SSRF** (bloquea localhost, IPs privadas y metadata endpoints de cloud)
- Validación de URL con protocolo requerido (`http://` o `https://`)
- Manejo robusto de errores: timeout, SSL inválido, DNS, unreachable
## 🛠️ Stack tecnológico
| Tecnología | Uso |
|------------|-----|
| **Next.js 16** | Framework fullstack con App Router |
| **React 19** | UI con hooks y componentes funcionales |
| **TypeScript** | Tipado estático en todo el proyecto |
| **Tailwind CSS 4** | Estilos utilitarios |
| **Axios** | HTTP requests con soporte avanzado de SSL |
| **Cheerio** | Parsing de HTML para análisis de contenido |
| **Zod** | Validación de schemas y inputs |
| **date-fns** | Formateo de fechas en el historial |
| **Recharts** | Gráfico de dona para distribución de severidades |
| **Vercel** | Deploy y hosting en producción |
## 🚀 Demo
Accedé a la demo en vivo sin registro:
**[https://web-vulnerability-scanner-red.vercel.app](https://web-vulnerability-scanner-red.vercel.app)**
### Sitios de prueba recomendados:
- `https://example.com` — Sitio simple con vulnerabilidades básicas
- `https://google.com` — Sitio real con buenas prácticas
- `https://github.com` — Sitio con headers de seguridad robustos
- `http://testphp.vulnweb.com` — Sitio inseguro diseñado para testing ⚠️
## 💻 Correr localmente
### Prerequisitos
- Node.js 18+
- npm o yarn
### Instalación
# 1. Clonar el repositorio
git clone https://github.com/francovillagra/web-vulnerability-scanner.git
cd web-vulnerability-scanner
# 2. Instalar dependencias
npm install
# 3. Crear archivo de variables de entorno
cp .env.example .env.local
# No se requieren variables de entorno para el scanner básico
# 4. Correr en modo desarrollo
npm run dev
Abrí [http://localhost:3000](http://localhost:3000) en tu browser.
### Build de producción
npm run build
npm start
## 📁 Estructura del proyecto
web-vulnerability-scanner/
├── app/
│ ├── page.tsx # Página principal con el scanner
│ └── api/
│ └── scan/
│ └── route.ts # Endpoint del scanner
├── components/
│ ├── ScanHistory.tsx # Historial de scans
│ └── ExportButton.tsx # Exportar reporte JSON
├── lib/
│ ├── scanner.ts # Lógica principal del scanner
│ └── validations.ts # Schemas de validación con Zod
└── public/
└── screenshot.png # Screenshot para el README
## 🔐 Consideraciones de seguridad
Este scanner está diseñado para uso **ético y responsable**:
- ✅ Usalo solo en sitios de tu propiedad o con autorización explícita
- ✅ El scanner no guarda datos en servidores — todo el historial es local (localStorage)
- ✅ Prevención de SSRF implementada para bloquear acceso a redes internas
- ❌ No usar para escanear sitios sin autorización
## 📈 Roadmap
- [ ] Detección de XSS reflejado
- [ ] Detección de SQL Injection
- [ ] Autenticación con historial en la nube
- [ ] API pública con rate limiting
- [ ] Reportes en PDF
- [ ] Modo CLI
## 👨💻 Autor
**Franco Villagra**
- Portfolio: [francoverse.vercel.app](https://francoverse.vercel.app)
- GitHub: [@francovillagra](https://github.com/francovillagra)
## 📄 Licencia
MIT — libre para usar, modificar y distribuir.
标签:自动化攻击