
pfSense CE 2.9.0-DEVELOPMENT - उच्च - रिमोट - RCE - CP HA होस्ट से pfctl में
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-cp-ha-pfctl
Class: RCE Reach: Remote
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
captiveportal_load_pfctl, $host को unquoted रखते हुए mwexec("/usr/bin/printf "{$rules}" | /sbin/pfctl -a {$anchor}/{$host} -f-") चलाता है। backwardsyncip, is_ipaddr नहीं है।
| 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 | page-services-captiveportal-hasync के साथ WebGUI session |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 |
मैंने public master 9363ac5 को pin किया। Lab, pinned sink का एक PHP gadget है, जो 127.0.0.1:18990 पर loopback HTTP करता है।
Series write-up: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Method | Sink | Privilege |
|---|---|---|
| HA sync host / MAC को captiveportal_load_pfctl में | mwexec printf | pfctl -a {$anchor}/{$host} -f- |
| वही leftover | वही sink | Recon: Inferred: root shell। उस host का Peer blob / MITM plant inferred है, यह gadget नहीं। |
| वही leftover | वही sink | Availability: Inferred: CP pf anchors flush करना। |
Requires: page-services-captiveportal-hasync। जब तक अन्यथा न कहा जाए, POST पर CSRF-magic। WebGUI PHP-FPM root है।
Requires: page-services-captiveportal-hasync। जब तक अन्यथा न कहा जाए, POST पर CSRF-magic। WebGUI PHP-FPM root है। जब तक अन्यथा न कहा जाए, POST पर CSRF-magic। WebGUI PHP-FPM root है।
SA-26_05 widget XSS। #16339 status-output password sanitize।
Diagnostics: Command नहीं, जब तक वह page भी granted न हो।
cd lab
./run.sh
Loopback 127.0.0.1:18990। Compose project pfsense-cp-ha-pfctl। Witness PFSENSE-CP-HA-PFCTL-WITNESS। केवल loopback: 127.0.0.1:18990। Compose project pfsense-cp-ha-pfctl। Witness PFSENSE-CP-HA-PFCTL-WITNESS। pinned lines का PHP gadget। Run के बाद stack tear down हो जाता है।
अंतिम पंक्ति:
SUCCESS PFSENSE-CP-HA-PFCTL control-clean=yes trigger-exec=yes PFSENSE-CP-HA-PFCTL-WITNESS
$host और $anchor को escapeshellarg करें। HA fields को is_ipaddr / is_macaddr करें।
9363ac5b8651a1c7a333180425ce7719070f95f9