
تجاوز سعة المخزن المؤقت القائم على SEH في خادم Easy File Sharing Web Server 7.2، يمكن الوصول إليه عبر نقطة استعادة كلمة المرور.
تجاوز سعة المخزن المؤقت المبني على SEH في Easy File Sharing Web Server 7.2، يمكن الوصول إليه من خلال نقطة نهاية استعادة كلمة المرور.
تم إنشاء هذا المستودع كجزء من المواد التي أستخدمها عند تدريس البحث عن الثغرات وتطوير الاستغلال، لا سيما عند تقديم مفهوم تجاوزات المعالج الاستثنائي المنظم (SEH) وسلاسل البرمجة الموجهة للعودة (ROP).
يرتبط هذا المستودع بمحاضرتي "المسار الذي يقود إلى أول CVE لك". في تلك المحاضرة، أشرح أن هناك نقاط دخول مختلفة إلى أبحاث الثغرات، وأن دراسة CVEs الموثقة علنياً في البرامج القديمة هي واحدة من أكثر المسارات سهولة للمبتدئين.
تم اختيار CVE هذا لأنه يوضح سيناريو استغلال كامل وواقعي:
الهدف هو استخدام هذه الحالة كخطوة وسيطة بين تمارين تجاوز سعة المخزن المؤقت التمهيدية ومفاهيم تطوير الاستغلال الأكثر تقدماً.
تؤثر هذه الثغرة على Easy File Sharing Web Server 7.2، وهو تطبيق خادم ويب خفيف الوزن على Windows استُخدم على نطاق واسع لمشاركة الملفات البسيطة. تم كتابة البرنامج دون مراعاة التخفيفات الأمنية الحديثة. ما يجعل هذه الحالة مثيرة للاهتمام بشكل خاص من وجهة نظر تعليمية هو مزيج العوامل المتضمنة:
يجعل هذا المزيج CVE-2025-34096 حالة ممتازة لتعليم تقنيات تطوير الاستغلال في سيناريو هجوم واقعي غير مصادق عليه.
Easy File Sharing Web Server 7.2 هو تطبيق Windows خفيف الوزن مبني لمشاركة الملفات عبر HTTP. بالإضافة إلى تصفح الملفات الأساسي وحسابات المستخدمين، يتضمن ميزة استعادة كلمة المرور، وهي نموذج يسمح للمستخدمين بإدخال عنوان بريدهم الإلكتروني لتلقي بيانات اعتمادهم المنسية.
ذلك النموذج يُرسل إلى /sendemail.ghp. يقوم المعالج الذي يعالج حقل Email بنسخ القيمة مباشرة إلى مخزن مؤقت ثابت الحجم على المكدس دون التحقق من الطول. نقطة النهاية لا تحتاج إلى مصادقة، لذلك لا يوجد شيء يقف بين المهاجم عن بعد ومسار الكود الضعيف.
التفاصيل الفنية الرئيسية:
يقوم Easy File Sharing Web Server بمعالجة طلبات HTTP POST الموجهة إلى /sendemail.ghp كجزء من ميزة إشعارات البريد الإلكتروني الخاصة به. يتم نسخ المعامل Email الذي تقبله هذه النقطة النهائية إلى مخزن مؤقت محلي على المكدس دون أي فحص للطول.
تبدو نسخة مبسطة من المنطق الضعيف كما يلي:
char email_buffer[256];
strcpy(email_buffer, user_input);
نظرًا لأن المخزن المؤقت الوجهة له حجم ثابت ولم يتم التحقق من طول الإدخال، فإن إرسال سلسلة طويلة بما يكفي في حقل Email يتسبب في نسخ البيانات بعد نهاية المخزن المؤقت.
مع كتابة المزيد من البيانات، يصبح تخطيط المكدس فاسدًا. على عكس استبدال عنوان الإرجاع البسيط، يصل التجاوز إلى سلسلة معالج الاستثناء المنظم (SEH) المخزنة على المكدس. عندما يتم تشغيل استثناء نتيجة لفساد المكدس، يقوم نظام التشغيل بتتبع سلسلة SEH وينقل التحكم إلى عنوان المعالج الذي يتحكم فيه المهاجم.
لذلك يتبع تدفق الاستغلال تقنية استبدال SEH:
هذا يجعل الثغرة أكثر تعقيدًا في الاستغلال من استبدال EIP الأساسي، ولكنه أيضًا أكثر تمثيلاً للسيناريوهات الواقعية.
يمكن تكرار الانهيار عن طريق إرسال سلسلة طويلة في معامل Email لطلب POST إلى /sendemail.ghp. لا يلزم مصادقة. مثال باستخدام بايثون:
import socket
HOST = '127.0.0.1'
PORT = 80
request = (
'POST /sendemail.ghp HTTP/1.1\r\n'
'Email=' + 'A' * 5000 + '&getPassword=Get+Password'
).encode('utf-8')
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(request)
s.close()
عند تنفيذه تحت مصحح أخطاء، يُظهر الانهيار سلسلة SEH فاسدة وانتهاك وصول، مما يؤكد أن بيانات يتحكم بها المستخدم قد استبدلت مؤشر معالج الاستثناء.
الهدف من هذا المستودع ليس فقط توضيح الانهيار، بل أيضًا السير خلال عملية الاستغلال الكاملة خطوة بخطوة، باتباع المنهجية المستخدمة عند تطوير استغلالات SEH الحقيقية.
للحفاظ على README الرئيسي نظيفًا، تم وضع ملاحظات الاستغلال التفصيلية والنصوص وخطوات المصحح داخل مجلد Vulnerability 📂 من هذا المستودع.
ستجد هناك سير العمل الكامل المستخدم لاستغلال هذا CVE، بما في ذلك: