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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2002-1120 — ثغرة تجاوز سعة المخزن المؤقت الكلاسيكية المبنية على المكدس في خادم الويب Savant الإصدار 3.1 تُظهر تلف الذاكرة عن بُعد من أوائل العقد الأول من القرن الحادي والعشرين من خلال طلب HTTP مُصنّع. | Kitploit
أدوات/GitHubGitHub/themalwareguardian/cve-2002-1120
تحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةشيل كودمصممي الأخطاءأمن الويبالاختبار العشوائياختبار الاختراقالتعلم والتعليم

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
تطوير الحمولات
استغلال الملفات الثنائية
GitHubthemalwareguardian/cve-2002-1120

CVE-2002-1120

ثغرة تجاوز سعة المخزن المؤقت الكلاسيكية المبنية على المكدس في خادم الويب Savant الإصدار 3.1 تُظهر تلف الذاكرة عن بُعد من أوائل العقد الأول من القرن الحادي والعشرين من خلال طلب HTTP مُصنّع.

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

🐞 CVE-2002-1120: خادم الويب Savant 3.1 - تجاوز سعة المخزن المؤقت القائم على المكدس (Egghunter)

تجاوز سعة مخزن مؤقت قائم على المكدس في خادم الويب Savant 3.1 يوضح تلف الذاكرة عن بعد من أوائل العقد الأول من القرن الحادي والعشرين من خلال طلب HTTP مصمم (ثغرة أمنية من عام 2002 تتطلب من المبتدئين أكثر من معظم ثغرات تجاوز سعة المخزن المؤقت من عام 2025).




📑 جدول المحتويات

  • لماذا يوجد هذا المستودع
  • لماذا هذه الثغرة مثيرة للاهتمام
  • السياق والبرامج المتأثرة
  • حول الثغرة الأمنية
  • تحفيز الانهيار
  • الاستغلال



🎓 لماذا يوجد هذا المستودع

هذا المستودع هو جزء من المواد التي أستخدمها عند تدريس استغلال تلف الذاكرة (بالإضافة إلى عملي المعتاد، أقوم أيضًا بالتدريس في دورات مختلفة في الأمن السيبراني حيث أساعد في تدريب الجيل القادم من مهندسي الهندسة العكسية). عندما أتناول تجاوزات سعة المخزن المؤقت القائمة على المكدس في الصف، أعمل على حالات حقيقية بدلاً من الأمثلة التمهيدية، وهذه الثغرة (CVE) هي واحدة أعود إليها تحديدًا عندما أريد تحدي الطلاب الذين لديهم بالفعل بعض الخبرة في الكتابة فوق EIP الأساسية.

السبب هو أن السنة في معرف CVE لا تخبرك بشيء عن مدى صعوبة الاستغلال. معظم الطلاب يفترضون أن الثغرات القديمة يجب أن تكون أبسط، تجاوز سعة مباشر، JMP ESP، انتهى. هذه تثبت عكس ذلك. بعض ثغرات CVE التي أدرسها من عام 2025 هي بشكل أساسي أكثر أساسية من هذه، لأن فئة الثغرة أبسط أو القيود أقل. CVE-2002-1120 تتطلب فهم أشياء لا تتطلبها بعض الاستغلالات الحديثة: لماذا لا يمكن استخدام بعض opcodes في أجزاء معينة من الطلب، وكيفية صياغة قفزة شرطية تعمل دائمًا عندما تكون القفزة غير الشرطية محظورة، وكيفية تسليم شيلكود عندما لا يتسع في المكان الذي تضعه فيه عادةً، وكيف يحل Egghunter مشكلة مساحة كانت ستجعل الاستغلال مستحيلًا.

إنها ثغرة CVE التي أعينها عندما أريد أن أرى ما إذا كان شخص ما يفهم حقًا ما يفعله.




💡 لماذا هذه الثغرة مثيرة للاهتمام

تؤثر هذه الثغرة على Savant 3.1، وهو خادم HTTP لنظام Windows مجاني من عام 2002. ما يجعلها جديرة بالدراسة في عام 2025 ليس العمر بل مجموعة القيود التي تقدمها والتقنيات المطلوبة للالتفاف حولها:

  • لا توجد مساحة بعد EIP. المخزن المؤقت القابل للاستخدام هو حوالي 267 بايت قبل عنوان العودة. أي شيء يتجاوز ذلك لا يصل إلى المخزن المؤقت الضعيف، لذلك لا يمكن وضع الشيلكود في الموقع المعتاد بعد EIP.
  • حقل أسلوب HTTP قابل للتنفيذ. ينسخ Savant الأسلوب إلى الذاكرة وينفذه. يتم التعامل مع البايتات التي تكتب عادةً GET كرمز، مما يعني أن المهاجم يمكنه وضع opcodes هناك، ولكن فقط opcodes التي تصمد أمام مرشح الأحرف السيئة الصارم.
  • قائمتان منفصلتان للأحرف السيئة. لدى URI وحقل الأسلوب منطق ترشيح مختلف داخل Savant. يجب تحليل كلاهما بشكل مستقل. تحجب منطقة الأسلوب مجموعة أكبر بكثير من البايتات مقارنة بـ URI.
  • القفزة غير الشرطية JMP هي حرف سيء. \xeb لا يجتاز مرشح منطقة الأسلوب. يجب بناء قفزة شرطية تعمل دائمًا يدويًا باستخدام ثلاثة opcodes، تحميل قيمة في سجل، مقارنتها بقيمة أصغر، والقفز إذا لم تكن النتيجة أقل أو متساوية.
  • الشيلكود لا يتسع. حتى مع عمل القفزة وهبوط التنفيذ في مخزن URI المؤقت، فإن حوالي 264 بايت لا تكفي لـ reverse shell. يجب أن يذهب الحمولة الحقيقية إلى مكان آخر، في نص HTTP، الذي يخزنه Savant في منطقة كومة منفصلة عن المكدس، وهناك حاجة إلى Egghunter لتحديد موقعه في وقت التشغيل.

كل واحد من هذه القيود هو درس بحد ذاته.




🔍 السياق والبرامج المتأثرة

Savant هو خادم HTTP مفتوح المصدر لنظام Windows كان مصممًا أصلاً لتحويل أي كمبيوتر مكتبي إلى خادم ويب. يستمع على منفذ TCP 80 ويعالج طلبات HTTP GET القياسية. يحدث التجاوز في المعالج الذي ينسخ مسار URI إلى مخزن مؤقت ثابت الحجم على المكدس دون التحقق من طوله.

التفاصيل التقنية الرئيسية:

  • نوع الثغرة: تجاوز سعة المخزن المؤقت القائم على المكدس
تنزيل الأداة
  • الإصدار المتأثر: Savant Web Server 3.1
  • نقطة النهاية المتأثرة: طلب HTTP GET
  • المكون الضعيف: معالجة مسار URI في معالج GET
  • المصادقة المطلوبة: لا
  • التأثير: تنفيذ تعليمات برمجية عن بعد



  • ⚠️ حول الثغرة الأمنية

    يعالج Savant طلبات HTTP GET الواردة وينسخ مسار URI إلى مخزن مؤقت ثابت الحجم على المكدس دون التحقق من طوله. تبدو النسخة المبسطة من المنطق الضعيف هكذا:

    root@kitploit:~
    char uri_buffer[270];
    
    strcpy(uri_buffer, uri_path);
    

    إرسال طلب GET مع URI بحوالي 271 بايت يكتب فوق عنوان العودة المحفوظ على المكدس. التجاوز مقيد، إرسال أكثر من ذلك بشكل ملحوظ يتسبب في انهيار بحيث لا يتم التحكم في EIP بعد الآن، لذا فإن النافذة القابلة للاستخدام ضيقة.

    الاستغلال أكثر تعقيدًا من الكتابة فوق EIP القياسية بسبب خاصيتين إضافيتين للخادم: حقل أسلوب HTTP يتم نسخه أيضًا إلى الذاكرة وتنفيذه، ويتم تخزين نص طلب HTTP في منطقة كومة منفصلة بدلاً من المكدس (كلتا الخاصيتين تصبحان جزءًا أساسيًا من سلسلة الاستغلال).




    💥 تحفيز الانهيار

    يمكن إعادة إنتاج الانهيار عن طريق إرسال طلب GET مع URI طويل بما فيه الكفاية. لا يلزم المصادقة. مثال باستخدام Python:

    root@kitploit:~
    import socket
    
    HOST = '127.0.0.1'
    PORT = 80
    
    payload = b"A" * 271
    
    request = (
    	b"GET /" + payload + b" HTTP/1.1\r\n"
    	b"Host: 127.0.0.1\r\n"
    	b"Connection: close\r\n"
    	b"\r\n"
    )
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    s.send(request)
    s.close()
    

    عند التنفيذ تحت مصحح الأخطاء، يظهر الانهيار أن EIP قد تم الكتابة فوقه ببيانات يتحكم بها المستخدم:

    root@kitploit:~
    EIP = 41414141
    

    مؤكدًا أن عنوان العودة المحفوظ قد تم إتلافه بسبب التجاوز.




    💣 الاستغلال

    الهدف من هذا المستودع ليس فقط توضيح الانهيار، بل السير خلال عملية الاستغلال الكاملة خطوة بخطوة، بما في ذلك كل قيد يجعل هذه الحالة أصعب من الكتابة فوق EIP القياسية وكل قرار تم اتخاذه للالتفاف حولها.

    للحفاظ على نظافة ملف README الرئيسي، تم وضع ملاحظات الاستغلال التفصيلية، والبرامج النصية، وخطوات مصحح الأخطاء داخل مجلد الثغرة 📂 في هذا المستودع.

    هناك ستجد سير العمل الكامل المستخدم لاستغلال هذه الثغرة، بما في ذلك:

    • تشويش URI الخاص بـ GET لتحديد نافذة الانهيار.
    • اكتشاف الإزاحة يدويًا (لا يمكن استخدام الأنماط الدورية هنا).
    • تحليل الأحرف السيئة لمنطقة URI وحقل أسلوب HTTP بشكل منفصل.
    • العثور على أداة POP / RET في Savant.exe للكتابة فوق EIP.
    • تأكيد أن التنفيذ يهبط في حقل الأسلوب بعد تشغيل الأداة.
    • صياغة قفزة شرطية JNLE للوصول إلى مخزن URI المؤقت من حقل الأسلوب.
    • تحديد موقع نص HTTP في الكومة وقياس المساحة المتاحة.
    • وضع Egghunter في مخزن URI المؤقت والشيلكود الموسوم بـ egg في نص HTTP.