Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
RatRace — Una herramienta CLI ligera para detectar y explotar sistemáticamente condiciones de carrera en aplicaciones web, APIs y servicios modernos. | Kitploit
Herramientas/GitHubGitHub/bogdanticu88/ratrace
Escáneres de VulnerabilidadesExplotaciónScripting y AutomatizaciónPruebas de Seguridad de APIsSeguridad WebFuzzingPruebas de PenetraciónDevSecOps
GitHubbogdanticu88/ratrace

RatRace

Una herramienta CLI ligera para detectar y explotar sistemáticamente condiciones de carrera en aplicaciones web, APIs y servicios modernos.

Ver Repositorio
104hace 5 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

RatRace

RatRace - Kit de pruebas de condiciones de carrera

Una herramienta CLI ligera para detectar y explotar sistemáticamente condiciones de carrera en aplicaciones web, APIs y servicios modernos.



Go Version License Status Platform Security Build


Qué problema resuelve

Las condiciones de carrera representan una de las vulnerabilidades de seguridad de mayor impacto en las aplicaciones modernas, sin embargo siguen estando mal cubiertas por los escáneres automatizados. Mientras que herramientas como Nuclei, ffuf y sqlmap sobresalen en encontrar vulnerabilidades estáticas, son fundamentalmente ciegas a problemas basados en concurrencia.

Los pentesters de hoy se enfrentan a una elección: escribir manualmente scripts desechables para cada compromiso, o saltarse las pruebas de condiciones de carrera. Ninguna opción es escalable ni profesional.

RatRace resuelve esto proporcionando un flujo de trabajo pulido y repetible para las pruebas de condiciones de carrera, transformando lo que antes era scripting ad hoc en un proceso sistemático que se integra con pipelines CI/CD y genera informes profesionales.

Impacto en el mundo real

Las vulnerabilidades de condiciones de carrera aparecen con frecuencia en áreas de alto impacto:

  • Comercio electrónico: Pedidos duplicados, sobreventa de inventario, acumulación de descuentos
  • Fintech: Transferencias dobles, escalada de privilegios por carrera, repetición de transacciones
  • Autenticación: Agotamiento de tokens, fijación de sesión, restablecimientos de contraseña concurrentes
  • Límite de tasa: Bypass mediante solicitudes concurrentes, abuso distribuido

Estos errores consistentemente obtienen las mayores recompensas en programas de bug bounty porque amenazan directamente los ingresos del negocio y la confianza del cliente.


Capacidades principales

Pruebas basadas en plantillas

Define escenarios de carrera una vez en YAML, reutilízalos entre proyectos. El formato refleja las plantillas de Nuclei para familiaridad:

root@kitploit:~
id: checkout-race
info:
  name: Checkout Duplicate Order Race
  severity: critical
race:
  mode: burst
  concurrency: 20
  request:
    method: POST
    path: /api/v1/checkout
    headers:
      Authorization: "Bearer {{session}}"
    body: '{"item_id": "SKU-001"}'
validate:
  follow_up:
    method: GET
    path: /api/v1/orders?user={{user_id}}
  expect:
    json_field: "orders.length"
    condition: equals
    value: 1

Múltiples modos de ataque

Modo Burst — Solicitudes paralelas basadas en goroutines con sincronización precisa (estable, listo para producción)

  • Lanza N goroutines que se sincronizan con precisión de microsegundos
  • Ideal para la mayoría de aplicaciones con ventanas de carrera >5ms

Sincronización de último byte — Ataque a nivel TCP HTTP/1.1 (implementación lista, fase de pruebas)

  • Mantiene todas las conexiones en el último byte del cuerpo de la solicitud
  • Liberación mediante broadcast close() para ventanas sub-milisegundo
  • Efectivo contra objetivos balanceados de carga y con límite de tasa

Paquete único — Ataque basado en tramas HTTP/2 (implementación lista, fase de pruebas)

  • Envía todas las solicitudes en un solo segmento TCP
  • Aprovecha la multiplexación para una recepción casi simultánea por el servidor
  • Evita algunos mecanismos de limitación de tasa

Validación inteligente

RatRace automáticamente:

  • Huellas digitales de respuestas mediante código de estado + hash del cuerpo para detectar anomalías
  • Agrupa resultados para identificar diferencias estadísticamente significativas
  • Calcula puntuaciones de confianza basadas en la frecuencia y magnitud de las anomalías
  • Ejecuta solicitudes de seguimiento para confirmar cambios de estado (ej., "¿realmente se compró el artículo dos veces?")
  • Soporta validación condicional con operadores: equals, not_equals, greater_than, contains

Integración en el flujo de trabajo

Importar solicitudes existentes:

root@kitploit:~
# Desde comandos curl
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o template.yaml

# Desde archivos HAR exportados de Burp
ratrace import --har session.har -o template.yaml

Automatización CI/CD:

root@kitploit:~
ratrace race -u $TARGET -t template.yaml --silent
echo $?  # Código de salida 10 = carrera encontrada, 0 = limpio

Informes profesionales:

root@kitploit:~
# JSON para automatización
ratrace race -u $TARGET -t template.yaml -o results/

# Informes HTML (planeado V2)
ratrace report --input results.json --format html

Instalación

Desde el código fuente

root@kitploit:~
git clone https://github.com/bogdanticu88/ratrace.git
cd ratrace
go build ./cmd/ratrace
./ratrace --help

Requisitos: Go 1.24+

Docker

root@kitploit:~
docker build -t ratrace:latest .
docker run --rm -it ratrace:latest race -u https://api.example.com -t template.yaml

Uso

Inicio rápido: Ejecutar una prueba de carrera

root@kitploit:~
# 1. Importar desde curl o usar plantilla existente
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o checkout.yaml

# 2. Ejecutar la carrera
ratrace race -u https://api.example.com -t checkout.yaml -m burst -c 20

# 3. Revisar hallazgos
# La salida muestra:
# 🔴 [CRITICAL] Checkout Duplicate Order Race
#     Tasa de anomalía: 91.7%
#     Confianza:   84%

Ejemplo: Carrera de pedido en comercio electrónico

root@kitploit:~
ratrace race \
  -u https://shop.example.com \
  -t examples/templates/checkout-race.yaml \
  -m burst \
  -c 25 \
  --output results/

Ejemplo: Modo silencioso (para CI/CD)

root@kitploit:~
# Ejecuta sin registros detallados, sale con código semántico
ratrace race -u https://api.example.com -t template.yaml --silent

# Verificar código de salida
if [ $? -eq 10 ]; then
  echo "¡Condición de carrera encontrada!"
  exit 1
fi

Referencia de comandos

race — Ejecutar ataque de carrera

root@kitploit:~
ratrace race -u <url> -t <template> [options]

Options:
  -m, --mode string          burst|lastbyte|singlepacket (por defecto desde plantilla)
  -c, --concurrency int      Cantidad de goroutines (por defecto 20)
  -H, --header strings       Cabeceras personalizadas (repetible)
  -x, --proxy string         URL del proxy para solicitudes
  -o, --output string        Directorio de salida para resultados
  --timeout duration         Tiempo de espera de solicitud (por defecto 10s)
  --insecure                 Omitir verificación de certificado TLS
  --dry-run                  Analizar plantilla y salir
  --silent                   Suprimir registros, mostrar solo hallazgos

import — Convertir solicitudes a plantillas

root@kitploit:~
ratrace import [--curl <command> | --har <file>] -o <output.yaml>

Convierte solicitudes existentes (comandos curl o exportaciones HAR) en plantillas RatRace.
Útil para integrar con flujos de trabajo existentes.

report — Generar informes

root@kitploit:~
ratrace report --input results.json --format [html|json] --output report.html

Genera informes legibles por humanos a partir de los resultados de las pruebas de carrera.

ratelimit — Probar bypass de límite de tasa

root@kitploit:~
ratrace ratelimit -u <url> -c <concurrency>

Prueba si los endpoints son vulnerables a bypass concurrente del límite de tasa.

Formato de plantilla

Las plantillas son archivos YAML que definen un escenario de carrera. Referencia completa:

root@kitploit:~
id: unique-identifier
info:
  name: "Nombre legible por humanos"
  severity: critical|high|medium|low|info
  tags: [tag1, tag2]

race:
  mode: burst|lastbyte|singlepacket
  concurrency: 20
  request:
    method: POST|GET|PUT|DELETE|PATCH
    path: /api/endpoint
    headers:
      Authorization: "Bearer {{token}}"
      Custom-Header: "value"
    body: '{"json": "body", "user": "{{user_id}}"}'

validate:
  follow_up:
    method: GET
    path: /api/orders?user={{user_id}}
  expect:
    json_field: "orders.length"
    condition: equals|greater_than|contains|not_equals
    value: 1

Variables (usa marcadores {{name}}):

  • Sustituidas mediante cabeceras de línea de comandos o codificadas en la plantilla
  • Ejemplo: ratrace race ... -H "Authorization: Bearer {{session_token}}"

Salida

Salida por terminal

Registro limpio y con códigos de colores que muestra el progreso de la prueba:

root@kitploit:~
[INF] Loading template  path=checkout-race.yaml
[INF] Template loaded  id=checkout-race  mode=burst
[RUN] Firing burst attack  concurrency=20
[INF] All requests completed  total=20
[RUN] Clustering responses  baseline=17  anomalous=3
[RACE] Race condition detected  anomaly_rate=15%  confidence=94%
[CONF] Validation passed  field=orders.length  expected=1
[INF] Race test complete  findings=1

Templates: 1  Requests: 20  Time: 3.2s

🔴 [CRITICAL] Checkout Duplicate Order Race
    Anomaly Rate:  15.0%
    Confidence:    94%
    Status Diff:   201 → 200
    Field Diffs:   order_id (100 → 101)

Resultados JSON

Resultados completos guardados en results_<timestamp>.json para automatización y archivo:

root@kitploit:~
{
  "TemplateID": "checkout-race",
  "Target": "https://api.example.com/api/v1/checkout",
  "Mode": "burst",
  "Concurrency": 20,
  "TotalRequests": 20,
  "Duration": 3200000000,
  "Findings": [
    {
      "TemplateName": "Checkout Duplicate Order Race",
      "Severity": "critical",
      "AnomalyRate": 0.15,
      "Confidence": 0.94,
      "Diff": {
        "StatusChanged": true,
        "BaselineStatus": 201,
        "AnomalousStatus": 200
      }
    }
  ]
}

Códigos de salida

Usados para integración CI/CD y automatización:

CódigoSignificado
0Éxito — no se encontraron condiciones de carrera
3Error de datos — plantilla no encontrada, error de análisis
4Error de ejecución — fallo de red, error del motor
10Condición de carrera encontrada — se requiere acción
11Bypass de límite de tasa confirmado
12Anomalía detectada pero validación no concluyente

Desarrollo

Compilar

root@kitploit:~
make build              # Compilar binario

Pruebas

root@kitploit:~
make test              # Todas las pruebas
make test-unit         # Solo pruebas unitarias
make test-int          # Pruebas de integración
make coverage          # Informe de cobertura (HTML)

Linting y calidad

root@kitploit:~
make lint              # Ejecutar linter

Ejemplos

root@kitploit:~
make run-race          # Compilar y ejecutar ejemplo

Arquitectura

root@kitploit:~
cmd/ratrace/
  └── main.go           Punto de entrada, definición de CLI

internal/
  ├── cmd/              Implementaciones de subcomandos
  ├── engine/           Modos de ataque de carrera (burst, lastbyte, singlepacket)
  ├── validator/        Agrupación de respuestas, diferencias, comprobaciones de seguimiento
  ├── importer/         Analizadores HAR y curl
  ├── reporter/         Salida JSON y HTML
  ├── template/         Análisis YAML y plantillas
  ├── log/              Registro estructurado con colores
  └── models/           Tipos de datos compartidos

Estado y hoja de ruta

V1 (Actual)

  • ✅ Modo burst con sincronización de goroutines
  • ✅ Agrupación de respuestas y detección de anomalías
  • ✅ Puntuación de confianza
  • ✅ Validación de seguimiento con condiciones
  • ✅ Importación HAR/curl
  • ✅ Salida JSON
  • ✅ Modo silencioso para CI/CD
  • ⏳ Modo de sincronización de último byte (implementación lista, necesita pruebas)
  • ⏳ Modo de paquete único (implementación lista, necesita pruebas)

V2 (Planeado)

  • Generación de informes HTML
  • Generación de scripts PoC
  • Especialización en bypass de límite de tasa
  • Importación XML de Burp Suite
  • Pruebas de carrera gRPC
  • Pruebas de carrera WebSocket
  • Registro de plantillas y plantillas comunitarias
  • Integración con Nuclei

Contribuciones

Se aceptan issues, PRs y contribuciones de plantillas. Por favor asegúrate de:

  • El código sigue los patrones existentes en la base de código
  • Las pruebas pasan: make test
  • El linter pasa: make lint

Licencia

MIT


Aviso legal

RatRace está diseñado para pruebas de seguridad autorizadas, programas de bug bounty y pruebas de penetración. Úsalo solo en sistemas que poseas o para los que tengas permiso explícito por escrito para realizar pruebas. Probar sistemas de otros sin autorización es ilegal.


Autor

Bogdan Ticu — Investigación e Ingeniería de Seguridad

Para issues, preguntas o informes de seguridad: GitHub Issues

Descargar herramienta