Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/bogdanticu88/ratrace
Scanners de VulnérabilitésExploitationScripting et AutomatisationTests de Sécurité des APISécurité WebFuzzingTests d'IntrusionDevSecOps
GitHubbogdanticu88/ratrace

RatRace

Un outil CLI léger pour détecter et exploiter systématiquement les conditions de course dans les applications web, les API et les services modernes.

Voir le dépôt
104il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

RatRace

RatRace - Race Condition Testing Toolkit

Un outil CLI léger pour détecter et exploiter systématiquement les conditions de concurrence dans les applications web, les API et les services modernes.



Go Version License Status Platform Security Build


Quel problème résout-il

Les conditions de concurrence représentent l'une des vulnérabilités de sécurité les plus impactantes dans les applications modernes, mais elles restent mal couvertes par les scanners automatisés. Alors que des outils comme Nuclei, ffuf et sqlmap excellent dans la détection des vulnérabilités statiques, ils sont fondamentalement aveugles aux problèmes liés à la concurrence.

Les testeurs d'intrusion sont aujourd'hui confrontés à un choix : écrire manuellement des scripts jetables pour chaque mission, ou ignorer complètement les tests de conditions de concurrence. Aucune des deux options n'est scalable ou professionnelle.

RatRace résout ce problème en fournissant un flux de travail soigné et reproductible pour les tests de conditions de concurrence — transformant ce qui était autrefois du script ad-hoc en un processus systématique qui s'intègre aux pipelines CI/CD et génère des rapports professionnels.

Impact dans le monde réel

Les vulnérabilités de conditions de concurrence apparaissent fréquemment dans des zones à fort impact :

  • E-commerce : Commandes en double, survente d'inventaire, cumul de réductions
  • Fintech : Transferts en double, escalade de privilèges par concurrence, rejeu de transactions
  • Authentification : Épuisement de jetons, fixation de session, réinitialisations simultanées de mots de passe
  • Limitation de débit : Contournement via requêtes concurrentes, abus distribué

Ces bugs rapportent systématiquement les plus hautes primes dans les programmes de bug bounty car ils menacent directement le chiffre d'affaires et la confiance des clients.


Capacités principales

Tests pilotés par modèles

Définissez une fois les scénarios de concurrence en YAML, réutilisez-les entre projets. Le format reprend celui des modèles Nuclei pour une familiarité immédiate :

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

Modes d'attaque multiples

Mode Rafale (Burst) — Requêtes parallèles basées sur goroutines avec synchronisation précise (stable, prêt pour la production)

  • Lance N goroutines qui se synchronisent à la microseconde près
  • Idéal pour la plupart des applications avec fenêtres de concurrence >5ms

Synchronisation du dernier octet (Last-Byte Sync) — Attaque au niveau TCP HTTP/1.1 (implémentation prête, phase de test)

  • Maintient toutes les connexions au dernier octet du corps de la requête
  • Déclenchement par diffusion close() pour des fenêtres sub-milliseconde
  • Efficace contre les cibles réparties par charge et limitées en débit

Paquet unique (Single-Packet) — Attaque basée sur les trames HTTP/2 (implémentation prête, phase de test)

  • Envoie toutes les requêtes dans un seul segment TCP
  • Exploite le multiplexage pour une réception quasi simultanée par le serveur
  • Contourne certains mécanismes de limitation de débit

Validation intelligente

RatRace automatiquement :

  • Empreinte les réponses par code d'état + hash du corps pour détecter les anomalies
  • Regroupe les résultats pour identifier les différences statistiquement significatives
  • Calcule des scores de confiance basés sur la fréquence et l'ampleur des anomalies
  • Exécute des requêtes de suivi pour confirmer les changements d'état (ex. : "l'article a-t-il vraiment été acheté deux fois ?")
  • Prend en charge la validation conditionnelle avec les opérateurs : equals, not_equals, greater_than, contains

Intégration dans les flux de travail

Importer des requêtes existantes :

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

# Depuis des fichiers HAR exportés de Burp
ratrace import --har session.har -o template.yaml

Automatisation CI/CD :

root@kitploit:~
ratrace race -u $TARGET -t template.yaml --silent
echo $?  # Code de sortie 10 = concurrence détectée, 0 = propre

Génération de rapports professionnels :

root@kitploit:~
# JSON pour l'automatisation
ratrace race -u $TARGET -t template.yaml -o results/

# Rapports HTML (prévus en V2)
ratrace report --input results.json --format html

Installation

Depuis les sources

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

Prérequis : 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

Utilisation

Démarrage rapide : exécuter un test de concurrence

root@kitploit:~
# 1. Importer depuis curl ou utiliser un modèle existant
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o checkout.yaml

# 2. Exécuter la concurrence
ratrace race -u https://api.example.com -t checkout.yaml -m burst -c 20

# 3. Examiner les résultats
# La sortie affiche :
# 🔴 [CRITICAL] Checkout Duplicate Order Race
#     Anomaly Rate: 91.7%
#     Confidence:   84%

Exemple : concurrence de checkout e-commerce

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

Exemple : mode silencieux (pour CI/CD)

root@kitploit:~
# S'exécute sans logs verbeux, se termine avec un code sémantique
ratrace race -u https://api.example.com -t template.yaml --silent

# Vérifier le code de sortie
if [ $? -eq 10 ]; then
  echo "Condition de concurrence détectée !"
  exit 1
fi

Référence des commandes

race — Exécuter une attaque par concurrence

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

Options :
  -m, --mode string          burst|lastbyte|singlepacket (par défaut depuis le modèle)
  -c, --concurrency int      Nombre de goroutines (par défaut 20)
  -H, --header strings       En-têtes personnalisés (répétables)
  -x, --proxy string         URL du proxy pour les requêtes
  -o, --output string        Répertoire de sortie pour les résultats
  --timeout duration         Délai d'attente de la requête (par défaut 10s)
  --insecure                 Ignorer la vérification du certificat TLS
  --dry-run                  Analyser le modèle et quitter
  --silent                   Supprimer les logs, afficher uniquement les résultats

import — Convertir des requêtes en modèles

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

Convertit les requêtes existantes (commandes curl ou exports HAR) en modèles RatRace.
Utile pour s'intégrer aux flux de travail existants.

report — Générer des rapports

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

Génère des rapports lisibles par l'humain à partir des résultats des tests de concurrence.

ratelimit — Tester le contournement de la limitation de débit

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

Teste si les points de terminaison sont vulnérables au contournement concurrent de la limitation de débit.

Format des modèles

Les modèles sont des fichiers YAML qui définissent un scénario de concurrence. Référence complète :

root@kitploit:~
id: unique-identifier
info:
  name: "Nom lisible par l'humain"
  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 (utilisez les placeholders {{name}}) :

  • Substituées via les en-têtes de ligne de commande ou codées en dur dans le modèle
  • Exemple : ratrace race ... -H "Authorization: Bearer {{session_token}}"

Sortie

Sortie terminale

Une journalisation propre et codée par couleur affiche la progression du test :

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)

Résultats JSON

Les résultats complets sont enregistrés dans results_<timestamp>.json pour l'automatisation et l'archivage :

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
      }
    }
  ]
}

Codes de sortie

Utilisés pour l'intégration CI/CD et l'automatisation :

CodeSignification
0Succès — aucune condition de concurrence trouvée
3Erreur de données — modèle introuvable, erreur d'analyse
4Erreur d'exécution — échec réseau, erreur du moteur
10Condition de concurrence détectée — action requise
11Contournement de la limitation de débit confirmé
12Anomalie détectée mais validation non concluante

Développement

Compilation

root@kitploit:~
make build              # Compiler le binaire

Tests

root@kitploit:~
make test              # Tous les tests
make test-unit         # Tests unitaires uniquement
make test-int          # Tests d'intégration
make coverage          # Rapport de couverture (HTML)

Linting & Qualité

root@kitploit:~
make lint              # Exécuter le linter

Exemples

root@kitploit:~
make run-race          # Compiler et exécuter l'exemple

Architecture

root@kitploit:~
cmd/ratrace/
  └── main.go           Point d'entrée, définition CLI

internal/
  ├── cmd/              Implémentations des sous-commandes
  ├── engine/           Modes d'attaque par concurrence (burst, lastbyte, singlepacket)
  ├── validator/        Regroupement des réponses, diff, vérifications de suivi
  ├── importer/         Analyseurs HAR et curl
  ├── reporter/         Sortie JSON et HTML
  ├── template/         Analyse YAML et templating
  ├── log/              Journalisation structurée en couleurs
  └── models/           Types de données partagés

Statut et feuille de route

V1 (Actuelle)

  • ✅ Mode rafale avec synchronisation goroutine
  • ✅ Regroupement des réponses et détection d'anomalies
  • ✅ Score de confiance
  • ✅ Validation de suivi avec conditions
  • ✅ Import HAR/curl
  • ✅ Sortie JSON
  • ✅ Mode silencieux pour CI/CD
  • ⏳ Mode synchronisation du dernier octet (implémentation prête, tests nécessaires)
  • ⏳ Mode paquet unique (implémentation prête, tests nécessaires)

V2 (Prévue)

  • Génération de rapports HTML
  • Génération de scripts PoC
  • Spécialisation contournement de limitation de débit
  • Import XML Burp Suite
  • Tests de concurrence gRPC
  • Tests de concurrence WebSocket
  • Registre de modèles et modèles communautaires
  • Intégration Nuclei

Contribution

Les issues, PR et contributions de modèles sont les bienvenues. Merci de respecter :

  • Le code suit les motifs existants dans la base de code
  • Les tests passent : make test
  • Le linter passe : make lint

Licence

MIT


Avertissement

RatRace est conçu pour les tests de sécurité autorisés, les programmes de bug bounty et les tests d'intrusion. Utilisez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite. Tester sans autorisation les systèmes d'autrui est illégal.


Auteur

Bogdan Ticu — Recherche et ingénierie en sécurité

Pour les problèmes, questions ou rapports de sécurité : GitHub Issues

Télécharger l’outil