تقنيات الاستغلال المتقدمة
ثغرات منطق الأعمال
3 دقيقة للقراءة
ثغرات منطق الأعمال تستغل عيوباً في سير عمل التطبيق، وليس ثغرات الكود. غالباً تُفقد من الماسحات الآلية وتعطي مكافآت عالية.
ما يجعل ثغرات منطق الأعمال مختلفة
| الثغرات التقليدية | ثغرات منطق الأعمال |
|---|---|
| تستغل ثغرات الكود | تستغل عيوب تصميم العملية |
| قابلة للكشف بالماسحات | تتطلب اختباراً يدوياً |
| استغلال تقني | فهم سياق الأعمال |
| غالباً موثقة (OWASP) | فريدة لكل تطبيق |
الفئات الشائعة
التلاعب بالأسعار
# تدفق التجارة الإلكترونية
1. أضف عنصراً للسلة (السعر: 100 دولار)
2. اعترض طلب الدفع
3. عدّل: {"price": 1, "quantity": 1}
4. تحقق إذا كان الخادم يتحقق من السعر
# إساءة استخدام الكوبون/الخصم
POST /apply-coupon
{"code": "SAVE50", "quantity": 100} # تطبيق الكوبون 100 مرة؟
# ارتباك العملة
# إذا 100 دولار = 90 يورو
# ادفع 90 يورو، احصل على رصيد 100 دولار؟
تجاوز سير العمل
# تخطي خطوات التحقق
1. عادي: تسجيل → التحقق من البريد → الوصول
2. هجوم: تسجيل → القفز مباشرة للوصول
# اختبر بـ:
# - الوصول المباشر لـ URLs المخصصة لمراحل لاحقة
# - تعديل معاملات الحالة
# - إزالة/تغيير معرفات الخطوات
استيلاء الحساب عبر المنطق
# إساءة استخدام إعادة تعيين كلمة المرور
1. اطلب إعادة تعيين لـ victim@example.com
2. اطلب إعادة تعيين لـ attacker@example.com
3. التقط رمز المهاجم
4. عدّل الرمز لاستهداف حساب الضحية
# ربط/إلغاء ربط الحسابات
1. اربط حساب المهاجم الاجتماعي بملف الضحية
2. استخدم تسجيل الدخول الاجتماعي كالضحية
حالات السباق
عندما التوقيت أهم من المنطق:
# الهجوم
# إذا: تحقق من الرصيد → معالجة الدفع → خصم الرصيد
# إذن: أرسل طلبات متزامنة قبل خصم الرصيد
# اسحب 100 دولار مرتين من حساب 100 دولار
# كلا التحققين يمران (الرصيد=100)
# كلا السحبين يُعالجان
# النتيجة: رصيد -100 دولار (إذا لا تحقق نهائي)
اختبار حالات السباق
# استخدام Turbo Intruder (إضافة Burp)
# أرسل 20+ طلب متطابق متزامناً
# استخدام curl بالتوازي
for i in {1..20}; do
curl -X POST "https://example.com/withdraw" \
-d "amount=100" \
-H "Cookie: session=xxx" &
done
wait
# الأهداف الرئيسية:
# - عمليات الرصيد
# - استرداد الكوبونات
# - أنظمة التصويت/الإعجاب
# - دفع المخزون
هجوم الحزمة الواحدة (تقنية 2025)
بحث James Kettle في DEF CON 32:
# HTTP/2 يسمح بطلبات متعددة في حزمة واحدة
# الخادم يعالجها متزامنة فعلاً
# لا تباين في توقيت الشبكة
# Burp Suite: "Send group in parallel (single-packet)"
# فعال حتى مع نوافذ سباق أقل من ميلي ثانية
تجاوز الحدود
التحايل على القيود:
# حدود المعدل
# جرب: IP مختلف، User-Agent، تنويعات الحالة
# api/v1/send-sms مقابل API/V1/SEND-SMS
# حدود التحميل/الاستخدام
# تحقق إذا كانت الحدود من جانب العميل
# عدّل الجلسة لإعادة تعيين العداد
# أنشئ جلسة جديدة في منتصف الاستخدام
# حدود الطبقة المجانية
# تحقق إذا كانت الميزات المدفوعة متاحة عبر API المباشر
أمثلة من العالم الحقيقي
| الشركة | الثغرة | المكافأة |
|---|---|---|
| Shopify | كمية سلبية في الدفع | 15,000 دولار |
| Uber | رحلات مجانية عبر إساءة الإحالة | 10,000 دولار |
| PayPal | استغلال تقريب العملة | 8,000 دولار |
| HackerOne | التلاعب بلوحة الصدارة | 5,000 دولار |
منهجية الاختبار
- ارسم تدفق الأعمال: افهم ما يفترض أن يفعله التطبيق
- حدد الافتراضات: ما الذي يفترض المطور أن المستخدمين سيفعلونه؟
- اكسر الافتراضات: افعل غير المتوقع
- اختبر الحدود: أرقام سلبية، صفر، MAX_INT
- اختبر التوقيت: هل يمكنك فعل X قبل اكتمال Y؟
قائمة مراجعة الاستغلال
- هل يمكنك تعديل الأسعار/المبالغ في الطلبات؟
- هل يمكنك تخطي الخطوات المطلوبة؟
- هل يمكنك إعادة استخدام الرموز/الأكواد؟
- ماذا يحدث مع القيم السلبية؟
- هل هناك نوافذ سباق في العمليات متعددة الخطوات؟
- هل يمكن للحسابات المجانية الوصول للميزات المدفوعة؟
نصيحة احترافية: فكر كمحتال، وليس كهاكر. ماذا سيفعل مستخدم خبيث يحاول سرقة المال؟
في الدرس التالي، سنستكشف رفع الملفات وهجمات إلغاء التسلسل. :::