
يستغل ثغرة حقن SQL في Zabbix (CVE-2024-42327) لاستخراج جلسة المسؤول وتنفيذ الأوامر عبر API، مما يحقق قشرة عكسية.
_______ ________ ___ ____ ___ __ __ __ __ ___ ________ _____
/ ____/ | / / ____/ |__ \ / __ \__ \/ // / / // /|__ \|__ /__ \/__ /
/ / | | / / __/________/ // / / /_/ / // /_______/ // /___/ / /_ <__/ / / /
/ /___ | |/ / /__/_____/ __// /_/ / __/__ __/_____/__ __/ __/___/ / __/ / /
\____/ |___/_____/ /____/\____/____/ /_/ /_/ /____/____/____/ /_/
اكتشف NSFOCUS CERT أن Zabbix أصدر إعلانًا أمنيًا وأصلح ثغرة حقن SQL (CVE-2024-42327) في خادم Zabbix. بسبب ثغرة SQLi في فئة CUser في دالة addRelatedObjects، يمكن للمهاجمين الذين لديهم صلاحيات المستخدم الافتراضية أو وصول إلى API استدعاء دالة CUser.get. قد يؤدي هذا إلى وصول غير مصرح به إلى معلومات حساسة أو تنفيذ عبارات SQL عشوائية. درجة CVSS هي 9.9.
يستغل هذا الـ PoC ثغرة حقن SQL هذه، وبالنسبة لنهج حقن SQL القائم على الوقت، نحتاج إلى استخراج جدول الجلسات من قاعدة البيانات لتحديد ما إذا كان مستخدم Admin مسجل الدخول. يوفر هذا السكربت سكربتًا متعدد الخيوط لتسريع استخراج جلسة المسؤول لمزيد من الاستغلال. باستخدام رمز API لمستخدم المسؤول، نتابع إنشاء عنصر ثم يمكننا تشغيل هذا العنصر. بعد ذلك، نحصل على قشرة عكسية عن طريق إرسال حمولة.
باختصار، تستخرج هذه الأداة معرف جلسة المسؤول (admin_session) باستخدام حقن SQL القائم على الوقت عبر Zabbix API ثم ترسل أمر قشرة عكسية إلى النظام المستهدف باستخدام هذا المعرف. أولاً، يستقبل السكربت بيانات اعتماد المستخدم، ويرسل طلب مصادقة إلى Zabbix API ويستقبل auth_token. ثم يستخرج معرف admin_session باستخدام حقن SQL. يُستخدم معرف admin_session المستخرج لاسترداد معرفات المضيف والواجهة عبر طلب host.get إلى Zabbix API. أخيرًا، يُرسل طلب item.create يحتوي على أمر القشرة العكسية مع معرفات المضيف والواجهة التي تم الحصول عليها. بهذه الطريقة، تُفتح قشرة عكسية على الخادم المستهدف ويتم إنشاء اتصال.
