Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
RatRace — Uno strumento CLI leggero per rilevare e sfruttare sistematicamente le race condition nelle applicazioni web, nelle API e nei servizi moderni. | Kitploit
Strumenti/GitHubGitHub/bogdanticu88/ratrace
Scanner di VulnerabilitàExploitScripting e AutomazioneTest di Sicurezza delle APISicurezza WebFuzzingPenetration TestingDevSecOps
GitHubbogdanticu88/ratrace

RatRace

Uno strumento CLI leggero per rilevare e sfruttare sistematicamente le race condition nelle applicazioni web, nelle API e nei servizi moderni.

Vedi Repository
1045 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

RatRace

RatRace - Kit di Testing per Race Condition

Uno strumento CLI leggero per rilevare e sfruttare sistematicamente le race condition in applicazioni web, API e servizi moderni.



Go Version License Status Platform Security Build


Che Problema Risolve

Le race condition rappresentano una delle vulnerabilità di sicurezza a più alto impatto nelle applicazioni moderne, eppure rimangono scarsamente coperte dagli scanner automatici. Mentre strumenti come Nuclei, ffuf e sqlmap eccellono nel trovare vulnerabilità statiche, sono fondamentalmente ciechi ai problemi legati alla concorrenza.

I pentester oggi si trovano di fronte a una scelta: scrivere manualmente script usa e getta per ogni incarico, oppure saltare del tutto il test delle race condition. Nessuna delle due opzioni è scalabile o professionale.

RatRace risolve questo problema fornendo un workflow rifinito e ripetibile per il test delle race condition—trasformando quella che era una pratica ad-hoc in un processo sistematico che si integra con pipeline CI/CD e genera report professionali.

Impatto nel Mondo Reale

Le vulnerabilità di race condition si presentano frequentemente in aree ad alto impatto:

  • E-commerce: Ordini duplicati, overselling dell'inventario, stacking di sconti
  • Fintech: Doppi trasferimenti, escalation di privilegi basata su race, replay di transazioni
  • Autenticazione: Drenaggio di token, session fixation, reset di password concorrenti
  • Rate Limiting: Bypass tramite richieste concorrenti, abuso distribuito

Questi bug ottengono costantemente le taglie più alte nei programmi bug bounty perché minacciano direttamente le entrate aziendali e la fiducia dei clienti.


Capacità Principali

Test Basato su Template

Definisci scenari di race una volta in YAML, riutilizzali tra progetti. Il formato rispecchia i template di Nuclei per familiarità:

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

Modalità di Attacco Multiple

Modalità Burst — Richieste parallele basate su goroutine con sincronizzazione precisa (stabile, pronta per la produzione)

  • Lancia N goroutine che si sincronizzano con precisione al microsecondo
  • Ideale per la maggior parte delle applicazioni con finestre di race >5ms

Last-Byte Sync — Attacco a livello TCP HTTP/1.1 (implementazione pronta, fase di test)

  • Mantiene tutte le connessioni all'ultimo byte del corpo della richiesta
  • Rilascio tramite broadcast close() per finestre sub-millisecondo
  • Efficace contro target con bilanciamento del carico e limitazione di velocità

Single-Packet — Attacco basato su frame HTTP/2 (implementazione pronta, fase di test)

  • Invia tutte le richieste in un singolo segmento TCP
  • Sfrutta il multiplexing per una ricezione quasi simultanea da parte del server
  • Bypassa alcuni meccanismi di rate limiting

Validazione Intelligente

RatRace automaticamente:

  • Impronta digitale delle risposte tramite codice di stato + hash del corpo per rilevare anomalie
  • Raggruppa i risultati per identificare differenze statisticamente significative
  • Calcola punteggi di confidenza basati sulla frequenza e l'entità delle anomalie
  • Esegue richieste di follow-up per confermare cambiamenti di stato (ad es., "l'articolo è stato davvero acquistato due volte?")
  • Supporta validazione condizionale con operatori: equals, not_equals, greater_than, contains

Integrazione nel Workflow

Importa richieste esistenti:

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

# Da file HAR esportati da Burp
ratrace import --har session.har -o template.yaml

Automazione CI/CD:

root@kitploit:~
ratrace race -u $TARGET -t template.yaml --silent
echo $?  # Codice di uscita 10 = race trovata, 0 = pulito

Report professionali:

root@kitploit:~
# JSON per automazione
ratrace race -u $TARGET -t template.yaml -o results/

# Report HTML (pianificati per V2)
ratrace report --input results.json --format html

Installazione

Da Sorgente

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

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

Utilizzo

Avvio Rapido: Esegui un Test di Race

root@kitploit:~
# 1. Importa da curl o usa un template esistente
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o checkout.yaml

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

# 3. Rivedi i risultati
# L'output mostra:
# 🔴 [CRITICAL] Checkout Duplicate Order Race
#     Anomaly Rate: 91.7%
#     Confidence:   84%

Esempio: Race su Checkout E-commerce

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

Esempio: Modalità Silenziosa (per CI/CD)

root@kitploit:~
# Viene eseguito senza log verbosi, esce con codice semantico
ratrace race -u https://api.example.com -t template.yaml --silent

# Controlla il codice di uscita
if [ $? -eq 10 ]; then
  echo "Race condition trovata!"
  exit 1
fi

Riferimento Comandi

race — Esegui Attacco Race

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

Options:
  -m, --mode string          burst|lastbyte|singlepacket (default from template)
  -c, --concurrency int      Goroutine count (default 20)
  -H, --header strings       Custom headers (repeatable)
  -x, --proxy string         Proxy URL for requests
  -o, --output string        Output directory for results
  --timeout duration         Request timeout (default 10s)
  --insecure                 Skip TLS certificate verification
  --dry-run                  Parse template and exit
  --silent                   Suppress logs, show findings only

import — Converti Richieste in Template

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

Converte richieste esistenti (comandi curl o esportazioni HAR) in template RatRace.
Utile per l'integrazione con workflow esistenti.

report — Genera Report

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

Genera report leggibili da umani dai risultati dei test di race.

ratelimit — Testa Bypass del Rate Limit

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

Testa se gli endpoint sono vulnerabili al bypass concorrente del rate limit.

Formato Template

I template sono file YAML che definiscono uno scenario di race. Riferimento completo:

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

Variabili (usa segnaposto {{name}}):

  • Sostituite tramite intestazioni da riga di comando o hardcoded nel template
  • Esempio: ratrace race ... -H "Authorization: Bearer {{session_token}}"

Output

Output nel Terminale

Log puliti e colorati mostrano l'avanzamento del 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)

Risultati JSON

Risultati completi salvati in results_<timestamp>.json per automazione e archiviazione:

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

Codici di Uscita

Usati per l'integrazione CI/CD e l'automazione:

CodeMeaning
0Successo — nessuna race condition trovata
3Errore dati — template non trovato, errore di parsing
4Errore di esecuzione — fallimento di rete, errore del motore
10Race condition trovata — azione richiesta
11Bypass del rate limit confermato
12Anomalia rilevata ma validazione inconcludente

Sviluppo

Build

root@kitploit:~
make build              # Compila il binario

Testing

root@kitploit:~
make test              # Tutti i test
make test-unit         # Solo test unitari
make test-int          # Test di integrazione
make coverage          # Report di copertura (HTML)

Linting & Qualità

root@kitploit:~
make lint              # Esegui linter

Esempi

root@kitploit:~
make run-race          # Build ed esegui esempio

Architettura

root@kitploit:~
cmd/ratrace/
  └── main.go           Punto di ingresso, definizione CLI

internal/
  ├── cmd/              Implementazioni dei sottocomandi
  ├── engine/           Modalità di attacco race (burst, lastbyte, singlepacket)
  ├── validator/        Clustering delle risposte, diff, controlli di follow-up
  ├── importer/         Parser HAR e curl
  ├── reporter/         Output JSON e HTML
  ├── template/         Parsing YAML e templating
  ├── log/              Log colorato strutturato
  └── models/           Tipi di dati condivisi

Stato & Roadmap

V1 (Attuale)

  • ✅ Modalità burst con sincronizzazione goroutine
  • ✅ Clustering delle risposte e rilevamento anomalie
  • ✅ Punteggio di confidenza
  • ✅ Validazione di follow-up con condizioni
  • ✅ Import HAR/curl
  • ✅ Output JSON
  • ✅ Modalità silenziosa per CI/CD
  • ⏳ Modalità last-byte sync (implementazione pronta, necessita test)
  • ⏳ Modalità single-packet (implementazione pronta, necessita test)

V2 (Pianificata)

  • Generazione report HTML
  • Generazione script PoC
  • Specializzazione bypass rate limit
  • Import XML Burp Suite
  • Test race gRPC
  • Test race WebSocket
  • Registro template e template della comunità
  • Integrazione Nuclei

Contribuire

Benvenuti contributi tramite Issue, PR e template. Si prega di assicurare:

  • Il codice segue i pattern esistenti nel codebase
  • I test passano: make test
  • Il linter passa: make lint

Licenza

MIT


Disclaimer

RatRace è progettato per test di sicurezza autorizzati, programmi bug bounty e penetration test. Usalo solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta. Test non autorizzati su sistemi altrui sono illegali.


Autore

Bogdan Ticu — Ricerca e Ingegneria della Sicurezza

Per problemi, domande o segnalazioni di sicurezza: GitHub Issues

Scarica lo strumento