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 |
| प्रमाणीकरण | page-vpn-ipsec-mobile के साथ WebGUI सत्र |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
मैंने सार्वजनिक master 9363ac5 को पिन किया। लैब ipsec_strongswan_confgen और वास्तविक /usr/lib/ipsec/charon के साथ पिन है। लूपबैक 127.0.0.1:18850। include उपसर्ग का उपयोग नहीं किया गया।
| विधि | सिंक | विशेषाधिकार |
|---|---|---|
POST vpn_ipsec_mobile.php save में login_banner_enable + एक बैनर जो attr/plugins को बंद करता है और charon.start-scripts खोलता है, फिर POST apply | ipsec_strongswan_confgen अनउद्धृत key = {$value} (ipsec.inc:1378-1384); charon start-scripts का popen | अखंडता (लैब-सिद्ध): वास्तविक charon ने उत्पन्न conf लोड किया और start-scripts पथ को popen किया (charon=yes)। नियंत्रण बैनर Welcome attr के अंदर रहा (control-no-scripts=yes)। |
| वही popen | होस्ट फाइलसिस्टम | रीकॉन (अनुमानित): config.xml, कुंजियाँ। |
अमान्य strongswan.conf या IPsec पुनरारंभ | charon | उपलब्धता (अनुमानित): IPsec सुरंगें बाउंस होती हैं या शुरू होने में विफल रहती हैं। Apply पहले से ही IPsec को पुनरारंभ करता है। |
लैब-सिद्ध बनाम अनुमानित: control-no-scripts, उत्पन्न conf में start-scripts, और वास्तविक charon popen लैब-सिद्ध हैं। फाइलसिस्टम रीकॉन उस popen से अनुमानित है। इंजेक्टेड ब्लॉक के बाद डमी अनुभाग confgen के तीन क्लोज़र को अवशोषित करते हैं ताकि फ़ाइल एक वैध सेटिंग्स ट्री बनी रहे।
आवश्यक: page-vpn-ipsec-mobile के साथ WebGUI सत्र। CSRF टोकन। उसी पृष्ठ पर Save फिर Apply। page-all, page-vpn-ipsec-editphase1, या IPsec raw-config textarea की आवश्यकता नहीं है।
| सतह | लैब |
|---|---|
नियंत्रण बैनर Welcome | attr के अंदर रहता है, कोई start-scripts नहीं |
| बिना टोकन के Unauth / CSRF | बंद |
OpenVPN config.ovpn | अलग बचा हुआ (G2) |
| P1 HTML XSS | SA-26_14 स्किप-लिस्ट |
page-vpn-ipsec-editphase1 | आवश्यक नहीं |
| Diagnostics: Command | बंद रहता है जब तक अलग से न दिया गया हो |
इस पृष्ठ पर IPsec mobile dns_domain पहले से ही is_domain() का उपयोग करता है।
cd lab
./run.sh
लूपबैक 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
ipsec_strongswan_confgen में login_banner को उद्धृत / एस्केप करें। Save पर } # और नई पंक्तियों को अस्वीकार करें (HTML विजेट पहले से ही एकल-पंक्ति Form_Input है)। DNS डोमेन के लिए इस पृष्ठ पर is_domain() पहले से मौजूद है; बैनर को उसी वर्ग की जांच की आवश्यकता है।
9363ac5b8651a1c7a333180425ce7719070f95f9vpn_ipsec_mobile.phpipsec.inc ipsec_strongswan_confgen / ipsec_setup_strongswancharon.start-scripts