Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
RatRace — Ein leichtgewichtiges CLI-Tool zur systematischen Erkennung und Ausnutzung von Wettlaufsituationen in Webanwendungen, APIs und modernen Diensten. | Kitploit
Tools/GitHubGitHub/bogdanticu88/ratrace
SchwachstellenscannerExploitationScripting & AutomatisierungAPI-SicherheitstestsWebsicherheitFuzzingPenetrationstestsDevSecOps
GitHubbogdanticu88/ratrace

RatRace

Ein leichtgewichtiges CLI-Tool zur systematischen Erkennung und Ausnutzung von Wettlaufsituationen in Webanwendungen, APIs und modernen Diensten.

Repository anzeigen
104vor 5 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

RatRace

RatRace – Toolkit für Race-Condition-Tests

Ein leichtgewichtiges CLI-Tool zur systematischen Erkennung und Ausnutzung von Race Conditions in Webanwendungen, APIs und modernen Diensten.



Go Version License Status Platform Security Build


Welches Problem es löst

Race Conditions gehören zu den Sicherheitslücken mit der größten Auswirkung in modernen Anwendungen, werden aber von automatischen Scannern nach wie vor kaum abgedeckt. Während Tools wie Nuclei, ffuf und sqlmap hervorragend darin sind, statische Schwachstellen zu finden, sind sie grundsätzlich blind für nebenläufigkeitsbedingte Probleme.

Pentestern bleibt heute nur die Wahl: entweder jedes Mal manuell Wegwerfskripte schreiben oder ganz auf Race-Condition-Tests verzichten. Keine der beiden Optionen ist skalierbar oder professionell.

RatRace löst dies, indem es einen ausgereiften, wiederholbaren Workflow für Race-Condition-Tests bereitstellt – aus Ad-hoc-Skripten wird ein systematischer Prozess, der sich in CI/CD-Pipelines integrieren lässt und professionelle Berichte erstellt.

Auswirkungen in der Praxis

Race-Condition-Schwachstellen treten häufig in Bereichen mit hoher Auswirkung auf:

  • E-Commerce: Doppelte Bestellungen, Lagerüberverkäufe, Rabattstapelung
  • Fintech: Doppelte Überweisungen, privilegienbasierte Eskalation, Transaktionswiedergabe
  • Authentifizierung: Token-Draining, Session-Fixierung, gleichzeitige Passwortzurücksetzungen
  • Ratenbegrenzung: Umgehung durch gleichzeitige Anfragen, verteilter Missbrauch

Diese Bugs erzielen in Bug-Bounty-Programmen durchweg die höchsten Prämien, da sie direkt den Geschäftsumsatz und das Kundenvertrauen gefährden.


Kernfunktionen

Template-gesteuertes Testen

Definieren Sie Race-Szenarien einmal in YAML und verwenden Sie sie in mehreren Projekten. Das Format orientiert sich an Nuclei-Templates für einen vertrauten Umgang:

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

Mehrere Angriffsmodi

Burst-Modus – Parallelanfragen auf Basis von Goroutinen mit präziser Synchronisation (stabil, produktionsreif)

  • Startet N Goroutinen, die mit Mikrosekunden-Präzision synchronisieren
  • Ideal für die meisten Anwendungen mit Race-Fenstern >5ms

Last-Byte-Sync – TCP-Level-Angriff über HTTP/1.1 (Implementierung fertig, Testphase)

  • Hält alle Verbindungen am letzten Byte des Anforderungstextes
  • Freigabe per close()-Broadcast für Sub-Millisekunden-Fenster
  • Effektiv gegen Lastverteilung und Ratenbegrenzung

Single-Packet – Frame-basierter Angriff über HTTP/2 (Implementierung fertig, Testphase)

  • Sendet alle Anfragen in einem einzigen TCP-Segment
  • Nutzt Multiplexing für nahezu gleichzeitigen Server-Empfang
  • Umgeht einige Ratenbegrenzungs-Mechanismen

Intelligente Validierung

RatRace erledigt automatisch:

  • Fingerprinting von Antworten mittels Statuscode + Body-Hash, um Anomalien zu erkennen
  • Clustering der Ergebnisse, um statistisch signifikante Unterschiede zu identifizieren
  • Berechnung von Konfidenzwerten basierend auf Häufigkeit und Ausmaß der Anomalien
  • Ausführung von Folgeanfragen, um Zustandsänderungen zu bestätigen (z. B. „Wurde der Artikel wirklich doppelt gekauft?“)
  • Unterstützung bedingter Validierung mit Operatoren: equals, not_equals, greater_than, contains

Workflow-Integration

Vorhandene Anfragen importieren:

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

# Von Burp exportierten HAR-Dateien
ratrace import --har session.har -o template.yaml

CI/CD-Automatisierung:

root@kitploit:~
ratrace race -u $TARGET -t template.yaml --silent
echo $?  # Exit-Code 10 = Race gefunden, 0 = sauber

Professionelle Berichterstellung:

root@kitploit:~
# JSON für Automatisierung
ratrace race -u $TARGET -t template.yaml -o results/

# HTML-Berichte (geplant für V2)
ratrace report --input results.json --format html

Installation

Aus dem Quelltext

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

Voraussetzungen: 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

Verwendung

Schnellstart: Race-Test ausführen

root@kitploit:~
# 1. Von curl importieren oder vorhandenes Template verwenden
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o checkout.yaml

# 2. Race ausführen
ratrace race -u https://api.example.com -t checkout.yaml -m burst -c 20

# 3. Ergebnisse prüfen
# Ausgabe zeigt:
# 🔴 [CRITICAL] Checkout Duplicate Order Race
#     Anomaly Rate: 91.7%
#     Confidence:   84%

Beispiel: E-Commerce-Checkout-Race

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

Beispiel: Stiller Modus (für CI/CD)

root@kitploit:~
# Läuft ohne ausführliche Logs, beendet mit semantischem Code
ratrace race -u https://api.example.com -t template.yaml --silent

# Exit-Code prüfen
if [ $? -eq 10 ]; then
  echo "Race condition found!"
  exit 1
fi

Befehlsreferenz

race — Race-Angriff ausführen

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

Options:
  -m, --mode string          burst|lastbyte|singlepacket (Standard aus Template)
  -c, --concurrency int      Goroutine-Anzahl (Standard 20)
  -H, --header strings       Benutzerdefinierte Header (wiederholbar)
  -x, --proxy string         Proxy-URL für Anfragen
  -o, --output string        Ausgabeverzeichnis für Ergebnisse
  --timeout duration         Anfrage-Timeout (Standard 10s)
  --insecure                 TLS-Zertifikatsprüfung überspringen
  --dry-run                  Template parsen und beenden
  --silent                   Logs unterdrücken, nur Ergebnisse anzeigen

import — Anfragen in Templates umwandeln

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

Konvertiert vorhandene Anfragen (curl-Befehle oder HAR-Exporte) in RatRace-Templates.
Nützlich zur Integration in bestehende Workflows.

report — Berichte erstellen

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

Erstellt menschenlesbare Berichte aus Race-Testergebnissen.

ratelimit — Ratenbegrenzungsumgehung testen

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

Testet, ob Endpunkte anfällig für gleichzeitige Ratenbegrenzungsumgehungen sind.

Template-Format

Templates sind YAML-Dateien, die ein Race-Szenario definieren. Vollständige Referenz:

root@kitploit:~
id: unique-identifier
info:
  name: "Human-readable name"
  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

Variablen (Platzhalter {{name}} verwenden):

  • Werden über Kommandozeilen-Header ersetzt oder im Template fest codiert
  • Beispiel: ratrace race ... -H "Authorization: Bearer {{session_token}}"

Ausgabe

Terminalausgabe

Saubere, farbcodierte Logs zeigen den Testfortschritt:

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)

JSON-Ergebnisse

Vollständige Ergebnisse werden zur Automatisierung und Archivierung in results_<timestamp>.json gespeichert:

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

Exit-Codes

Wird für CI/CD-Integration und Automatisierung verwendet:

CodeBedeutung
0Erfolg – keine Race Conditions gefunden
3Datenfehler – Template nicht gefunden, Parsing-Fehler
4Ausführungsfehler – Netzwerkausfall, Engine-Fehler
10Race Condition gefunden – Maßnahmen erforderlich
11Ratenbegrenzungsumgehung bestätigt
12Anomalie erkannt, aber Validierung nicht eindeutig

Entwicklung

Bauen

root@kitploit:~
make build              # Binärdatei kompilieren

Testen

root@kitploit:~
make test              # Alle Tests
make test-unit         # Nur Unit-Tests
make test-int          # Integrationstests
make coverage          # Abdeckungsbericht (HTML)

Linting & Qualität

root@kitploit:~
make lint              # Linter ausführen

Beispiele

root@kitploit:~
make run-race          # Bauen und Beispiel ausführen

Architektur

root@kitploit:~
cmd/ratrace/
  └── main.go           Einstiegspunkt, CLI-Definition

internal/
  ├── cmd/              Implementierung der Unterbefehle
  ├── engine/           Angriffsmodi (burst, lastbyte, singlepacket)
  ├── validator/        Antwort-Clustering, Diffing, Folgeprüfungen
  ├── importer/         HAR- und curl-Parser
  ├── reporter/         JSON- und HTML-Ausgabe
  ├── template/         YAML-Parsing und Templating
  ├── log/              Strukturierte farbige Protokollierung
  └── models/           Gemeinsame Datentypen

Status & Roadmap

V1 (Aktuell)

  • ✅ Burst-Modus mit Goroutinen-Synchronisation
  • ✅ Antwort-Clustering und Anomalieerkennung
  • ✅ Konfidenzberechnung
  • ✅ Folgevalidierung mit Bedingungen
  • ✅ HAR/curl-Import
  • ✅ JSON-Ausgabe
  • ✅ Stiller Modus für CI/CD
  • ⏳ Last-Byte-Sync-Modus (Implementierung fertig, muss getestet werden)
  • ⏳ Single-Packet-Modus (Implementierung fertig, muss getestet werden)

V2 (Geplant)

  • HTML-Berichterstellung
  • PoC-Skriptgenerierung
  • Spezialisierung auf Ratenbegrenzungsumgehung
  • Burp-Suite-XML-Import
  • gRPC-Race-Tests
  • WebSocket-Race-Tests
  • Template-Registry und Community-Templates
  • Nuclei-Integration

Mitwirken

Issues, PRs und Template-Beiträge sind willkommen. Bitte beachten:

  • Der Code sollte den vorhandenen Mustern im Codebestand folgen
  • Tests bestehen: make test
  • Linter besteht: make lint

Lizenz

MIT


Haftungsausschluss

RatRace ist für autorisierte Sicherheitstests, Bug-Bounty-Programme und Penetrationstests konzipiert. Verwenden Sie es nur auf Systemen, die Ihnen gehören oder für deren Tests Sie eine ausdrückliche schriftliche Genehmigung haben. Unbefugtes Testen fremder Systeme ist illegal.


Autor

Bogdan Ticu – Sicherheitsforschung und -entwicklung

Bei Problemen, Fragen oder Sicherheitsmeldungen: GitHub Issues

Tool herunterladen