
ثغرة بسيطة مكتوبة بلغة C في إصدارات Webmin من 1.890 إلى 1.920
مقدمة:
استغلال Webmin هو استغلال موجّه لخدمة Webmin، ويمكن استغلاله على الإصدارات الأقدم من Webmin. يستخدم هذا الاستغلال تقنيات متنوعة لتنفيذ تعليمات برمجية خبيثة والحصول على وصول غير مصرح به إلى النظام المستهدف.
يتضمن ما يلي:
استخدام كل من لغة C ولغة التجميع (Assembly) لتنفيذ الأوامر على النظام المستهدف.
الاستفادة من تقنيات مثل مكافحة التصحيح (anti-debugging)، وفك تشفير XOR، واستدعاءات النظام مثل execve وprctl لتشغيل قشرة عكسية (reverse shell).
الميزات: مكافحة التصحيح: يستخدم استدعاء النظام ptrace لمنع تصحيح الاستغلال.
فك تشفير XOR: يفك تشفير السلاسل النصية المشفرة مثل kthreadd و/bin/sh في الذاكرة باستخدام تشفير XOR.
استدعاء النظام prctl: يغيّر اسم العملية إلى kthreadd لإخفاء الاستغلال من قائمة العمليات.
استدعاء النظام execve: ينفّذ القشرة العكسية /bin/sh على النظام المستهدف للحصول على وصول كامل إلى النظام.
الجمع بين C ولغة التجميع: يمزج هذا الاستغلال بين مرونة لغة C وقوة لغة التجميع لاستدعاءات النظام المخصصة.
المتطلبات: نظام التشغيل: Linux أو أي توزيعة مبنية على Unix.
المكتبات المطلوبة:
libcurl لإنشاء الاتصالات بين العميل والخادم.
GCC لتجميع الاستغلال.
مكتبة -lcurl لتحميل مكتبة curl في لغة C.
طريقة الاستخدام: إعداد البيئة: تأكد من أن لديك صلاحيات الجذر، لأن بعض الإجراءات مثل execve تتطلب صلاحيات مرتفعة.
ثبّت المكتبات المطلوبة:
sudo apt-get install libcurl4-openssl-dev
تجميع الاستغلال: قم بتنزيل ملف webmin_exploit.c إلى جهازك.
قم بتجميع كود الاستغلال باستخدام GCC مع الخيار -no-pie لتعطيل PIE (الملف التنفيذي المستقل عن العنوان):
gcc -no-pie webmin_exploit.c -o webExploit -lcurl
ملاحظة: إذا واجهت مشكلات متعلقة بـ PIE، فتأكد من استخدام -no-pie كما هو موضح أعلاه.
تشغيل الاستغلال: اضبط إعدادات الاستغلال: عدّل عنوان URL الهدف، وLHOST (المضيف المحلي)، وLPORT (المنفذ المحلي) في الكود حسب الحاجة.
نفّذ الاستغلال: بعد التجميع، قم بتشغيل الاستغلال على الجهاز المستهدف:
./webExploit استقبال القشرة العكسية:
بمجرد تنفيذ الاستغلال بنجاح، يجب أن ينشئ اتصال قشرة عكسية إلى LHOST وLPORT الخاصين بك (مثل 192.168.0.174:4444).
تأكد من أنك تستمع على المنفذ المحدد باستخدام Netcat أو أداة مشابهة:
nc -lvnp 4444
التحليل التقني: التعليمات الأساسية في الكود: مكافحة التصحيح: يُستخدم استدعاء النظام ptrace لمنع تصحيح الاستغلال بواسطة أدوات مثل gdb. وهذا يجعل من الصعب على المحللين إجراء الهندسة العكسية للاستغلال.
فك تشفير XOR: السلاسل النصية kthreadd و/bin/sh مشفرة بتشفير XOR في الملف الثنائي باستخدام المفتاح 0x41 (ASCII 'A'). يتم فك تشفير هذه السلاسل في وقت التشغيل داخل الذاكرة.
استدعاءات النظام:
prctl(PR_SET_NAME, "kthreadd"): يغيّر اسم العملية إلى kthreadd، مما يساعد الاستغلال على تجنب الاكتشاف.
execve("/bin/sh"): ينفّذ قشرة عكسية إلى /bin/sh، مما يمنح المهاجم وصولاً كاملاً إلى النظام.
التعليمات الأساسية: mov: يحمّل القيم في السجلات.
xor: ينفّذ عملية XOR على البيانات.
syscall: ينفّذ استدعاءات النظام مثل execve وprctl لتشغيل القشرة وإعادة تسمية العملية.
lea: يحمّل عنواناً في سجل.
استكشاف الأخطاء وإصلاحها: إذا واجهت مشكلات أثناء التجميع، فتحقق مرة أخرى من أنك تستخدم علامة -no-pie لتعطيل الملفات التنفيذية المستقلة عن العنوان (PIE).
إذا استمرت المشكلات، فتأكد من أن بيئة التطوير لديك محدثة بالمكتبات اللازمة.
تحذيرات: استخدم هذا الاستغلال في بيئات الاختبار فقط. لا تقم أبداً بتشغيل هذا الاستغلال على أنظمة حية أو أنظمة ليس لديك إذن صريح لاختبارها.
عطّل جدران الحماية على الجهاز المستهدف إذا لزم الأمر، لضمان قدرة القشرة العكسية على الاتصال بنجاح.
تأكد من أنك تستمع على المنفذ باستخدام Netcat أو أداة مشابهة لالتقاط اتصال القشرة العكسية.