
تحليل تجاوز سعة المخزن المؤقت في sudo الذي يؤثر على إصدار sudo <1.8.26 وكيفية استخدام GCC لتجميع الثغرات المتاحة للعامة.
تحليل CVE-2019-18634 (https://www.exploit-db.com/exploits/47995)
Sudo 1.8.25p - تجاوز سعة المخزن المؤقت لـ 'pwfeedback' (PoC)
يمكن استخدام خيار pwfeedback في Sudo لتوفير ردود فعل بصرية عندما يقوم المستخدم بإدخال كلمة المرور الخاصة به. مع كل ضغطة مفتاح، تتم طباعة علامة نجمية. تمت إضافة هذا الخيار استجابةً لارتباك المستخدم حول كيفية تعطيل مطالبة كلمة المرور القياسية لصدى ضغطات المفاتيح. على الرغم من أن pwfeedback غير ممكّن افتراضيًا في الإصدار الرئيسي من sudo، إلا أن بعض الأنظمة، مثل Linux Mint و Elementary OS، تقوم بتمكينه في ملفات sudoers الافتراضية الخاصة بها.
تحليل
Sudo buffer overflow tryhackme writeup
تحليل CVE-2019-18634
أولاً، نقوم بتسجيل الدخول إلى مثيل tryhackme عبر SSH
يحدث الثغرة بسبب كون وظيفة pwfeedback عرضة لتجاوز سعة المخزن المؤقت في الكومة (heap buffer overflow). لاستغلال هذه الثغرة، نتحقق أولاً من أن الجهاز يحتوي على إصدار ضعيف من sudo (sudo <1.8.26) عن طريق تشغيل الأمر sudo –version
تحليل CVE-2019-18634
أولاً، نقوم بتسجيل الدخول إلى مثيل tryhackme عبر SSH
يحدث الثغرة بسبب كون وظيفة pwfeedback عرضة لتجاوز سعة المخزن المؤقت في الكومة (heap buffer overflow). لاستغلال هذه الثغرة، نتحقق أولاً من أن الجهاز يحتوي على إصدار ضعيف من sudo (sudo <1.8.26) عن طريق تشغيل الأمر sudo –version

بعد التأكد من أن الجهاز يحتوي على إصدار ضعيف من sudo، نتحقق الآن من وجود وظيفة pwfeedback. يمكن القيام بذلك بطريقتين: عن طريق استدعاء sudo وكتابة أي شيء في موجه كلمة المرور، والذي يجب أن يعرض "*" أثناء كتابة الأحرف لكلمة المرور، والطريقة الثانية الأكثر تقنية هي استخدام الأمر sudo -l، ولكن هذا سيتطلب أيضًا أن يكون لدى المستخدم الصلاحيات المناسبة التي تسمح له بعرض المعلومات المتعلقة بـ sudo أو القدرة على دمج ملف sudoers.

سنؤكد الآن أن تجاوز سعة المخزن المؤقت ممكن باستخدام حالة الاختبار المستخدمة في exploit-db https://www.exploit-db.com/exploits/47995
perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id ^^ سطر الكود أعلاه يعمل كالتالي:
إضافة 100 حرف A وتوجيهها إلى الأمر sudo، والتي ستنتهي في مخزن pwfeedback المؤقت في الكومة.

سيقوم Sudo بعد ذلك بإخراج خطأ تجزئة (segmentation fault) لأنه غير متأكد من كيفية متابعة عملية sudo.
يحدث هذا لأنه بمجرد إغراق المخزن المؤقت الثابت في الكومة، سيبدأ في إغراق سجلات وحدة المعالجة المركزية ومؤشر التعليمات، الذي يحافظ على تدفق التعليمات التالية.
يمكننا تشغيل الاستغلال، والذي سيسبب تجاوز سعة المخزن المؤقت ويمنحنا وصولاً كجذر إلى النظام. https://www.exploit-db.com/exploits/47995
