
pfSense CE 2.9.0-DEVELOPMENT - Médio - Remoto - Injeção de configuração - ISC dhcpd filename
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-dhcpd-conf
Classe: Injeção de configuração Alcance: Remoto
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
services_dhcpdv4_configure interpola filename "{$sm['filename']}"; sem addslashes. A GUI armazena $_POST['filename'] sem barreira de aspas/nova linha. O JSON do Kea é ignorado pelo SA-26_20.
| ID | ainda sem CVE |
| Classe | Injeção de configuração |
| Alcance | Remoto (WebGUI autenticada, salvo indicação em contrário) |
| CWE | CWE-74 |
| CVSS | Médio: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L |
| Produto | pfSense CE |
| Afetado | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Autenticação | Sessão WebGUI com page-services-dhcpserver-editstaticmapping |
| Licença | GNU Affero GPL v3.0 |
| Laboratório | apenas 127.0.0.1 |
Fixeio o master público 9363ac5. O laboratório é um gadget PHP do sink fixado, HTTP em loopback em 127.0.0.1:19250.
Série de artigos: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Método | Sink | Privilégio |
|---|---|---|
| POST services_dhcp_edit.php filename | filename "{$sm['filename']}"; | Integridade: Comprovado em laboratório: opção extra tftp-server-name na conf do chroot. O filename nunca chegou ao argv. |
| mesmo resquício | mesmo sink | Reconhecimento: Nada demonstrado. |
| mesmo resquício | mesmo sink | Disponibilidade: Inferido: falha de parsing do dhcpd ou opção PXE extra. |
Requer: page-services-dhcpserver-editstaticmapping. CSRF-magic no POST, salvo indicação em contrário. O PHP-FPM da WebGUI é root.
Requer: page-services-dhcpserver-editstaticmapping. CSRF-magic no POST, salvo indicação em contrário. O PHP-FPM da WebGUI é root. CSRF-magic no POST, salvo indicação em contrário. O PHP-FPM da WebGUI é root.
Shell do host. Arquivos fora do chroot. JSON do Kea. Conjunto de caracteres do hostname. Aspas de texto em numberoptions.
Sem Diagnostics: Command, a menos que essa página também seja concedida.
cd lab
./run.sh
Loopback 127.0.0.1:19250. Projeto Compose pfsense-dhcpd-conf. Testemunha PFSENSE-DHCPD-CONF-WITNESS. Apenas loopback: 127.0.0.1:19250. Projeto Compose pfsense-dhcpd-conf. Testemunha PFSENSE-DHCPD-CONF-WITNESS. Gadget PHP das linhas fixadas. A stack é desmontada após a execução.
Última linha:
SUCCESS PFSENSE-DHCPD-CONF control-one-filename=yes trigger-extra-statement=yes PFSENSE-DHCPD-CONF-WITNESS
addslashes / rejeitar aspas e nova linha em filename/rootpath/ldap/DUID.
9363ac5b8651a1c7a333180425ce7719070f95f9