Skip to main content

DAST especializado en detección de vulnerabilidades en formularios web (12 categorías)

Project description

Gung12

Release License: MIT Python 3.10+

DAST (Dynamic Application Security Testing) especializado en la detección de vulnerabilidades en formularios web. Cubre 12 categorías alineadas con el OWASP Top 10 con un enfoque dirigido y pensado para integración en flujos de CI/CD.

Características

  • 12 categorías de vulnerabilidad: XSS, SQLi, SSTI, XPath, CMDi, NoSQL, XXE, CSRF, File Upload, Open Redirect, HTML Injection, Logic
  • SQLi ciega booleana y basada en tiempo por análisis diferencial confirmado (modo exhaustivo -F) y XSS almacenado (--stored-xss)
  • Confirmación semántica de Command Injection por marcador único y, en modo exhaustivo (-F), ciega basada en tiempo con petición de control (descarta falsos positivos en páginas con baseline lento); NoSQL por operadores de bypass (diferencial)
  • Rastreo automático de formularios en el sitio (--crawl) con control de profundidad, robots.txt y deduplicación
  • Escaneo concurrente: barrido de inyección en paralelo por formulario (-j/--concurrency) y análisis de varios formularios a la vez en modo rastreo (--crawl-workers); las pasadas por tiempo/diferencial se mantienen secuenciales para no falsear las medidas
  • Wordlists externas estilo SecLists (--payloads-dir) que amplían los payloads integrados
  • Modo GraphQL (--graphql): introspección, fuga por sugerencias e inyección SQL en argumentos (error-based y diferencial)
  • Modo WebSocket (--websocket): batería de inyección en mensajes (XSS, SQLi, SSTI, XPath, CMDi, NoSQL, XXE, HTML) con cliente WS propio (RFC 6455)
  • Modo gRPC (--grpc): detección de server reflection habilitada
  • Dashboard web opcional (--serve): interfaz local para lanzar escaneos y ver el informe
  • Soporte para SPAs (Angular/React/Vue): detección automática y render con Playwright (dependencia opcional, pip install "gung12[spa]"), más descubrimiento automático de endpoints REST
  • Análisis con IA (Gemini, Groq) como segunda opinión sobre los hallazgos
  • Autenticación previa automática (--login-url)
  • Evasión de WAFs basados en firmas (--waf-bypass)
  • Refresco dinámico del token anti-CSRF (--refresh-csrf) para frameworks que lo rotan (Django, Laravel, ASP.NET)
  • Filtro automático de falsos positivos por reflexión total (respeta la evidencia semántica: no degrada SSTI evaluado, errores SQL, etc.)
  • Las pasadas de evidencia fuerte (ciega, tiempo, diferencial, marcador CMDi) confirman y reemplazan detecciones débiles en el mismo campo
  • Bajo índice de falsos positivos: la SQLi/XPath booleana exige confirmación diferencial con control (no basta un cambio de tamaño) y el Open Redirect se confirma verificando que la cabecera Location apunte al host externo inyectado (validado contra la app segura Flaskr: solo reporta el fallo real)
  • Robustez de red: reintentos ante fallos transitorios de conexión y límite de tamaño de respuesta y de frame WebSocket
  • Informes HTML y JSON con coloreado por severidad (informe combinado en modo rastreo), y salida SARIF 2.1.0 (-o report.sarif) para integrar los hallazgos en GitHub Code Scanning y otras plataformas de CI/CD

Instalación

Desde código fuente

git clone https://github.com/DenReanin/gung12
cd gung12
pip install -r requirements.txt          # instalación base (ligera)
python -m gung12 --help

La instalación base son solo 4 dependencias pequeñas. Los modos opcionales se instalan a la carta:

pip install "gung12[spa]"        # render de SPAs (Playwright)
pip install "gung12[dashboard]"  # dashboard web (Flask)
pip install "gung12[grpc]"       # modo gRPC (grpcio-reflection)

Nota (SPA): Gung12 detecta automáticamente si una página es una SPA y, si el modo SPA está instalado, la renderiza con el Chromium de Playwright (lo descarga solo la primera vez, ~280 MB, en la caché del usuario). Puedes forzar el render con --spa o desactivarlo con --no-spa. Si la descarga automática falla (sin conexión o tras un proxy), ejecuta playwright install chromium.

Ejecutable

Descargar desde Releases el binario para tu plataforma (Windows, Linux o macOS) y ejecutarlo directamente. No requiere Python instalado.

El binario incluye Playwright. La primera vez que se utilice --spa, Playwright descargará Chromium en la caché del usuario (~280 MB).

Uso básico

# Escaneo rápido con XSS y SQLi
gung12 -u "http://target/form" -T xss,sqli

# Escaneo completo con login previo
gung12 -u "http://target/admin/profile" \
       --login-url "http://target/login" \
       --login-user "admin" --login-pass "secret" \
       -T all -F -o report.html

# Modo SPA contra OWASP Juice Shop (Angular)
gung12 -u "http://localhost:3000/#/login" --spa -T sqli,nosql

# Rastreo automático: descubre y analiza todos los formularios del sitio
gung12 -u "http://target/" --crawl --crawl-depth 2 --max-forms 20 -T all -o crawl.html

# Escaneo concurrente: 8 peticiones de inyección en paralelo por formulario
gung12 -u "http://target/form" -T all -j 8

# Rastreo con 4 formularios analizados a la vez
gung12 -u "http://target/" --crawl --crawl-workers 4 -T all -o crawl.html

# Refresco de token CSRF en cada payload (Django, Laravel, ASP.NET MVC)
gung12 -u "http://target/profile" --refresh-csrf -T xss,sqli

# SQLi ciega booleana (análisis diferencial, requiere modo exhaustivo -F)
gung12 -u "http://target/status?id=1" -T sqli -F

# XSS almacenado: inyecta un canario y comprueba si persiste en otra página
gung12 -u "http://target/comment" --stored-xss --stored-url "http://target/wall" -T xss

# Wordlists externas (SecLists): archivos <tipo>.txt (xss.txt, sqli.txt...)
gung12 -u "http://target/form" -T sqli,xss --payloads-dir ./SecLists/gung12

# Modo GraphQL: introspección, fuga por sugerencias e inyección en argumentos
gung12 -u "http://target/graphql" --graphql -o graphql.html

# Modo WebSocket: inyección de payloads en mensajes
gung12 -u "ws://target:8080/chat" --websocket

# Modo gRPC: server reflection habilitada (pip install "gung12[grpc]")
gung12 -u "target:50051" --grpc

# Dashboard web (requiere Flask: pip install "gung12[dashboard]")
gung12 --serve            # abre http://127.0.0.1:8012

# CI/CD: salida silenciosa con exit code útil
gung12 -u "$TARGET" -T all --quiet -o report.json
# exit 0 = sin hallazgos relevantes, 1 = ALTA/MEDIA, 2 = error

# CI/CD: salida SARIF para GitHub Code Scanning (pestaña Security)
gung12 -u "$TARGET" -T all --quiet -o gung12.sarif

Integración con GitHub Code Scanning (SARIF)

La salida SARIF (-o report.sarif) permite subir los hallazgos a la pestaña Security del repositorio y verlos como anotaciones en los pull requests. Confianza ALTA → error, MEDIA → warning, BAJA → note; cada hallazgo lleva su CWE y una huella estable para deduplicar entre ejecuciones.

# .github/workflows/dast.yml
name: DAST
on: [workflow_dispatch]
jobs:
  scan:
    runs-on: ubuntu-latest
    permissions:
      security-events: write   # necesario para subir el SARIF
    steps:
      - run: pip install gung12
      - run: gung12 -u "$TARGET" -T all --quiet -o gung12.sarif || true
        env:
          TARGET: https://tu-entorno-de-pruebas.example
      - uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: gung12.sarif

Tests

La suite de pruebas levanta objetivos vulnerables locales (formularios, GraphQL, WebSocket y gRPC) y verifica todos los escáneres de extremo a extremo:

pip install "gung12[test]"
pytest

Modos de salida

Modo Flag Uso recomendado
Por defecto (ninguno) Defensa, demos, ejecuciones manuales
Silencioso -q / --quiet Pipelines CI/CD (solo hallazgos)
Verboso -v / --verbose Debugging y pentesting (muestra payloads)

Códigos de retorno (CI/CD)

Código Significado
0 Sin hallazgos o solo de severidad BAJA
1 Hallazgos de severidad ALTA o MEDIA
2 Error de ejecución (URL inaccesible, argumentos inválidos)

Aviso legal

Esta herramienta está diseñada para uso autorizado únicamente sobre sistemas propios o con permiso explícito por escrito del propietario. El uso contra sistemas no autorizados constituye un delito tipificado en el artículo 197 bis del Código Penal español y en la normativa europea sobre ciberseguridad.

Licencia

MIT. Proyecto académico desarrollado como Trabajo Fin de Máster en el Máster Universitario en Ciberseguridad de la Universidad de Alicante.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gung12-1.14.0.tar.gz (73.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gung12-1.14.0-py3-none-any.whl (72.8 kB view details)

Uploaded Python 3

File details

Details for the file gung12-1.14.0.tar.gz.

File metadata

  • Download URL: gung12-1.14.0.tar.gz
  • Upload date:
  • Size: 73.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gung12-1.14.0.tar.gz
Algorithm Hash digest
SHA256 7e53ef30b4becc055d7bdea2cd65af2bb7d834bcdfd1ec6d7397ee262d2aee3d
MD5 691ba36ed1712f92cf3ad0849383e0e9
BLAKE2b-256 061ccd6977b6b0f439feec69988df2e641a4534b646dc2869f2e22c55db9a273

See more details on using hashes here.

Provenance

The following attestation bundles were made for gung12-1.14.0.tar.gz:

Publisher: publish.yml on DenReanin/gung12

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gung12-1.14.0-py3-none-any.whl.

File metadata

  • Download URL: gung12-1.14.0-py3-none-any.whl
  • Upload date:
  • Size: 72.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gung12-1.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9fd0e261ac156de910a5fa76075a575e5c6966fc1ac7054158e61e7fd819f71
MD5 5902e2d973202348e36922d793e3deb9
BLAKE2b-256 8cdeb9f2853ffd9024ee52a2264635d55ca51fec42f3e0c34c5000364a081548

See more details on using hashes here.

Provenance

The following attestation bundles were made for gung12-1.14.0-py3-none-any.whl:

Publisher: publish.yml on DenReanin/gung12

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page