
pfSense CE 2.9.0-DEVELOPMENT - Medio - Remoto - Redirección abierta - HTTP 301 $http_host
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-https-host-redirect
Clase: Redirección abierta Alcance: Remoto
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
system.inc emite un server{} en el puerto 80 con return 301 https://$http_host$redirectport$request_uri; y sin server_name. nginx devuelve el 301 antes de php-fpm, por lo que el DNS-rebind de auth.inc nunca se ejecuta.
| ID | aún sin CVE |
| Clase | Redirección abierta |
| Alcance | Remoto (WebGUI autenticada salvo que se indique lo contrario) |
| CWE | CWE-601 |
| CVSS | Medio: 4.7 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:N/A:N |
| Producto | pfSense CE |
| Afectado | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Autenticación | Sesión de WebGUI con unauth client that can hit the WebGUI HTTP listener |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1 |
Fijé el master público 9363ac5. El laboratorio es un gadget PHP del sink fijado, HTTP en loopback sobre 127.0.0.1:19210.
Artículo de la serie: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Método | Sink | Privilegio |
|---|---|---|
| GET / sin autenticar en TCP/80 con un Host hostil | nginx return 301 https://$http_host... | Integridad: Ninguna. |
| mismo remanente | mismo sink | Reconocimiento: Probado en laboratorio: el Host evil.example se convirtió en Location https://evil.example/index.php. El DNS-rebind 501 de PHP no se ejecuta en este 301. |
| mismo remanente | mismo sink | Disponibilidad: Ninguna demostrada. |
Requiere: unauth client that can hit the WebGUI HTTP listener. CSRF-magic en POST salvo que se indique lo contrario. WebGUI PHP-FPM es root.
Requiere: unauth client that can hit the WebGUI HTTP listener. CSRF-magic en POST salvo que se indique lo contrario. WebGUI PHP-FPM es root. CSRF-magic en POST salvo que se indique lo contrario. WebGUI PHP-FPM es root.
DNS-rebind de PHP en la propia GUI HTTPS.
Sin Diagnostics: Command a menos que esa página también esté concedida.
cd lab
./run.sh
Loopback 127.0.0.1:19210. Proyecto de Compose pfsense-https-host-redirect. Testigo PFSENSE-HTTPS-HOST-REDIRECT-WITNESS. Solo loopback: 127.0.0.1:19210. Proyecto de Compose pfsense-https-host-redirect. Testigo PFSENSE-HTTPS-HOST-REDIRECT-WITNESS. Gadget PHP de las líneas fijadas. El stack se desmonta tras la ejecución.
Última línea:
SUCCESS PFSENSE-HTTPS-HOST-REDIRECT control-localhost=yes trigger-evil=yes php-rebind-skips-301=yes PFSENSE-HTTPS-HOST-REDIRECT-WITNESS
Usar un nombre de host configurado, o $host (en lista de permitidos), no $http_host.
9363ac5b8651a1c7a333180425ce7719070f95f9