Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
RatRace — أداة سطر أوامر خفيفة الوزن لاكتشاف واستغلال حالات السباق (race conditions) بشكل منهجي في تطبيقات الويب وواجهات برمجة التطبيقات (APIs) والخدمات الحديثة. | Kitploit
أدوات/GitHubGitHub/bogdanticu88/ratrace
ماسحات الثغرات الأمنيةالاستغلالالبرمجة النصية والأتمتةاختبار أمان APIأمن الويبالاختبار العشوائياختبار الاختراقDevSecOps
GitHubbogdanticu88/ratrace

RatRace

أداة سطر أوامر خفيفة الوزن لاكتشاف واستغلال حالات السباق (race conditions) بشكل منهجي في تطبيقات الويب وواجهات برمجة التطبيقات (APIs) والخدمات الحديثة.

عرض المستودع
10منذ 4 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

رات ريس

RatRace - عدة اختبار سباق الحالة

أداة CLI خفيفة الوزن لاكتشاف واستغلال سباقات الحالة (Race Conditions) بشكل منهجي في تطبيقات الويب وواجهات برمجة التطبيقات والخدمات الحديثة.



Go Version License Status Platform Security Build


المشكلة التي تحلها

تمثل سباقات الحالة (Race Conditions) واحدة من أكثر الثغرات الأمنية تأثيرًا في التطبيقات الحديثة، ومع ذلك تظل غير مغطاة بشكل جيد بواسطة الماسحات الآلية. بينما تتفوق أدوات مثل Nuclei و ffuf و sqlmap في إيجاد الثغرات الثابتة، فإنها عمياء أساسًا تجاه المشكلات القائمة على التزامن.

يواجه مختبرو الاختراق اليوم خيارًا: إما كتابة نصوص برمجية مؤقتة يدويًا لكل مهمة، أو تخطي اختبار سباقات الحالة بالكامل. لا يُعتبر أي من الخيارين قابلًا للتوسع أو احترافيًا.

تحل RatRace هذه المشكلة من خلال توفير سير عمل مُحسَّن وقابل للتكرار لاختبار سباقات الحالة — تحويل ما كان في السابق نصوصًا برمجية مخصصة إلى عملية منهجية تدمج مع أنابيب CI/CD وتُنتج تقارير احترافية.

التأثير في العالم الحقيقي

تظهر ثغرات سباقات الحالة بشكل متكرر في المناطق عالية التأثير:

  • التجارة الإلكترونية: طلبات مكررة، بيع زائد في المخزون، تكديس الخصومات
  • التكنولوجيا المالية: تحويلات مزدوجة، تصعيد صلاحيات قائم على السباق، إعادة تشغيل المعاملات
  • المصادقة: استنزاف الرموز، تثبيت الجلسات، إعادة تعيين كلمات المرور المتزامنة
  • تحديد المعدل: تجاوز عبر الطلبات المتزامنة، إساءة الاستخدام الموزعة

تحصل هذه الأخطاء باستمرار على أعلى المكافآت في برامج مكافآت الثغرات لأنها تهدد بشكل مباشر إيرادات الأعمال وثقة العملاء.


القدرات الأساسية

الاختبار القائم على القوالب (Template-Driven Testing)

حدد سيناريوهات السباق مرة واحدة بتنسيق YAML، وأعد استخدامها عبر المشاريع. يتطابق التنسيق مع قوالب Nuclei للألفة:

root@kitploit:~
id: checkout-race
info:
  name: سباق الطلب المكرر عند الدفع
  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

أوضاع هجوم متعددة

وضع الاندفاع (Burst Mode) — طلبات متوازية قائمة على Goroutines مع مزامنة دقيقة (مستقر، جاهز للإنتاج)

  • يُطلق N من goroutines التي تتزامن بدقة ميكروثانية
  • مثالي لمعظم التطبيقات ذات نوافذ السباق >5 مللي ثانية

مزامنة آخر بايت (Last-Byte Sync) — هجوم على مستوى TCP لـ HTTP/1.1 (جاهز للتنفيذ، في مرحلة الاختبار)

  • يُبقي جميع الاتصالات عند البايت الأخير من جسم الطلب
  • الإطلاق عبر إرسال close() broadcast لنوافذ أقل من مللي ثانية
  • فعال ضد الأهداف الموزعة والمحددة المعدل

الحزمة الواحدة (Single-Packet) — هجوم قائم على إطارات HTTP/2 (جاهز للتنفيذ، في مرحلة الاختبار)

  • يُرسل جميع الطلبات في مقطع TCP واحد
  • يستخدم تعدد الإرسال لاستقبال شبه متزامن من الخادم
  • يتجاوز بعض آليات تحديد المعدل

التحقق الذكي

تقوم RatRace تلقائيًا بما يلي:

  • بصمة الاستجابات عبر رمز الحالة + تجزئة الجسم لاكتشاف الشذوذ
  • تجميع النتائج لتحديد الاختلافات ذات الدلالة الإحصائية
  • حساب درجات الثقة بناءً على تكرار الشذوذ وحجمه
  • تنفيذ طلبات متابعة لتأكيد تغييرات الحالة (مثل: "هل تم شراء العنصر مرتين بالفعل؟")
  • دعم التحقق الشرطي باستخدام عوامل: equals, not_equals, greater_than, contains

التكامل مع سير العمل

استيراد الطلبات الموجودة:

root@kitploit:~
# من أوامر curl
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o template.yaml

# من ملفات HAR المُصدَّرة من Burp
ratrace import --har session.har -o template.yaml

أتمتة CI/CD:

root@kitploit:~
ratrace race -u $TARGET -t template.yaml --silent
echo $?  # رمز الخروج 10 = تم اكتشاف سباق، 0 = نظيف

إعداد التقارير الاحترافية:

root@kitploit:~
# JSON للأتمتة
ratrace race -u $TARGET -t template.yaml -o results/

# تقارير HTML (مخطط للإصدار V2)
ratrace report --input results.json --format html

التثبيت

من المصدر

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

المتطلبات: Go 1.24+

دوكر

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

الاستخدام

البدء السريع: تشغيل اختبار سباق

root@kitploit:~
# 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. مراجعة النتائج
# يُظهر المخرجات:
# 🔴 [حرج] سباق الطلب المكرر عند الدفع
#     معدل الشذوذ: 91.7%
#     الثقة:       84%

مثال: سباق الدفع في التجارة الإلكترونية

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

مثال: الوضع الصامت (لـ CI/CD)

root@kitploit:~
# يعمل بدون سجلات مطوَّلة، يخرج بكود دلالي
ratrace race -u https://api.example.com -t template.yaml --silent

# تحقق من كود الخروج
if [ $? -eq 10 ]; then
  echo "تم العثور على سباق حالة!"
  exit 1
fi

مرجع الأوامر

race — تنفيذ هجوم سباق

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

Options:
  -m, --mode string          burst|lastbyte|singlepacket (الافتراضي من القالب)
  -c, --concurrency int      عدد Goroutines (الافتراضي 20)
  -H, --header strings       رؤوس مخصصة (قابلة للتكرار)
  -x, --proxy string         عنوان URL للبروكسي للطلبات
  -o, --output string        دليل الإخراج للنتائج
  --timeout duration         مهلة الطلب (الافتراضي 10s)
  --insecure                 تخطي التحقق من شهادة TLS
  --dry-run                  تحليل القالب والخروج
  --silent                   كتم السجلات، عرض النتائج فقط

import — تحويل الطلبات إلى قوالب

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

يحول الطلبات الموجودة (أوامر curl أو تصديرات HAR) إلى قوالب RatRace.
مفيد للتكامل مع سير العمل الحالية.

report — إنشاء التقارير

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

ينشئ تقارير قابلة للقراءة البشرية من نتائج اختبار السباق.

ratelimit — اختبار تجاوز الحد الأقصى للمعدل

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

يختبر ما إذا كانت نقاط النهاية معرضة لتجاوز الحد الأقصى للمعدل المتزامن.

تنسيق القالب

القالب هو ملفات YAML تحدد سيناريو سباق. المرجع الكامل:

root@kitploit:~
id: معرف-فريد
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

المتغيرات (استخدم عناصر نائبة {{name}}):

  • يتم استبدالها عبر رؤوس سطر الأوامر أو ترميزها بشكل ثابت في القالب
  • مثال: ratrace race ... -H "Authorization: Bearer {{session_token}}"

المخرجات

مخرجات الطرفية

سجل نظيف وملون يوضح تقدم الاختبار:

root@kitploit:~
[INF] جارٍ تحميل القالب  path=checkout-race.yaml
[INF] تم تحميل القالب  id=checkout-race  mode=burst
[RUN] إطلاق هجوم اندفاعي  concurrency=20
[INF] اكتملت جميع الطلبات  total=20
[RUN] تجميع الاستجابات  baseline=17  anomalous=3
[RACE] تم اكتشاف سباق حالة  anomaly_rate=15%  confidence=94%
[CONF] نجح التحقق  field=orders.length  expected=1
[INF] اكتمل اختبار السباق  findings=1

Templates: 1  Requests: 20  Time: 3.2s

🔴 [حرج] سباق الطلب المكرر عند الدفع
    معدل الشذوذ:  15.0%
    الثقة:        94%
    اختلاف الحالة:   201 → 200
    اختلافات الحقل:   order_id (100 → 101)

نتائج JSON

يتم حفظ النتائج الكاملة في results_<timestamp>.json للأتمتة والأرشفة:

root@kitploit:~
{
  "TemplateID": "checkout-race",
  "Target": "https://api.example.com/api/v1/checkout",
  "Mode": "burst",
  "Concurrency": 20,
  "TotalRequests": 20,
  "Duration": 3200000000,
  "Findings": [
    {
      "TemplateName": "سباق الطلب المكرر عند الدفع",
      "Severity": "critical",
      "AnomalyRate": 0.15,
      "Confidence": 0.94,
      "Diff": {
        "StatusChanged": true,
        "BaselineStatus": 201,
        "AnomalousStatus": 200
      }
    }
  ]
}

رموز الخروج

تستخدم لتكامل CI/CD والأتمتة:


التطوير

بناء

root@kitploit:~
make build              # تجميع الثنائي

اختبار

root@kitploit:~
make test              # جميع الاختبارات
make test-unit         # اختبارات الوحدة فقط
make test-int          # اختبارات التكامل
make coverage          # تقرير التغطية (HTML)

فحص الجودة

root@kitploit:~
make lint              # تشغيل المدقق

أمثلة

root@kitploit:~
make run-race          # بناء وتشغيل المثال

العمارة

root@kitploit:~
cmd/ratrace/
  └── main.go           نقطة الدخول، تعريف CLI

internal/
  ├── cmd/              تطبيقات الأوامر الفرعية
  ├── engine/           أوضاع هجوم السباق (burst, lastbyte, singlepacket)
  ├── validator/        تجميع الاستجابات، حساب الفروق، فحوصات المتابعة
  ├── importer/         محللات HAR و curl
  ├── reporter/         مخرجات JSON و HTML
  ├── template/         تحليل YAML والقوالب
  ├── log/              تسجيل منظم ملون
  └── models/           أنواع البيانات المشتركة

الحالة وخريطة الطريق

V1 (الحالي)

  • ✅ وضع الاندفاع مع مزامنة Goroutine
  • ✅ تجميع الاستجابات واكتشاف الشذوذ
  • ✅ تسجيل درجة الثقة
  • ✅ تحقق المتابعة مع الشروط
  • ✅ استيراد HAR/curl
  • ✅ مخرجات JSON
  • ✅ الوضع الصامت لـ CI/CD
  • ⏳ وضع مزامنة آخر بايت (جاهز للتنفيذ، يحتاج اختبار)
  • ⏳ وضع الحزمة الواحدة (جاهز للتنفيذ، يحتاج اختبار)

V2 (مخطط)

  • إنشاء تقارير HTML
  • إنشاء نصوص إثبات المفهوم (PoC)
  • تخصص تجاوز حد المعدل
  • استيراد XML من Burp Suite
  • اختبار سباق gRPC
  • اختبار سباق WebSocket
  • سجل قوالب وقوالب المجتمع
  • تكامل مع Nuclei

المساهمة

نرحب بالمشكلات (Issues) وطلبات السحب (PRs) والمساهمات بالقوالب. يُرجى التأكد من:

  • اتباع الكود للأنماط الحالية في قاعدة الكود
  • اجتياز الاختبارات: make test
  • اجتياز المدقق: make lint

الرخصة

MIT


إخلاء المسؤولية

تم تصميم RatRace لاختبار الأمن المأذون، برامج مكافآت الثغرات، واختبارات الاختراق. استخدم فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. الاختبار غير المصرح به لأنظمة الآخرين غير قانوني.


المؤلف

Bogdan Ticu — أبحاث وهندسة أمنية

للمشكلات أو الأسئلة أو التقارير الأمنية: مشكلات GitHub

تنزيل الأداة
Codeالمعنى
0نجاح — لم يتم العثور على سباقات حالة
3خطأ في البيانات — لم يتم العثور على قالب، خطأ في التحليل
4خطأ في التنفيذ — فشل الشبكة، خطأ في المحرك
10تم العثور على سباق حالة — مطلوب إجراء
11تم تأكيد تجاوز حد المعدل
12تم اكتشاف شذوذ لكن التحقق غير حاسم