
pfSense CE 2.9.0-DEVELOPMENT - عالية - عن بُعد - بقايا صلاحيات - اسم مسؤول LDAP
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-ldap-name-collision
الفئة: صلاحية متبقية الوصول: عن بُعد
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
getUserEntry($name) يُرجع الصف المحلي عند تطابق الاسم. ثم يرى isAdminUID() المعرّف uid 0 ويسمح isAllowedPage بكل الصفحات. يتعامل passwordmg مع الجلسة كجلسة محلية ويكتب تجزئة ذلك المستخدم. المقارنة uid == 0 مقارنة فضفاضة.
| المعرّف | لا يوجد CVE بعد |
| الفئة | صلاحية متبقية |
| الوصول | عن بُعد (WebGUI مُصادَق عليه ما لم يُذكر خلاف ذلك) |
| CWE | CWE-269 |
| 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 مع remote WebGUI login when authmode != Local; passwordmg is not warn-root |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط |
ثبّتُّ الفرع العام الرئيسي 9363ac5. المختبر عبارة عن أداة PHP (gadget) للنقطة الطرفية المثبّتة، عبر HTTP على واجهة الاسترجاع 127.0.0.1:19010.
مقال السلسلة: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| الطريقة | النقطة الطرفية | الصلاحية |
|---|---|---|
| ربط LDAP/RADIUS باسم المسؤول المحلي، ثم POST إلى passwordmg | getUserEntry / isAdminUID / local_user_set_password | السلامة: مُثبت مختبريًا: المسؤول عن بُعد هو isAdminUID؛ كل الصفحات بما فيها diag_command؛ passwordmg عيّن تجزئة uid 0. الأسماء البعيدة من نوع stub-only تفشل بشكل آمن. |
| نفس الصلاحية المتبقية | نفس النقطة الطرفية | الاستطلاع: مُثبت مختبريًا: علم السماح لكل صفحة. |
| نفس الصلاحية المتبقية | نفس النقطة الطرفية | التوافر: لا شيء مُبيّن. |
يتطلب: remote WebGUI login when authmode != Local; passwordmg is not warn-root. حماية CSRF-magic على POST ما لم يُذكر خلاف ذلك. WebGUI PHP-FPM يعمل بصلاحية root.
يتطلب: remote WebGUI login when authmode != Local; passwordmg is not warn-root. حماية CSRF-magic على POST ما لم يُذكر خلاف ذلك. WebGUI PHP-FPM يعمل بصلاحية root. حماية CSRF-magic على POST ما لم يُذكر خلاف ذلك. WebGUI PHP-FPM يعمل بصلاحية root.
الأسماء البعيدة من نوع stub-only. usermanager نفسه warn-root. تخطي uid في SA-26_22 xmlrpc هو خطأ مختلف.
لا يوجد Diagnostics: Command ما لم تُمنح تلك الصفحة أيضًا.
cd lab
./run.sh
واجهة الاسترجاع 127.0.0.1:19010. مشروع Compose باسم pfsense-ldap-name-collision. الشاهد PFSENSE-LDAP-NAME-COLLISION-WITNESS. واجهة الاسترجاع فقط: 127.0.0.1:19010. مشروع Compose باسم pfsense-ldap-name-collision. الشاهد PFSENSE-LDAP-NAME-COLLISION-WITNESS. أداة PHP للأسطر المثبّتة. تُفكَّك الحزمة بعد التشغيل.
السطر الأخير:
SUCCESS PFSENSE-LDAP-NAME-COLLISION control-isadmin=no control-diag=no control-hash-unchanged=yes trigger-isadmin=yes trigger-all-pages=yes trigger-hash-set=yes uid-loose-eq=yes PFSENSE-LDAP-NAME-COLLISION-WITNESS
لا تُسند اسمًا بعيدًا إلى صف محلي بمعرّف uid 0. استخدم مقارنة صارمة uid === '0' مع مصدر المصادقة. اجعل passwordmg من نوع warn-root.
9363ac5b8651a1c7a333180425ce7719070f95f9