
pfSense CE 2.9.0-DEVELOPMENT - عالية - عن بُعد - RCE - assign Add if_add
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-assign-if-add
الفئة: تنفيذ تعليمات عن بُعد (RCE) الوصول: عن بُعد
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
interfaces_assign.php Add يخزّن $_POST['if_add'] دون التحقق من عضويته في $portlist. Submit يعيد تعيين المنافذ الموجودة في $portlist فقط. wireless_regex هو /^(ath|...)[0-9]+/ بدون $. ath0;w يطابق. Clone مع get_wireless_modes يُدرَج في ifconfig.
| المعرّف | لا يوجد CVE بعد |
| الفئة | تنفيذ تعليمات عن بُعد (RCE) |
| الوصول | عن بُعد (WebGUI مُصادَق عليه ما لم يُذكر خلاف ذلك) |
| CWE | CWE-78 |
| CVSS | مرتفع: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| المنتج | pfSense CE |
| المتأثر | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| المصادقة | جلسة WebGUI مع page-interfaces-assignnetworkports ثم GET interfaces.php?if=optN |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط |
ثبّتُّ الفرع العام الرئيسي 9363ac5. المختبر عبارة عن أداة PHP (gadget) للنقطة الطرفية المثبّتة، عبر HTTP على واجهة الاسترجاع 127.0.0.1:18920.
مقال السلسلة: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| الطريقة | النقطة الطرفية | الصلاحية |
|---|---|---|
| POST interfaces_assign.php if_add، ثم GET interfaces.php?if=optN | wireless_regex غير المُثبَّتة ثم interface_wireless_clone ifconfig | السلامة: مُثبَت مختبريًا: Add خزّن ath0;w كـ opt1؛ GET interfaces.php?if=opt1 شغّل clone ifconfig؛ الـ w الإضافي كتب الشاهد. |
| نفس البقايا | نفس النقطة الطرفية | الاستطلاع: مُستنتَج: يمكن لصدفة الجذر قراءة ملفات المضيف. |
| نفس البقايا | نفس النقطة الطرفية | التوافر: مُستنتَج: ifconfig عدائي على المنافذ المُعيَّنة. |
يتطلب: page-interfaces-assignnetworkports ثم GET interfaces.php?if=optN. حماية CSRF-magic على POST ما لم يُذكر خلاف ذلك. WebGUI PHP-FPM يعمل بصلاحية الجذر.
يتطلب: page-interfaces-assignnetworkports ثم GET interfaces.php?if=optN. حماية CSRF-magic على POST ما لم يُذكر خلاف ذلك. WebGUI PHP-FPM يعمل بصلاحية الجذر. حماية CSRF-magic على POST ما لم يُذكر خلاف ذلك. WebGUI PHP-FPM يعمل بصلاحية الجذر.
إعادة تعيين Submit لـ if_add غير الموجود في portlist لا ينفّذ. التشخيصات: الأمر غير مطلوب.
لا يوجد Diagnostics: Command ما لم تُمنح تلك الصفحة أيضًا.
cd lab
./run.sh
واجهة الاسترجاع 127.0.0.1:18920. مشروع Compose باسم pfsense-assign-if-add. الشاهد PFSENSE-ASSIGN-IF-ADD-WITNESS. واجهة الاسترجاع فقط: 127.0.0.1:18920. مشروع Compose باسم pfsense-assign-if-add. الشاهد PFSENSE-ASSIGN-IF-ADD-WITNESS. أداة PHP (gadget) للأسطر المثبّتة. تُفكَّك الحزمة بعد التشغيل.
السطر الأخير:
SUCCESS PFSENSE-ASSIGN-IF-ADD control-no-exec=yes trigger-exec=yes PFSENSE-ASSIGN-IF-ADD-WITNESS
اشترط وجود if_add في $portlist. ثبّت wireless_regex باستخدام $. استخدم escapeshellarg لأسماء clone.
9363ac5b8651a1c7a333180425ce7719070f95f9