
pfSense CE 2.9.0-DEVELOPMENT - उच्च - रिमोट - RCE - wireless clone ifconfig
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-wireless-clone
Class: RCE Reach: Remote
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
interfaces_wireless_edit.php $_POST['if'] को बिना किसी allowlist के संग्रहीत करता है। interface_wireless_clone, interface_get_wireless_base($wlcfg['if']) को exec("/sbin/ifconfig wlan create wlandev {$baseif} {$mode} bssid 2>&1") में इंटरपोलेट करता है। _wlan suffix हटा दिया जाता है; उससे पहले का semicolon बच जाता है। Mode एक constant है। छिपा हुआ cloneif जनरेट किया जाता है, POST से नहीं लिया जाता।
| ID | अभी तक कोई CVE नहीं |
| Class | RCE |
| Reach | Remote (authenticated 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 session with page-interfaces-wireless-edit |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 |
मैंने public master 9363ac5 को pin किया। Lab, pinned sink का एक PHP gadget है, 127.0.0.1:18910 पर loopback HTTP।
Series write-up: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Method | Sink | Privilege |
|---|---|---|
| POST interfaces_wireless_edit.php if | interfaces.inc interface_wireless_clone exec ifconfig wlan create wlandev {$baseif} | Integrity: Lab-proven: POST if=ath0;w ने /bin/sh -c के माध्यम से अतिरिक्त w चलाया और witness लिखा। केवल wireless-edit से root host commands। |
| same leftover | same sink | Recon: Inferred: वही root shell config.xml और keys पढ़ सकता है। यह पेज exec output प्रिंट नहीं करता। |
| same leftover | same sink | Availability: Inferred: wireless clones पर hostile ifconfig। |
Requires: page-interfaces-wireless-edit. CSRF-magic on POST unless noted. WebGUI PHP-FPM is root.
Requires: page-interfaces-wireless-edit. CSRF-magic on POST unless noted. WebGUI PHP-FPM is root. CSRF-magic on POST unless noted. WebGUI PHP-FPM is root.
Mode injector नहीं है। छिपा हुआ cloneif POST से कॉपी नहीं किया जाता। Unauth N/A। Diagnostics: Command आवश्यक नहीं है और प्रदान नहीं किया गया।
कोई Diagnostics: Command नहीं, जब तक वह पेज भी प्रदान न किया गया हो।
cd lab
./run.sh
Loopback 127.0.0.1:18910. Compose project pfsense-wireless-clone. Witness PFSENSE-WIRELESS-CLONE-WITNESS. केवल loopback: 127.0.0.1:18910. Compose project pfsense-wireless-clone. Witness PFSENSE-WIRELESS-CLONE-WITNESS. Pinned lines का PHP gadget। रन के बाद stack tear down हो जाता है।
अंतिम पंक्ति:
SUCCESS PFSENSE-WIRELESS-CLONE control-wlandev=yes trigger-exec=yes hidden-cloneif-copied=no PFSENSE-WIRELESS-CLONE-WITNESS
Live wireless parents के विरुद्ध POST if को allowlist करें। ifconfig से पहले $baseif को escapeshellarg करें।
9363ac5b8651a1c7a333180425ce7719070f95f9