pfSense CE 2.9.0-DEVELOPMENT - عالية - عن بُعد - RCE - IPsec login_banner start-scripts
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-ipsec-login-banner
الفئة: RCE الوصول: عن بُعد
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
يُخزَّن شعار تسجيل الدخول لـ IPsec Mobile مع فحص الطول فقط، ثم يُدرَج دون علامات اقتباس في strongswan.conf كـ charon.plugins.attr.28672. يُنهي strongSwan القيمة غير المُقتبسة عند }. يمكن لشعار آمن لـ Form_Input (بدون أسطر جديدة) أن يُغلق attr / plugins ويفتح charon.start-scripts. تطبيق Apply في تلك الصفحة هو strongswanrc restart. يستدعي charon مسارات start-scripts عبر popen عند بدئه. الصلاحية هي page-vpn-ipsec-mobile، وليس IPsec advanced / Diagnostics: Command.
| ID | لا يوجد CVE بعد |
| الفئة | RCE |
| الوصول | عن بُعد (WebGUI مُصادَق عليه) |
| CWE | CWE-74 |
| 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) IPsec login_banner |
| المصادقة | جلسة WebGUI مع page-vpn-ipsec-mobile |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط |
ثبّتُّ الفرع العام master عند 9363ac5. المختبر مثبَّت على ipsec_strongswan_confgen بالإضافة إلى /usr/lib/ipsec/charon الحقيقي. Loopback 127.0.0.1:18850. لم يُستخدم بادئة include .
| الطريقة | نقطة الوصول | الصلاحية |
|---|---|---|
POST vpn_ipsec_mobile.php حفظ مع login_banner_enable + شعار يُغلق attr/plugins ويفتح charon.start-scripts، ثم POST apply | ipsec_strongswan_confgen غير المُقتبس key = {$value} (ipsec.inc:1378-1384)؛ charon popen لـ start-scripts | السلامة (مُثبَت مختبريًا): حمّل charon الحقيقي الإعداد المُولَّد ونفّذ popen على مسار start-scripts (charon=yes). بقي شعار التحكم Welcome داخل attr (control-no-scripts=yes). |
| نفس popen | نظام ملفات المضيف | الاستطلاع (مُستنتَج): config.xml، المفاتيح. |
strongswan.conf غير صالح أو إعادة تشغيل IPsec | charon | التوافر (مُستنتَج): تنقطع أنفاق IPsec أو تفشل في البدء. تطبيق Apply يعيد تشغيل IPsec بالفعل. |
مُثبَت مختبريًا مقابل مُستنتَج: control-no-scripts، وstart-scripts في الإعداد المُولَّد، وpopen الحقيقي لـ charon كلها مُثبَتة مختبريًا. استطلاع نظام الملفات مُستنتَج من ذلك الـ popen. تمتص الأقسام الوهمية بعد الكتلة المُحقونة المُغلِّقات الثلاثة الخاصة بـ confgen بحيث يبقى الملف شجرة إعدادات صالحة.
يتطلب: جلسة WebGUI مع page-vpn-ipsec-mobile. رمز CSRF. حفظ ثم Apply في نفس الصفحة. لا يتطلب page-all أو page-vpn-ipsec-editphase1 أو textarea إعداد IPsec الخام.
| السطح | المختبر |
|---|---|
شعار التحكم Welcome | يبقى داخل attr، بدون start-scripts |
| غير مُصادَق / CSRF بدون رمز | مغلق |
OpenVPN config.ovpn | بقايا مختلفة (G2) |
| P1 HTML XSS | قائمة التخطي SA-26_14 |
page-vpn-ipsec-editphase1 | غير مطلوب |
| Diagnostics: Command | يبقى مغلقًا ما لم يُمنح أيضًا |
يستخدم dns_domain لـ IPsec mobile في هذه الصفحة بالفعل is_domain().
cd lab
./run.sh
Loopback 127.0.0.1:18850. مشروع Compose pfsense-ipsec-login-banner. وسم الصورة pfsense-ipsec-login-banner:2.9.0-dev. الشاهد PFSENSE-IPSEC-LOGIN-BANNER-WITNESS. السطر الأخير:
SUCCESS PFSENSE-IPSEC-LOGIN-BANNER control-no-scripts=yes start-scripts=yes charon=yes PFSENSE-IPSEC-LOGIN-BANNER-WITNESS
اقتبس / اهرب login_banner في ipsec_strongswan_confgen. ارفض } و# والأسطر الجديدة عند الحفظ (أداة HTML هي بالفعل Form_Input أحادي السطر). is_domain() موجودة بالفعل في هذه الصفحة لنطاق DNS؛ يحتاج الشعار إلى نفس فئة الفحص.
9363ac5b8651a1c7a333180425ce7719070f95f9vpn_ipsec_mobile.phpipsec.inc ipsec_strongswan_confgen / ipsec_setup_strongswancharon.start-scripts