
pfSense CE 2.9.0-DEVELOPMENT - Hoch - Remote - RCE - OpenVPN learn-address CN
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-ovpn-learn-cn
Klasse: RCE Reichweite: Remote
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
openvpn.learn-address.sh interpoliert CN unquoted in su -m unbound -c "... local_data ${CN}.${DOMAIN} ...". Gated auf unbound/regovpnclients. Eine CN ohne Shell-Zeichen platziert dennoch local-data.
| ID | noch keine CVE |
| Klasse | RCE |
| Reichweite | Remote (authentifiziertes WebGUI, sofern nicht anders angegeben) |
| CWE | CWE-78 |
| CVSS | Hoch: 8.1 CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Produkt | pfSense CE |
| Betroffen | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Auth | WebGUI-Sitzung mit OpenVPN cert client CN when Unbound Register OpenVPN clients is on |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 |
Ich habe den öffentlichen Master 9363ac5 gepinnt. Das Lab ist ein PHP-Gadget des gepinnten Sinks, Loopback-HTTP auf 127.0.0.1:19080.
Serien-Write-up: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Methode | Sink | Privileg |
|---|---|---|
| OpenVPN learn-address mit einer feindlichen CN | openvpn.learn-address.sh su -m unbound -c ... ${CN} | Integrität: Im Lab bewiesen: CN $(w) führte zusätzliches w als su -c-String aus. CONTROL platzierte außerdem unsanitisiertes local-data. |
| derselbe Leftover | derselbe Sink | Recon: Abgeleitet: Befehle als unbound. |
| derselbe Leftover | derselbe Sink | Verfügbarkeit: Abgeleitet: Resolver-local-data vergiften. |
Erfordert: OpenVPN cert client CN when Unbound Register OpenVPN clients is on. CSRF-Magic bei POST, sofern nicht anders angegeben. WebGUI PHP-FPM ist root.
Erfordert: OpenVPN cert client CN when Unbound Register OpenVPN clients is on. CSRF-Magic bei POST, sofern nicht anders angegeben. WebGUI PHP-FPM ist root. CSRF-Magic bei POST, sofern nicht anders angegeben. WebGUI PHP-FPM ist root.
Aus, sofern Register OpenVPN clients nicht aktiviert ist. Der lokale CN-Zeichensatz erlaubt möglicherweise dennoch einige Zeichen.
Kein Diagnostics: Command, sofern diese Seite nicht ebenfalls gewährt wird.
cd lab
./run.sh
Loopback 127.0.0.1:19080. Compose-Projekt pfsense-ovpn-learn-cn. Witness PFSENSE-OVPN-LEARN-CN-WITNESS. Nur Loopback: 127.0.0.1:19080. Compose-Projekt pfsense-ovpn-learn-cn. Witness PFSENSE-OVPN-LEARN-CN-WITNESS. PHP-Gadget der gepinnten Zeilen. Der Stack wird nach dem Lauf abgebaut.
Letzte Zeile:
SUCCESS PFSENSE-OVPN-LEARN-CN control-local-data=yes control-no-witness=yes m24-local-data-plant=yes trigger-exec=yes PFSENSE-OVPN-LEARN-CN-WITNESS
CN quoten. Shell-Metazeichen ablehnen. local-data über unbound-control ohne Shell beibehalten.
9363ac5b8651a1c7a333180425ce7719070f95f9