
Increíblemente rápido rastreador de respuestas para encontrar cosas jugosas en el código fuente! 😎🔥
Entornos probados: Windows, Mac, Linux y Subsistema de Windows para Linux (WSL)
Apoya este proyecto convirtiéndote en patrocinador. Echa un vistazo a estos increíbles patrocinadores:
Oxylabs ofrece proxies premium con más de 100 millones de IPs en 195 países y APIs de Scraper listas para usar. Puedes usar este código promocional único boost35 para obtener un 35% de descuento en proxies Residenciales, Móviles, Web Unblocker y Scraper APIs.
Rastrear respuestas para encontrar endpoints ocultos, ya sea enviando solicitudes o desde archivos de respuesta locales (si los hay).
Crear una lista de variables de JavaScript encontradas en el código fuente.
Extraer todos los enlaces de redes sociales de los sitios web para identificar enlaces potencialmente rotos.
Fuerza bruta de host usando una lista de palabras.
Obtener los códigos de estado para una lista de URLs / Filtrar los dominios activos de una lista de hosts.
Todas las funciones mencionadas anteriormente se ejecutan a gran velocidad.
SourceWolf usa el módulo Session de la biblioteca requests, lo que significa que reutiliza la conexión TCP, haciéndolo realmente rápido.
SourceWolf te ofrece la opción de rastrear los archivos de respuesta localmente para que no estés enviando solicitudes nuevamente a un endpoint del cual ya tienes una copia de la respuesta.
Los endpoints finales están en una forma completa con un host como https://example.com/api/admin, no como /api/admin. Esto puede ser útil cuando estás escaneando una lista de hosts.
> python3 sourcewolf.py -h
-l LIST, --list LIST Lista de URLs de JavaScript
-u URL, --url URL URL única
-t THREADS, --threads THREADS
Número de hilos concurrentes a usar (por defecto 5)
-o OUTPUT_DIR, --output directory-name OUTPUT_DIR
Almacenar el texto de respuesta de la URL en un directorio para análisis posterior
-s STATUS_CODE_FILE, --store-status-code STATUS_CODE_FILE
Almacenar el código de estado en un archivo
-b BRUTE, --brute BRUTE
Forzar URL con la palabra clave FUZZ (--wordlist también debe usarse junto con esto)
-w WORDLIST, --wordlist WORDLIST
Lista de palabras para forzar la URL
-v, --verbose Modo verbose (muestra todas las solicitudes que se envían)
-c CRAWL_OUTPUT, --crawl-output CRAWL_OUTPUT
Directorio de salida para almacenar el resultado del rastreo
-d DELAY, --delay DELAY
Retraso en las solicitudes (en segundos)
--timeout TIMEOUT Tiempo máximo de espera para que se agote el tiempo de conexión (en segundos)
--headers HEADERS Agregar encabezados personalizados (Debe pasarse como {'Token': 'YOUR-TOKEN-HERE'}) --> Formato de diccionario
--cookies COOKIES Agregar cookies (Debe pasarse como {'Cookie': 'YOUR-COOKIE-HERE'}) --> Formato de diccionario
--only-success Solo imprimir respuestas 2XX
--local LOCAL Directorio con archivos de respuesta locales para rastrear
--no-colors Eliminar colores de la salida
--update-info Verificar la última versión y actualizar si es necesario
Uso completo:
python3 sourcewolf.py -l domains -o output/ -c crawl_output
domains es la lista de URLs que quieres rastrear en el formato:
https://example.com/
https://exisiting.example.com/
https://exisiting.example.com/dashboard
https://example.com/hitme
output/ es el directorio donde se almacenan los archivos de texto de respuesta del archivo de entrada.
Se almacenan en el formato output/2XX, output/3XX, output/4XX y output/5XX.
output/2XX almacena respuestas con código de estado 2XX, ¡y así sucesivamente!
crawl_output especificado mediante la bandera -c se utiliza para almacenar la salida, dentro de un directorio que SourceWolf produce al rastrear los archivos de respuesta HTTP, almacenados dentro del directorio output/ (actualmente solo endpoints)
El directorio crawl_output/ contiene:
endpoints - Todos los endpoints encontrados
jsvars - Todas las variables de JavaScript
El directorio tendrá más archivos a medida que se integren más módulos y funcionalidades en SourceWolf.
(O)
Para una sola URL,
python3 sourcewolf.py -u example.com/api/endpoint -o output/ -c crawl_output
Solo la bandera -l se reemplaza por -u, todo lo demás permanece igual.
python3 sourcewolf.py -b https://hackerone.com/FUZZ -w /path/to/wordlist -s status
La bandera -w es opcional. Si no se especifica, usará una lista de palabras predeterminada con 6124 palabras.
SourceWolf reemplaza la palabra clave FUZZ del valor de -b con las palabras de la lista de palabras y envía las solicitudes. Esto te permite forzar también los valores de los parámetros GET.
-s almacenará la salida en un archivo llamado status.
Captura de pantalla no incluida ya que la salida es similar al modo
crawl response.
python3 sourcewolf -l domains -s live
El archivo domains puede contener cualquier cosa como subdominios, endpoints, archivos js.
La bandera -s escribe la respuesta en el archivo live.
Tanto el modo de fuerza bruta como el modo de sondeo imprimen todos los códigos de estado excepto 404 por defecto. Puedes personalizar este comportamiento para imprimir solo respuestas
2XXusando la bandera--only-success.
SourceWolf también utiliza subprocesamiento múltiple.
El número predeterminado de hilos para todos los modos es 5. Puedes aumentar el número de hilos usando la bandera -t.
Además de los tres modos anteriores, hay una opción para rastrear localmente, siempre que los tengas localmente y sigas las convenciones de nombres compatibles con SourceWolf.
Almacena todas las respuestas en un directorio, por ejemplo responses/
python3 sourcewolf.py --local responses/
Esto rastreará el directorio local y te dará los resultados.
Enumeración de subdominios
|
|
SourceWolf
|
|
Filtrar subdominios activos
|
|
Almacenar respuestas y encontrar endpoints ocultos / Fuerza bruta de directorios
En este punto, tendrás muchos endpoints del objetivo, extraídos en tiempo real de las páginas web en el momento de realizar el escaneo.
El propósito principal de SourceWolf se creó con una visión más amplia: rastrear las respuestas no solo para descubrir endpoints ocultos, sino también para automatizar todas las tareas que se realizan buscando manualmente en los archivos de respuesta.
Un ejemplo de ello sería buscar manualmente cualquier clave filtrada en el código fuente.
Este propósito central explica la forma modular en que están escritos los archivos.
Es posible actualizar SourceWolf directamente desde la terminal, sin tener que clonar el repositorio nuevamente.
SourceWolf busca actualizaciones cada vez que se ejecuta y notifica al usuario si hay alguna actualización disponible junto con un resumen de la misma.
Ejecutando
python3 sourcewolf.py --update-info
proporciona más detalles sobre la actualización
Cuando haya actualizaciones disponibles, debes mover el archivo update.py fuera del directorio SourceWolf y ejecutar
Advertencia: Esto elimina todos los archivos y carpetas dentro de tu directorio SourceWolf
python3 update.py /path/to/SourceWolf
Esto realmente elimina el directorio y vuelve a clonar el repositorio.
Actualmente, SourceWolf solo admite encontrar endpoints ocultos del código fuente, pero puedes esperar que se integren otras funcionalidades en el futuro.
¿Dónde puedes contribuir?
Se requieren contribuciones principalmente para integrar más módulos con SourceWolf, aunque siéntete libre de abrir un PR incluso si es una errata.
Antes de enviar un pull request, asegúrate de estar en la última versión.
¡Abre un issue primero si vas a agregar una nueva característica para confirmar si es necesaria! No debes perder tiempo intentando codificar una característica nueva que no es necesaria.
No dudes en abrir cualquier problema que enfrentes.
Asegúrate de incluir tu sistema operativo, el comando que se ejecutó y capturas de pantalla si es posible al abrir un issue, lo que me facilitará reproducir el problema.
También puedes solicitar nuevas funcionalidades o mejorar las existentes abriendo un issue.
Para rastrear los archivos localmente, debes seguir algunas convenciones de nombres. Estas convenciones están establecidas para que SourceWolf identifique directamente el nombre del host y, por lo tanto, analice todos los endpoints, incluidos los relativos.
Considera una URL https://example.com/api/
example.com/apiexample.com@apiPor lo que el archivo finalmente se ve así: [email protected]
Logo diseñado por Murugan artworks
SourceWolf usa la licencia MIT