
pfSense CE 2.9.0-DEVELOPMENT - उच्च - रिमोट - RCE - OpenVPN विज़ार्ड CRLF
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-openvpn-wizard-crlf
Class: RCE Reach: Remote
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
OpenVPN wizard Default Domain / NetBIOS scope को dns_domain / netbios_scope में बिना किसी is_domain() जाँच के कॉपी करता है, फिर openvpn_add_dhcpopts() उन्हें एक सर्वर config.ovpn में लिखता है जिसमें पहले से ही script-security 3 मौजूद है। एक quote और LF push "dhcp-option ..." लाइन को बंद कर देता है और up सहित सर्वर निर्देश जोड़ देता है। विशेषाधिकार Wizard Subsystem का है, OpenVPN advanced का नहीं। यह SA-26_07 का सहोदर है, जिसने केवल vpn_openvpn_server.php का नाम लिया था।
| ID | अभी तक कोई CVE नहीं |
| Class | RCE |
| Reach | Remote (प्रमाणित WebGUI) |
| CWE | CWE-74 / CWE-78 |
| CVSS | High: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Product | pfSense CE |
| Affected | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) OpenVPN wizard |
| Auth | page-pfsensewizardsubsystem के साथ WebGUI सत्र |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 |
मैंने सार्वजनिक master 9363ac5 को पिन किया। लैब में पिन किया गया wizard assign और openvpn_add_dhcpopts, फिर tun0 पर OpenVPN 2.6.14 है। Loopback 127.0.0.1:18820। यदि 2.9.0-RELEASE में यह helper बच गया, तो यह SA-26_07 के समान SA है।
| Method | Sink | Privilege |
|---|---|---|
OpenVPN Remote Access wizard पूरा करें; Default Domain (या NetBIOS scope) को ऐसा मान सेट करें जो push लाइन को बंद करके up जोड़ दे | openvpn_add_dhcpopts द्वारा सर्वर config.ovpn में लिखना (openvpn.inc:697-738) script-security 3 (:905) के साथ | Integrity (लैब-प्रमाणित): OpenVPN 2.6.14 ने tun0 पर वह up चलाया और witness लिखा (up-exec=yes)। Control example.com एक ही DOMAIN push रहा। |
| वही होस्ट कमांड | OpenVPN up डेमन उपयोगकर्ता के रूप में (pfSense पर root) | Recon (अनुमानित): होस्ट फ़ाइलसिस्टम, config.xml, keys। |
| टूटी OpenVPN कॉन्फ़िग या होस्ट कमांड | OpenVPN सर्वर | Availability (अनुमानित): OpenVPN / फ़ायरवॉल व्यवधान। |
लैब-प्रमाणित बनाम अनुमानित: wizard assign, dhcpopts up, script-security 3, control-clean, और tun0 up-exec लैब-प्रमाणित हैं। फ़ाइलसिस्टम recon up प्रक्रिया से अनुमानित है। CCD blob में वही poison निष्पादित नहीं हुआ (ccd-up-ignored=yes)।
आवश्यक: page-pfsensewizardsubsystem के साथ WebGUI सत्र। CSRF token। page-openvpn-server या page-openvpn-server-advanced की आवश्यकता नहीं।
| Surface | Lab |
|---|---|
Control domain example.com | एक DOMAIN push, control-clean=yes |
CCD up (OpenVPN 2.6 subset) | ccd-up-ignored=yes |
| Unauth / बिना token के CSRF | बंद |
OpenVPN custom_options | इच्छित advanced विशेषाधिकार |
| Diagnostics: Command | जब तक अतिरिक्त रूप से अनुदानित न हो, बंद रहता है |
cd lab
./run.sh
Loopback 127.0.0.1:18820। Compose प्रोजेक्ट pfsense-openvpn-wizard-crlf। Image tag pfsense-openvpn-wizard-crlf:2.9.0-dev। Witness PFSENSE-OPENVPN-WIZARD-CRLF-WITNESS। अंतिम पंक्ति:
SUCCESS PFSENSE-OPENVPN-WIZARD-CRLF wizard-assign=yes dhcpopts-up=yes script-security-3=yes control-clean=yes up-exec=yes PFSENSE-OPENVPN-WIZARD-CRLF-WITNESS
wizard defaultdomain / nbtscope पर is_domain() (या CR/LF/quotes हटाएँ) लागू करें, इससे पहले कि वे dns_domain / netbios_scope बनें, जैसा IPsec mobile पहले से करता है। openvpn_add_dhcpopts() के अंदर sanitize करें ताकि हर caller कवर हो, wizard सहित।
9363ac5b8651a1c7a333180425ce7719070f95f9openvpn_wizard.incopenvpn.inc openvpn_add_dhcpoptsfd301381 (इस सार्वजनिक tree में नहीं)