in

Un potente rastreador de navegador para escáneres de vulnerabilidades web




crawlergo es un rastreador de navegador que chrome headless Modo de recopilación de URL. Integra posiciones clave de todo el sitio web con la fase de representación DOM, llena y envía automáticamente formularios con activación inteligente de eventos JS y recopila tantas entradas como sea posible del sitio web. El motor de deduplicación de URL incorporado filtra una gran cantidad de URL pseudoestáticas, pero aún mantiene altas velocidades de análisis y rastreo para sitios web grandes y, en última instancia, recibe una colección de resultados de consultas de alta calidad.

crawlergo actualmente admite las siguientes funciones:

  • Representación del entorno del navegador Chrome
  • Relleno inteligente de formularios, envío automático
  • Colección completa de eventos DOM con activación automática
  • Desduplicación de URL inteligente para eliminar la mayoría de las solicitudes duplicadas
  • Análisis inteligente de páginas web y recopilación de URL, incluido el contenido de archivos Javascript, comentarios de página, archivos robots.txt y fuzz automático de rutas comunes
  • Admite enlace de host, reparación automática y agrega referencias
  • Apoyar el proxy de solicitud del navegador
  • Apoyar la difusión de los resultados a los escáneres de vulnerabilidades web pasivos.

instalación

Por favor lea y confirme Descargo de responsabilidad cuidadosamente antes de la instalación y el uso。

Construir

cd crawlergo/cmd/crawlergo
go build crawlergo_cmd.go
  1. crawlergo solo se basa en el entorno de Chrome para descargar la nueva versión de Chromium o simplemente haga clic para descargar la versión 79 de Linux.
  2. Vaya a la página de descarga de la última versión de crawlergo y extráigala en cualquier directorio. Si está utilizando Linux o macOS, ingrese crawlergo permisos ejecutables (+ x).
  3. O puede modificar el código y crearlo usted mismo.

Si está utilizando un sistema Linux y Chrome le indica que faltan dependencias, consulte la solución de problemas a continuación.

Inicio rápido

¡Ir!

Por ejemplo, suponga que su directorio de instalación de Chromium es /tmp/chromium/, configure 10 pestañas abiertas al mismo tiempo y arrastre el testphp.vulnweb.com:

./crawlergo -c /tmp/chromium/chrome -t 10 http://testphp.vulnweb.com/

Usa proxy

./crawlergo -c /tmp/chromium/chrome -t 10 --request-proxy socks5://127.0.0.1:7891 http://testphp.vulnweb.com/

Llamar a Crawlergo con Python

De forma predeterminada, crawlergo imprime los resultados directamente en la pantalla. A continuación, configuramos el modo de salida. json, y el código de muestra para llamarlo con Python es el siguiente:

#!/usr/bin/python3
# coding: utf-8

import simplejson
import subprocess

def main():
target = "http://testphp.vulnweb.com/"
cmd = ["./crawlergo", "-c", "/tmp/chromium/chrome", "-o", "json", target]
rsp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = rsp.communicate()
# "--[Mission Complete]--" is the end-of-task separator string
result = simplejson.loads(output.decode().split("--[Mission Complete]--")[1])
req_list = result["req_list"]
print(req_list[0])

if __name__ == '__main__':
main()

Resultados de rastreo

Cuando el modo de salida es. Está establecido json, el resultado devuelto después de la deserialización JSON contiene cuatro partes:

  • all_req_list: Todas las solicitudes encontradas durante esta tarea de rastreo que contengan cualquier tipo de recurso de otros dominios.
  • req_list: Devuelve el resultados del dominio actual esta tarea de rastreo, deduplicada pseudoestáticamente, sin enlaces de recursos estáticos. Es un subconjunto de all_req_list .
  • all_domain_list: Lista de todos los dominios encontrados.
  • sub_domain_list: Lista de subdominios encontrados.

Ejemplos de

crawlergo devuelve la solicitud completa y la URL que se pueden utilizar de varias formas:

  • Se utiliza junto con otros escáneres pasivos de vulnerabilidades web.

    Primero inicie un escáner pasivo y configure la dirección de escucha en: http://127.0.0.1:1234/

    Suponiendo que crawlergo está en la misma computadora que el escáner, inicie crawlergo y configure los parámetros:

    --push-to-proxy http://127.0.0.1:1234/

  • Enlace de host (no disponible para la versión superior de Chrome) (ejemplo)

  • Cookies personalizadas (ejemplo)

  • Limpiar regularmente los procesos zombies generados por crawlergo (ejemplo), contribuido por @ ring04h

Omitir la detección sin cabeza

crawlergo puede omitir la detección del modo sin cabeza de forma predeterminada.

https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html

Solución de problemas

  • No se encontró «Fetch.enable»

    Fetch es una función compatible con la nueva versión de Chrome. Si encuentra este error, significa que su versión es demasiado baja. Actualiza la versión de Chrome.

  • Chrome se ejecuta con dependencias faltantes como xxx.so

    // Ubuntu
    apt-get install -yq --no-install-recommends
    libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3
    libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4
    libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1
    libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3

    // CentOS 7
    sudo yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64
    libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64
    ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y

    sudo yum update nss -y

  • Ejecutar el símbolo del sistema Tiempo de espera de navegación / Navegador no encontrado / No lo sé correctamente ruta ejecutable del navegador

    Asegúrese de que la ruta ejecutable del navegador esté configurada correctamente, ingrese lo siguiente: chrome://version en la barra de direcciones y busque la ruta del archivo ejecutable:

parámetro

Parámetros requeridos

  • --chromium-path Path, -c Path La ruta al ejecutable de Chrome. (Necesario)

Parametros basicos

  • --custom-headers Headers Ajusta el encabezado HTTP. Pase los datos después de la serialización JSON, esto se define globalmente y se usa para todas las solicitudes. (Predeterminado: nulo)
  • --post-data PostData, -d PostData Publicar datos. (Predeterminado: nulo)
  • --max-crawled-count Number, -m Number El número máximo de tareas para que los rastreadores eviten tiempos de rastreo prolongados debido a la pseudoestática. (Predeterminado: 200)
  • --filter-mode Mode, -f Mode Modo de filtro, simple: Solo se filtran los recursos estáticos y las solicitudes duplicadas. smart: con la capacidad de filtrar pseudoestáticamente. strict: reglas más estrictas para el filtrado pseudoestático. (Predeterminado: inteligente)
  • --output-mode value, -o value Modo de salida de resultados, console: Imprima los resultados glorificados directamente en la pantalla. json: Imprime la cadena serializada Json de todos los resultados. none: No imprime la salida. (Estándar: consola)
  • --output-json filepath Después de la serialización JSON, escriba el resultado en el archivo especificado. (Predeterminado: nulo)
  • --request-proxy proxyAddress Dirección proxy de Socks5, todas las solicitudes de red de Crawlergo y el navegador Chrome se envían a través del proxy. (Predeterminado: nulo)

Expandir URL de entrada

  • --fuzz-path Utilice el diccionario incorporado para la búsqueda de rutas. (Predeterminado: falso)
  • --fuzz-path-dict Ajuste la ruta de fuzz pasando una ruta de archivo de diccionario, por ejemplo, /home/user/fuzz_dir.txt, cada línea del archivo representa una ruta de fuzzing. (Predeterminado: nulo)
  • --robots-path Resuelva la ruta del archivo /robots.txt. (Predeterminado: falso)

Complete el formulario automáticamente

  • --ignore-url-keywords, -iuk La palabra clave de URL que no desea visitar se usa generalmente para excluir enlaces de cancelación de suscripción al personalizar las cookies. Propósito de uso: -iuk logout -iuk exit. (Predeterminado: «Cerrar sesión», «Salir», «Salir»)
  • --form-values, -fv Ajuste el valor del formulario, que se establece por tipo de texto. Tipos de definición admitidos: estándar, correo, código, teléfono, nombre de usuario, contraseña, QQ, ID_Card, URL, fecha y número. Los tipos de texto se identifican mediante las cuatro palabras clave de valor de atributo id, name, class, type de la etiqueta del campo de entrada. Por ejemplo, defina que el campo de entrada del buzón se rellene automáticamente con A y el campo de entrada de contraseña automáticamente con B, -fv mail=A -fv password=BPor lo que por defecto representa el valor de relleno, si no se reconoce el tipo de texto, como «Cralwergo». (Estándar: Cralwergo)
  • --form-keyword-values, -fkv Ajuste el valor del relleno del formulario, que está determinado por la concordancia aproximada de la palabra clave. La palabra clave corresponde a los cuatro valores de atributo de id, name, class, type de la etiqueta del campo de entrada. Coincidencia aproximada, por ejemplo, la palabra clave de contraseña para completar 123456 y la palabra clave de usuario para completar admin, -fkv user=admin -fkv pass=123456. (Estándar: Cralwergo)

Configuración avanzada para el proceso de rastreo

  • --incognito-context, -i El navegador inicia el modo incógnito. (Predeterminado: verdadero)
  • --max-tab-count Number, -t Number El número máximo de pestañas que el rastreador puede abrir al mismo tiempo. (Predeterminado: 8)
  • --tab-run-timeout Timeout Tiempo de ejecución máximo para una sola pestaña. (Predeterminado: 20 s)
  • --wait-dom-content-loaded-timeout Timeout El límite de tiempo máximo para esperar a que la página termine de cargarse. (Predeterminado: 5 s)
  • --event-trigger-interval Interval El intervalo en el que se activa automáticamente el evento se utiliza generalmente para conflictos de actualización de DOM y redes de destino lentas que dan como resultado un error de URL. (Predeterminado: 100 ms)
  • --event-trigger-mode Value El evento DOM desencadena automáticamente el modo, con async y sync, para errores de URL causados ​​por conflictos de actualización de DOM. (Predeterminado: asincrónico)
  • --before-exit-delay Retrasar la salida para cerrar Chrome al final de una tarea de una sola pestaña. Se usa para esperar a que se recopilen las actualizaciones parciales del DOM y las solicitudes XHR. (Predeterminado: 1 s)

diverso

  • --push-to-proxy La dirección de escucha del resultado del rastreador que se va a recibir, normalmente la dirección de escucha del rastreador pasivo. (Predeterminado: nulo)
  • --push-pool-max El número máximo de simultaneidad al enviar los resultados del rastreador a la dirección de escucha. (Predeterminado: 10)
  • --log-level Niveles de registro, depuración, información, advertencia, error y fatal. (Estándar: Información)
  • --no-headless Desactive el modo sin cabeza de Chrome para visualizar el proceso de rastreo. (Predeterminado: falso)

Sígueme

Weibo: @ 9ian1i Twitter: @ 9ian1i

Artículos relacionados: Práctica de rastreador de navegador para analizar vulnerabilidades web



What do you think?

Written by Helen Lafayette

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

Cómo los atacantes piratean a las personas

The Week Inside Ransomware – 15 de octubre de 2021