
pfSense CE 2.9.0-DEVELOPMENT - متوسط - عن بُعد - SQLi - voucher_expire WHERE
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-voucher-expire-sqli
الفئة: SQLi الوصول: عن بُعد
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
voucher.inc captiveportal_read_db("WHERE username = '{$voucher}'") ثم sessionid الصف الأول إلى captiveportal_remove_entries. إدخال تسجيل الدخول غير المُصادَق يستخدم SQLite3::escapeString.
| المعرّف | لا يوجد CVE بعد |
| الفئة | SQLi |
| الوصول | عن بُعد (WebGUI مُصادَق عليه ما لم يُذكر خلاف ذلك) |
| CWE | CWE-89 |
| CVSS | متوسط: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L |
| المنتج | pfSense CE |
| المتأثر | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| المصادقة | جلسة WebGUI مع page-status-captiveportal-expire / page-services-captiveportal-vouchers |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط |
ثبّتُّ الفرع العام الرئيسي 9363ac5. المختبر عبارة عن PHP gadget للـ sink المثبّت، HTTP عبر loopback على 127.0.0.1:19280.
مقال السلسلة: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| الطريقة | الـ Sink | الصلاحية |
|---|---|---|
| POST voucher expire token | captiveportal_read_db WHERE username = '{$voucher}' | السلامة: مُثبت مختبريًا: UNION اختار sessionid آخر و stacked-UPDATE أعاد كتابة ذلك الصف. CONTROL expire حذف A فقط. مسار تسجيل الدخول غير المُصادَق بقي مُهرَّبًا. |
| نفس البقايا | نفس الـ sink | الاستطلاع: مُستنتَج: UNION يمكنه قراءة أعمدة جلسات أخرى من captiveportal{zone}.db. |
| نفس البقايا | نفس الـ sink | التوافر: مُثبت مختبريًا: فصل الصف الأول المُحقون؛ يمكن حذف/إعادة كتابة جلسة أخرى على قاعدة بيانات تلك المنطقة. |
يتطلب: page-status-captiveportal-expire / page-services-captiveportal-vouchers. CSRF-magic على POST ما لم يُذكر خلاف ذلك. WebGUI PHP-FPM يعمل بصلاحية root.
يتطلب: page-status-captiveportal-expire / page-services-captiveportal-vouchers. CSRF-magic على POST ما لم يُذكر خلاف ذلك. WebGUI PHP-FPM يعمل بصلاحية root. CSRF-magic على POST ما لم يُذكر خلاف ذلك. WebGUI PHP-FPM يعمل بصلاحية root.
تهريب تسجيل الدخول غير المُصادَق. voucher_auth لا يزال يستخدم escapeshellarg. لا shell. لا قاعدة بيانات منطقة أخرى. لا كوكي GUI.
لا Diagnostics: Command ما لم تُمنح تلك الصفحة أيضًا.
cd lab
./run.sh
Loopback 127.0.0.1:19280. مشروع Compose pfsense-voucher-expire-sqli. الشاهد PFSENSE-VOUCHER-EXPIRE-SQLI-WITNESS. Loopback فقط: 127.0.0.1:19280. مشروع Compose pfsense-voucher-expire-sqli. الشاهد PFSENSE-VOUCHER-EXPIRE-SQLI-WITNESS. PHP gadget للأسطر المثبّتة. تُفكّك الحزمة بعد التشغيل.
السطر الأخير:
SUCCESS PFSENSE-VOUCHER-EXPIRE-SQLI control-expire-only-a=yes control-login-escaped=yes trigger-rewrite-b=yes PFSENSE-VOUCHER-EXPIRE-SQLI-WITNESS
اربط المعاملات. توقف عن دمج voucher في SQL.
9363ac5b8651a1c7a333180425ce7719070f95f9