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)

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

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.13.1.tar.gz (68.9 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.13.1-py3-none-any.whl (69.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for gung12-1.13.1.tar.gz
Algorithm Hash digest
SHA256 1349aa9733fdaf022c0d584de15d5454dad727a863fcbf6ce42d8f4aac4a092f
MD5 1f6cbcf8c2e2a75d14e0f05679a969be
BLAKE2b-256 598ebba5bbe2a0eff2e2c0d52599ace6287fae68c9078de1e4ada3d5d626f07f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gung12-1.13.1.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.13.1-py3-none-any.whl.

File metadata

  • Download URL: gung12-1.13.1-py3-none-any.whl
  • Upload date:
  • Size: 69.6 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.13.1-py3-none-any.whl
Algorithm Hash digest
SHA256 815d29d65586102643b2e9e054da3a7b460de6e26c859bcea9296239ce4912ab
MD5 ef86dbda069f29f60822d266631b4465
BLAKE2b-256 77fa58e38397e7a21f4246a177de6e152415878213419254cf3a8d1c7c4b16d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for gung12-1.13.1-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