
हल्का CLI टूल, जो वेब एप्लिकेशन, API और आधुनिक सेवाओं में व्यवस्थित रूप से रेस कंडीशन (Race Conditions) का पता लगाने और उनका शोषण करने के लिए डिज़ाइन किया गया है।
रेस कंडीशन आधुनिक अनुप्रयोगों में सबसे अधिक प्रभाव वाली सुरक्षा कमजोरियों में से एक हैं, फिर भी स्वचालित स्कैनर इन्हें कम ही पकड़ पाते हैं। जहाँ Nuclei, ffuf और sqlmap जैसे उपकरण स्थैतिक कमजोरियों का पता लगाने में उत्कृष्ट हैं, वे मूल रूप से समवर्तीता-आधारित समस्याओं के प्रति अंधे हैं।
पेंटेस्टर्स आज एक विकल्प का सामना करते हैं: प्रत्येक एंगेजमेंट के लिए मैन्युअल रूप से डिस्पोजेबल स्क्रिप्ट लिखें, या रेस कंडीशन परीक्षण को पूरी तरह से छोड़ दें। दोनों ही विकल्प स्केलेबल या पेशेवर नहीं हैं।
RatRace इसका समाधान करता है रेस कंडीशन परीक्षण के लिए एक पॉलिश, दोहराए जाने योग्य वर्कफ़्लो प्रदान करके—जो पहले एड-हॉक स्क्रिप्टिंग था, उसे एक व्यवस्थित प्रक्रिया में बदलता है जो CI/CD पाइपलाइनों के साथ एकीकृत होती है और पेशेवर रिपोर्ट उत्पन्न करती है।
रेस कंडीशन कमजोरियाँ अक्सर उच्च-प्रभाव वाले क्षेत्रों में दिखाई देती हैं:
ये बग बग बाउंटी प्रोग्रामों में लगातार सबसे अधिक बाउंटी अर्जित करते हैं क्योंकि ये सीधे व्यावसायिक राजस्व और ग्राहक विश्वास को खतरे में डालते हैं।
एक बार YAML में रेस परिदृश्यों को परिभाषित करें, परियोजनाओं में पुन: उपयोग करें। फ़ॉर्मेट परिचितता के लिए Nuclei टेम्पलेट्स को दर्शाता है:
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
बर्स्ट मोड — सटीक सिंक्रोनाइज़ेशन के साथ गोरूटीन-आधारित समानांतर अनुरोध (स्थिर, उत्पादन-तैयार)
5ms रेस विंडो वाले अधिकांश अनुप्रयोगों के लिए आदर्श
लास्ट-बाइट सिंक — HTTP/1.1 TCP-स्तरीय आक्रमण (कार्यान्वयन तैयार, परीक्षण चरण)
सिंगल-पैकेट — HTTP/2 फ्रेम-आधारित आक्रमण (कार्यान्वयन तैयार, परीक्षण चरण)
RatRace स्वचालित रूप से:
equals, not_equals, greater_than, containsमौजूदा अनुरोध आयात करें:
# curl कमांड से
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o template.yaml
# Burp निर्यातित HAR फ़ाइलों से
ratrace import --har session.har -o template.yaml
CI/CD स्वचालन:
ratrace race -u $TARGET -t template.yaml --silent
echo $? # एग्जिट कोड 10 = रेस मिली, 0 = साफ
पेशेवर रिपोर्टिंग:
# स्वचालन के लिए JSON
ratrace race -u $TARGET -t template.yaml -o results/
# HTML रिपोर्ट (योजित V2)
ratrace report --input results.json --format html
git clone https://github.com/bogdanticu88/ratrace.git
cd ratrace
go build ./cmd/ratrace
./ratrace --help
आवश्यकताएँ: Go 1.24+
docker build -t ratrace:latest .
docker run --rm -it ratrace:latest race -u https://api.example.com -t template.yaml
# 1. curl से आयात करें या मौजूदा टेम्पलेट का उपयोग करें
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o checkout.yaml
# 2. रेस निष्पादित करें
ratrace race -u https://api.example.com -t checkout.yaml -m burst -c 20
# 3. निष्कर्षों की समीक्षा करें
# आउटपुट दिखाता है:
# 🔴 [CRITICAL] Checkout Duplicate Order Race
# Anomaly Rate: 91.7%
# Confidence: 84%
ratrace race \
-u https://shop.example.com \
-t examples/templates/checkout-race.yaml \
-m burst \
-c 25 \
--output results/
# वर्बोज़ लॉग के बिना चलता है, सिमैंटिक कोड के साथ बाहर निकलता है
ratrace race -u https://api.example.com -t template.yaml --silent
# एग्जिट कोड जांचें
if [ $? -eq 10 ]; then
echo "रेस कंडीशन मिली!"
exit 1
fi
ratrace race -u <url> -t <template> [options]
Options:
-m, --mode string burst|lastbyte|singlepacket (टेम्पलेट से डिफ़ॉल्ट)
-c, --concurrency int गोरूटीन गणना (डिफ़ॉल्ट 20)
-H, --header strings कस्टम हेडर (दोहराने योग्य)
-x, --proxy string अनुरोधों के लिए प्रॉक्सी URL
-o, --output string परिणामों के लिए आउटपुट निर्देशिका
--timeout duration अनुरोध टाइमआउट (डिफ़ॉल्ट 10s)
--insecure TLS प्रमाणपत्र सत्यापन छोड़ें
--dry-run टेम्पलेट पार्स करें और बाहर निकलें
--silent लॉग दबाएँ, केवल निष्कर्ष दिखाएँ
ratrace import [--curl <command> | --har <file>] -o <output.yaml>
मौजूदा अनुरोधों (curl कमांड या HAR निर्यात) को RatRace टेम्पलेट्स में बदलता है।
मौजूदा वर्कफ़्लो के साथ एकीकृत करने के लिए उपयोगी।
ratrace report --input results.json --format [html|json] --output report.html
रेस टेस्ट परिणामों से मानव-पठनीय रिपोर्ट उत्पन्न करता है।
ratrace ratelimit -u <url> -c <concurrency>
परीक्षण करता है कि क्या एंडपॉइंट समवर्ती दर सीमा बायपास के लिए कमजोर हैं।
टेम्पलेट YAML फ़ाइलें हैं जो एक रेस परिदृश्य को परिभाषित करती हैं। पूर्ण संदर्भ:
id: unique-identifier
info:
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