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