
البحث الأمني وإعادة إنتاج CVE-2025-5548: تجاوز سعة المخزن المؤقت القائم على المكدس في FreeFloat FTP Server 1.0. يشمل التحليل الثنائي، وتكرار الانهيار، وإعداد البيئة للبحث في الثغرات الأمنية.
بحث احترافي وتطوير استغلال لثغرة تجاوز سعة المخزن المؤقت القائمة على المكدس في خادم FreeFloat FTP 1.0. يوضح هذا المختبر الانتقال من الهندسة العكسية الثنائية إلى تنفيذ كود عن بعد (RCE) كامل الوظائف.
يوثق هذا المستودع تحليل واستغلال CVE-2025-5548. على الرغم من أن الأنظمة الحديثة تمتلك حمايات متقدمة، إلا أن تحليل البرامج القديمة مثل FreeFloat FTP يظل ركيزة أساسية لباحثي الثغرات.
يتبع البحث المبادئ التي نوقشت في المحاضرة "The Path That Leads to Your First CVE"، مع التأكيد على أن الهندسة العكسية لتطبيقات سطح المكتب القديمة هي نقطة الدخول الأكثر واقعية للمبتدئين في هذا المجال.
[Fuzzing] ──► [التحكم في EIP] ──► [تحليل الأحرف السيئة] ──► [أداة JMP ESP] ──► [RCE]
NOOP عن طريق الاختبار العشوائي (Fuzzing) لإحداث تلف في الذاكرة.\x00\x0a\x0d) التي تعطل الحمولة.JMP ESP لإعادة توجيه التنفيذ إلى شيل كود مخصص من Metasploit.| المكون | نظام التشغيل / الإصدار | الدور |
|---|---|---|
| خادم الهدف | Windows 10/11 (VM) | خادم FreeFloat FTP 1.0 |
| آلة المهاجم | Kali Linux / Windows | تسليم الاستغلال (بايثون 3) |
| المصحح | Immunity Debugger | التحليل الديناميكي و Mona.py |
| مفكك التجميع | IDA Pro 8.4 | التحليل الثابت والهندسة العكسية |
ملاحظة: تم إجراء جميع الاختبارات في قطاع شبكة معزول (host-only).
| الفئة | الأدوات |
|---|---|
| الهندسة العكسية | IDA Pro, Immunity Debugger |
| الاستغلال | Python 3 (Socket), Mona.py, Metasploit (msfvenom) |
| المنهجية | Stack-based Buffer Overflow |
| المرجع | TheMalwareGuardian - CVE-2025-5548 |
| الدليل | المحتوى | الحالة |
|---|---|---|
| 01-Environment | تعليمات إعداد المختبر والمصحح. | ✅ جاهز |
| 02-Exploitation | المنهجية الأساسية: تطوير الاستغلال خطوة بخطوة. | ✅ جاهز |
| Exploits | مجموعة كاملة من نصوص بايثون (من الاختبار العشوائي إلى شيل كود). | ✅ جاهز |
| 03-Images | توثيق الأعطال، الإزاحات، والأدوات. | ✅ جاهز |
توجد الثغرة لأن الخادم يعالج الأوامر باستخدام دوال C غير آمنة (مثل strcpy) دون التحقق المناسب من الطول.
// Simplified representation of the vulnerable handler
char buffer[256];
strcpy(buffer, user_input); // No bounds checking
عند إرسال سلسلة طويلة عبر أمر NOOP، فإنها تتجاوز سعة المخزن المؤقت للمكدس المحلي، مما يؤدي في النهاية إلى الكتابة فوق عنوان العودة المحفوظ. من خلال التحكم في هذا العنوان، يمكننا إعادة توجيه وحدة المعالجة المركزية (CPU) لتنفيذ تعليماتنا الخاصة.
شكر خاص لـ TheMalwareGuardian على أبحاثه حول الثغرات القديمة ونهجه التعليمي في أبحاث الثغرات.