
pfSense CE 2.9.0-DEVELOPMENT - उच्च - रिमोट - RCE - assign Add if_add
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-assign-if-add
Class: RCE Reach: Remote
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
interfaces_assign.php Add, $_POST['if_add'] को $portlist सदस्यता के बिना संग्रहीत करता है। Submit केवल $portlist में मौजूद पोर्ट्स को रीमैप करता है। wireless_regex /^(ath|...)[0-9]+/ है जिसमें $ नहीं है। ath0;w मेल खाता है। Clone के साथ get_wireless_modes ifconfig में इंटरपोलेट करता है।
| ID | अभी तक कोई CVE नहीं |
| Class | RCE |
| Reach | Remote (जब तक अन्यथा न कहा जाए, प्रमाणित WebGUI) |
| CWE | 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) |
| Auth | WebGUI सत्र जिसमें page-interfaces-assignnetworkports then GET interfaces.php?if=optN हो |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 |
मैंने सार्वजनिक master 9363ac5 को पिन किया। लैब पिन किए गए sink का एक PHP gadget है, 127.0.0.1:18920 पर loopback HTTP।
श्रृंखला लेख: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Method | Sink | Privilege |
|---|---|---|
| POST interfaces_assign.php if_add, फिर GET interfaces.php?if=optN | unanchored wireless_regex फिर interface_wireless_clone ifconfig | Integrity: लैब-प्रमाणित: Add ने ath0;w को opt1 के रूप में संग्रहीत किया; GET interfaces.php?if=opt1 ने clone ifconfig चलाया; अतिरिक्त w ने witness लिखा। |
| वही leftover | वही sink | Recon: अनुमानित: root shell होस्ट फ़ाइलें पढ़ सकता है। |
| वही leftover | वही sink | Availability: अनुमानित: असाइन किए गए पोर्ट्स पर hostile ifconfig। |
आवश्यक: page-interfaces-assignnetworkports then GET interfaces.php?if=optN। जब तक अन्यथा न कहा जाए, POST पर CSRF-magic। WebGUI PHP-FPM root है।
आवश्यक: page-interfaces-assignnetworkports then GET interfaces.php?if=optN। जब तक अन्यथा न कहा जाए, POST पर CSRF-magic। WebGUI PHP-FPM root है। जब तक अन्यथा न कहा जाए, POST पर CSRF-magic। WebGUI PHP-FPM root है।
गैर-portlist if_add का Submit रीमैप exec नहीं करता। Diagnostics: Command आवश्यक नहीं।
कोई Diagnostics: Command नहीं, जब तक वह पृष्ठ भी अनुदत्त न हो।
cd lab
./run.sh
Loopback 127.0.0.1:18920. Compose प्रोजेक्ट pfsense-assign-if-add. Witness PFSENSE-ASSIGN-IF-ADD-WITNESS. केवल loopback: 127.0.0.1:18920. Compose प्रोजेक्ट pfsense-assign-if-add. Witness PFSENSE-ASSIGN-IF-ADD-WITNESS. पिन की गई पंक्तियों का PHP gadget. रन के बाद स्टैक टूट जाता है।
अंतिम पंक्ति:
SUCCESS PFSENSE-ASSIGN-IF-ADD control-no-exec=yes trigger-exec=yes PFSENSE-ASSIGN-IF-ADD-WITNESS
if_add को $portlist में आवश्यक बनाएं। wireless_regex को $ के साथ anchor करें। clone नामों को escapeshellarg करें।
9363ac5b8651a1c7a333180425ce7719070f95f9