JS-CredentialScanner es una herramienta profesional de seguridad diseñada para auditores, pentesters y equipos de seguridad ofensiva. Realiza análisis exhaustivo de archivos JavaScript en aplicaciones web para identificar información sensible, credenciales filtradas, tokens de API y configuraciones de seguridad expuestas.
- Análisis en 3 Fases: Búsqueda estática, dinámica (Selenium) y análisis de patrones
- Detección de 30+ patrones de seguridad críticos
- Alto rendimiento: Procesamiento asíncrono masivo con hasta 50 conexiones concurrentes
- Clasificación por severidad: Alta, Media y Baja
- Sin duplicados: Sistema inteligente de eliminación de URLs y patrones repetidos
- Thread-safe: Operaciones seguras en entornos multi-hilo
-
Fase 1 - Búsqueda Estática
- Extracción de archivos JS mediante parsing HTML
- Procesamiento paralelo con ThreadPoolExecutor
- Soporte para 30 workers concurrentes
-
Fase 2 - Búsqueda Dinámica
- Renderizado con Selenium + ChromeDriver
- Extracción desde Network Performance Logs
- Detección de JS cargados dinámicamente
- Scroll automático para trigger de lazy loading
-
Fase 3 - Análisis de Patrones
- Procesamiento asíncrono con aiohttp
- 50 conexiones HTTP concurrentes
- Análisis de contenido con 30+ patrones regex
git clone https://github.com/LorDCristhian/JS-CredentialScanner.git
cd JS-CredentialScannerpip install -r requirements.txtEn sistemas Linux (si es necesario):
pip install -r requirements.txt --break-system-packagesgoogle-chrome --version
# O en macOS:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --versionsubfinder -dL dominios_proof.txt -silent | httprobe -prefer-https | tee urls.txt
Donde:
1. dominios_proof.txt contiene la lista de dominios que serán analizados.
2. urls.txt es el archivo resultante que almacenará las direcciones activas, las cuales serán empleadas posteriormente por el programa para la búsqueda de archivos JavaScript y la detección de patrones.
python JS-CredentialScanner.pyIdeal para: Auditorías completas desde cero
Proceso:
URLs de entrada → Búsqueda estática → Búsqueda dinámica → Análisis de patrones
Archivo de entrada: url.txt (una URL por línea)
Ejemplo de url.txt:
https://example.com
https://target-site.com/app
https://api.company.com
Salidas:
checar.txt- Lista de todos los archivos JS encontrados (sin duplicados)resultados_detallados.json- Hallazgos con severidad y contexto
Ideal para: Análisis rápido de archivos JS conocidos
Proceso:
Archivo JS → Análisis de patrones → Resultados
Archivo de entrada: Archivo con URLs de archivos JS
Ejemplo:
https://site.com/static/app.min.js
https://site.com/assets/bundle.js
https://cdn.example.com/libs/auth.js
| Patrón | Descripción | Impacto |
|---|---|---|
| AWS Access Key ID | AKIA[0-9A-Z]{16} |
Acceso a infraestructura AWS |
| AWS Secret Access Key | Claves secretas de AWS | Compromiso total de cuenta |
| Azure Storage Account Key | Claves de almacenamiento Azure | Acceso a blobs y archivos |
| Token JWT | Tokens de autenticación | Suplantación de identidad |
| Authorization Headers | Basic/Bearer tokens | Acceso no autorizado |
| Passwords Hardcoded | Contraseñas en código | Compromiso de cuentas |
| Azure Client Secret | Secretos de aplicación | Acceso a recursos Azure |
| Azure SAS Token | Tokens de acceso compartido | Acceso temporal a recursos |
| Patrón | Descripción | Impacto |
|---|---|---|
| GitHub Access Token | ghp_, gho_, ghu_, ghs_ |
Acceso a repositorios |
| Generic Secret Base64 | Secretos codificados | Posible exposición de credenciales |
| Azure Container Registry | URLs de registros | Acceso a imágenes Docker |
| Azure KeyVault URIs | URIs de secretos | Ubicación de secretos |
| Patrón | Descripción | Impacto |
|---|---|---|
| Google API Key | Claves de API pública | Uso no autorizado de servicios |
| Base64 Text | Texto codificado | Posible información sensible |
| Azure Authority URLs | Endpoints de autenticación | Información de configuración |
| Host | Subdominios internos | Descubrimiento de activos |
- Se pueden añadir nuevas expresiones regulares dentro de la función precompilar_patrones, la cual gestiona los patrones utilizados durante el análisis.
- Es posible incluir dominios adicionales que deban ser excluidos del proceso, realizando su incorporación en la función es_dominio_excluido.
- El rendimiento del análisis puede optimizarse ajustando los parámetros definidos en la clase Config.
Las contribuciones son bienvenidas:
- Fork el proyecto desde github.com/LorDCristhian/JS-CredentialScanner
- Crea una rama para tu feature (
git checkout -b feature/NuevaFuncionalidad) - Commit tus cambios (
git commit -m 'Agregada nueva funcionalidad') - Push a la rama (
git push origin feature/NuevaFuncionalidad) - Abre un Pull Request
