
pfSense CE 2.9.0-DEVELOPMENT - उच्च - रिमोट - RCE - CARP VHID अवशेष
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-carp-vhid
राइट-अप: https://abraxaslabs.tech/research/pfsense-carp-vhid
वर्ग: RCE पहुँच: रिमोट
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
वर्चुअल IP संपादन POST से CARP VHID को बिना 1-255 जाँच के संग्रहीत करता है। Form_Select विकल्प केवल HTML हैं। CARP apply VHID पर escapeshellarg लगाता है। स्टैक्ड IP Alias apply vhid {$carpvip['vhid']} को escapeshellarg के बाहर इंटरपोलेट करता है। CARP स्टेटस उसी संग्रहीत VHID को डबल-कोटेड grep पाइपलाइन में इंटरपोलेट करता है; सेमीकोलन कोटेड रहता है, कमांड सबस्टीट्यूशन अभी भी /bin/sh -c के अंतर्गत चलता है। विशेषाधिकार VIP संपादन + apply है, Diagnostics: Command नहीं।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | RCE |
| पहुँच | रिमोट (प्रमाणित WebGUI) |
| CWE | CWE-78 |
| 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) CARP VHID |
| प्रमाणीकरण | VIP संपादन + apply वाला WebGUI सत्र (स्टेटस/विजेट बाद में ट्रिगर है) |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
मैंने सार्वजनिक master 9363ac5 को पिन किया। लैब पिन किए गए interface_carp_configure, स्टैक्ड ipalias mwexec, और स्टेटस exec का एक PHP गैजेट है। लूपबैक 127.0.0.1:18830।
| विधि | सिंक | विशेषाधिकार |
|---|---|---|
गैर-पूर्णांक VHID के साथ carp VIP POST करें, फिर उस _vip{uniqid} पैरेंट पर स्टैक्ड IP Alias apply करें | mwexec ifconfig ... alias {$gateway} {$vhid} (interfaces.inc:3238) | अखंडता (लैब-प्रमाणित): रूट शेल। लैब: ipalias-unescaped ने witness लिखा। उसी VHID का CARP apply ने कुछ नहीं लिखा (carp-escaped=yes)। |
वही संग्रहीत VHID, फिर status_carp.php GET करें या carp_status.widget.php रेंडर करें | exec grep पाइपलाइन (pfsense-utils.inc:794) | अखंडता (लैब-प्रमाणित): डबल कोट्स के अंदर कमांड सबस्टीट्यूशन चला और witness लिखा (status-sink=yes, status-subst=yes)। सेमीकोलन कोटेड रहा। विजेट ट्रिगर किसी अन्य GUI सत्र से हो सकता है। |
| वही रूट शेल | होस्ट फ़ाइलसिस्टम | रीकॉन (अनुमानित): config.xml, कुंजियाँ। |
रूट शेल या टूटा हुआ ifconfig | CARP / alias डिवाइस | उपलब्धता (अनुमानित): इंटरफ़ेस / CARP / फ़िल्टर व्यवधान। |
लैब-प्रमाणित बनाम अनुमानित: carp-escaped, ipalias-unescaped witness, और स्टेटस कमांड-सबस्टीट्यूशन witness लैब-प्रमाणित हैं। फ़ाइलसिस्टम रीकॉन और फ़िल्टर व्यवधान रूट PHP-FPM से अनुमानित हैं।
आवश्यक: page-firewall-virtualipaddress-edit (सहेजें) और page-firewall-virtualipaddresses (apply)। स्टेटस सिंक: page-status-carp या CARP विजेट वाला कोई भी डैशबोर्ड। POST पर CSRF।
| सतह | लैब |
|---|---|
| CARP apply स्वयं | VHID पर escapeshellarg, carp-escaped=yes |
| CARP पासवर्ड / advbase / advskew / subnet | is_ipaddr / escaped |
| अनधिकृत | बंद |
| HA क्रेडेंशियल के बिना उन्हीं ऑब्जेक्ट्स का xmlrpc apply | SA-26_22 skip-list |
| Diagnostics: Command | बंद रहता है जब तक अलग से अनुदान न हो |
cd lab
./run.sh
Loopback 127.0.0.1:18830. Compose प्रोजेक्ट pfsense-carp-vhid. इमेज टैग pfsense-carp-vhid:2.9.0-dev. विटनेस PFSENSE-CARP-VHID-WITNESS. अंतिम पंक्ति:
SUCCESS PFSENSE-CARP-VHID carp-escaped=yes ipalias-unescaped=yes status-sink=yes PFSENSE-CARP-VHID-WITNESS
सहेजते समय VHID को 1-255 की पूर्णांक-सीमा में रखें। स्टैक्ड IP Alias लागू करने पर और स्टेटस grep पर VHID को escapeshellarg करें, जैसे CARP लागू करना पहले से ही करता है।
9363ac5b8651a1c7a333180425ce7719070f95f9firewall_virtual_ip.inc saveVIPinterfaces.inc स्टैक्ड ipalias mwexecpfsense-utils.inc CARP स्टेटस grep