pfSense CE 2.9.0-DEVELOPMENT - Alta - Remota - RCE - Asistente de OpenVPN CRLF
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-openvpn-wizard-crlf
Clase: RCE Alcance: Remoto
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
El asistente de OpenVPN copia Default Domain / NetBIOS scope en dns_domain / netbios_scope sin ninguna comprobación is_domain(), y luego openvpn_add_dhcpopts() los escribe en un config.ovpn del servidor que ya tiene script-security 3. Una comilla más LF cierra la línea push "dhcp-option ..." y añade directivas de servidor, incluida up. El privilegio es Wizard Subsystem, no OpenVPN advanced. Hermano de SA-26_07, que solo nombraba vpn_openvpn_server.php.
| ID | sin CVE todavía |
| Clase | RCE |
| Alcance | Remoto (WebGUI autenticada) |
| CWE | CWE-74 / CWE-78 |
| CVSS | Alto: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Producto | pfSense CE |
| Afectado | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) asistente de OpenVPN |
| Auth | Sesión WebGUI con page-pfsensewizardsubsystem |
| Licencia | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 |
Fijé el master público 9363ac5. El lab es la asignación del asistente fijada más openvpn_add_dhcpopts, luego OpenVPN 2.6.14 en tun0. Loopback 127.0.0.1:18820. Si 2.9.0-RELEASE escapó del helper, este es el mismo SA que SA-26_07.
| Método | Sink | Privilegio |
|---|---|---|
Completar el asistente de OpenVPN Remote Access; establecer Default Domain (o NetBIOS scope) a un valor que cierre la línea push y añada up | openvpn_add_dhcpopts en el config.ovpn del servidor (openvpn.inc:697-738) con script-security 3 (:905) | Integridad (probado en lab): OpenVPN 2.6.14 ejecutó ese up en tun0 y escribió el testigo (up-exec=yes). El control example.com se mantuvo como un único push DOMAIN. |
| Comandos en el mismo host | OpenVPN up como el usuario del demonio (root en pfSense) | Recon (inferido): sistema de archivos del host, config.xml, claves. |
| Configuración de OpenVPN rota o comandos en el host | Servidor OpenVPN | Disponibilidad (inferido): interrupción de OpenVPN / firewall. |
Probado en lab vs inferido: la asignación del asistente, dhcpopts up, script-security 3, control-clean y tun0 up-exec están probados en lab. El reconocimiento del sistema de archivos se infiere del proceso up. El mismo veneno en un blob CCD no se ejecutó (ccd-up-ignored=yes).
Requiere: sesión WebGUI con page-pfsensewizardsubsystem. Token CSRF. No requiere page-openvpn-server ni page-openvpn-server-advanced.
| Superficie | Lab |
|---|---|
Dominio de control example.com | un push DOMAIN, control-clean=yes |
CCD up (subconjunto de OpenVPN 2.6) | ccd-up-ignored=yes |
| Sin auth / CSRF sin token | cerrado |
OpenVPN custom_options | privilegio avanzado previsto |
| Diagnostics: Command | permanece cerrado a menos que también se conceda |
cd lab
./run.sh
Loopback 127.0.0.1:18820. Proyecto Compose pfsense-openvpn-wizard-crlf. Etiqueta de imagen pfsense-openvpn-wizard-crlf:2.9.0-dev. Testigo PFSENSE-OPENVPN-WIZARD-CRLF-WITNESS. Última línea:
SUCCESS PFSENSE-OPENVPN-WIZARD-CRLF wizard-assign=yes dhcpopts-up=yes script-security-3=yes control-clean=yes up-exec=yes PFSENSE-OPENVPN-WIZARD-CRLF-WITNESS
is_domain() (o eliminar CR/LF/comillas) en defaultdomain / nbtscope del asistente antes de que se conviertan en dns_domain / netbios_scope, igual que ya hace IPsec mobile. Sanear dentro de openvpn_add_dhcpopts() para que todos los llamadores queden cubiertos, incluido el asistente.
9363ac5b8651a1c7a333180425ce7719070f95f9openvpn_wizard.incopenvpn.inc openvpn_add_dhcpoptsfd301381 (no está en este árbol público)