La herramienta jsluice es una solución desarrollada en Go diseñada para realizar análisis estático sobre archivos JavaScript. Su propósito principal es identificar y extraer URLs, rutas de archivos, credenciales expuestas y otros datos sensibles que pueden estar embebidos en el código fuente.
Organización del Repositorio
El proyecto mantiene una estructura modular que separa la lógica de análisis, los patrones de búsqueda y la interfaz de línea de comandos. A continuación se detalla la función de los directorios principales:
cmd/jsluice/: Contiene el punto de entrada de la aplicación CLI.analyzer/: Núcleo del motor de análisis donde se procesa el árbol sintáctico.secret-matchers/: Conjunto de reglas para localizar claves de API y tokens (AWS, GitHub, GCP, etc.).url-matchers/: Definiciones para identificar rutas y puntos de enlace, incluyendo soporte para librerías como jQuery o llamadas XHR.maybeurl/: Lógica específica para validar si una cadena de texto puede ser interpretada como una URL.tree/: Utilidades para la manipulación y recorrido de la estructura de nodos del código fuente.
Punto de Entrada del Programa
La ejecución de la herramienta comienza en el archivo main.go ubicado dentro del directorio de comandos. El diseño delega la lógica de ejecución al paquete interno de la aplicación:
package main
import (
"github.com/BishopFox/jsluice/cmd/jsluice"
)
// Inicia el proceso de escaneo llamando al ejecutor principal
func main() {
jsluice.Run()
}
La función Run() se encarga de gestionar la lectura de los argumentos proporcionados por el usuario, cargar los analizadores necesarios y presentar los resultados en el formato solicitado.
Uso y Configuración mediante CLI
A diferencia de otras herramientas que requieren archivos YAML o JSON para su configuración, jsluice opera dinámicamenet mediante modificadores de línea de comandos (flags). Esto permite integrar la herramienta fácilmente en flujos de CI/CD o pipelines de reconocimiento.
Para instalar la herramienta en un entorno local con Go configurado, se utiliza el siguiente comando:
go install github.com/BishopFox/jsluice/cmd/jsluice@latest
Una vez instalado, el análisis básico de un archivo se realiza de la siguiente manera:
# Análisis básico para extraer URLs de un script específico
jsluice urls archivo_fuente.js
# Búsqueda de secretos (claves de API, tokens) en un archivo
jsluice secrets -ignore-strings script_produccion.js
El comportamiento del escáner puede ajustarse activando o desactivando "matchers" específicos según el contexto del análisis, lo que optmiiza el rendimiento al evitar búsquedas innecesarias en archivos de gran tamaño.