
pfSense CE 2.9.0-DEVELOPMENT — низкий уровень — удалённо — остаточный ioctl — родительский VLAN отсутствует в списке портов
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-vlan-parent-ioctl
Класс: остаточный ioctl Достижимость: удалённая
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
interfaces_vlan_edit.php строит $portlist только для Form_Select. Сохранение проверяет does_interface_exist($_POST['if']) и вызывает interface_vlan_configure. Проверки принадлежности $portlist нет. ifconfig vlan create использует escapeshellarg, так что это не shell.
| ID | CVE пока нет |
| Класс | остаточный ioctl |
| Достижимость | удалённая (аутентифицированный WebGUI, если не указано иное) |
| CWE | CWE-863 |
| CVSS | Средний: 4.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N |
| Продукт | pfSense CE |
| Затронуто | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Аутентификация | сессия WebGUI с page-interfaces-vlan-edit |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1 |
Я зафиксировал публичный master 9363ac5. Лаборатория — это PHP-гаджет зафиксированного sink, loopback HTTP на 127.0.0.1:19290.
Разбор серии: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Метод | Sink | Привилегия |
|---|---|---|
| POST interfaces_vlan_edit.php if= скрытый родитель | interface_vlan_configure / pfSense_vlan_create | Целостность: доказано в лаборатории: живой участник lagg, скрытый из UI, всё равно получил vlan create vlandev. Отсутствующий родитель и shell-метасимволы отклонены. |
| тот же остаток | тот же sink | Разведка: ничего не показано. |
| тот же остаток | тот же sink | Доступность: предполагается: vlan на kernel iface, который UI скрыл. |
Требуется: page-interfaces-vlan-edit. CSRF-magic при POST, если не указано иное. WebGUI PHP-FPM работает от root.
Требуется: page-interfaces-vlan-edit. CSRF-magic при POST, если не указано иное. WebGUI PHP-FPM работает от root. CSRF-magic при POST, если не указано иное. WebGUI PHP-FPM работает от root.
Не shell. Отсутствующий родитель отклонён. Shell-метасимволы отклонены.
Никаких Diagnostics: Command, если эта страница также не предоставлена.
cd lab
./run.sh
Loopback 127.0.0.1:19290. Compose-проект pfsense-vlan-parent-ioctl. Свидетель PFSENSE-VLAN-PARENT-IOCTL-WITNESS. Только loopback: 127.0.0.1:19290. Compose-проект pfsense-vlan-parent-ioctl. Свидетель PFSENSE-VLAN-PARENT-IOCTL-WITNESS. PHP-гаджет зафиксированных строк. Стек сносится после запуска.
Последняя строка:
SUCCESS PFSENSE-VLAN-PARENT-IOCTL control-portlist=yes reject-missing=yes no-shell=yes trigger-hidden-ioctl=yes PFSENSE-VLAN-PARENT-IOCTL-WITNESS
Требовать, чтобы POST if входил в $portlist, а не только does_interface_exist.
9363ac5b8651a1c7a333180425ce7719070f95f9