
pfSense CE 2.9.0-DEVELOPMENT — High — Remote — Остаточные привилегии — wizard uid 0
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-wizard-uid0
Класс: Остаточные привилегии Достижимость: Удалённая
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
wizard.php?xml=setup_wizard.xml шаг 7 getUserEntryByUID(0) плюс local_user_set_password(). Привилегия MATCH wizard.php* не имеет warn-root. xml= имеет префикс realpath в /usr/local/www/wizards.
| ID | CVE пока нет |
| Класс | Остаточные привилегии |
| Достижимость | Удалённая (аутентифицированный WebGUI, если не указано иное) |
| CWE | CWE-269 |
| CVSS | Высокий: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Продукт | pfSense CE |
| Затронуто | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Аутентификация | Сессия WebGUI с page-pfsensewizardsubsystem |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1 |
Я зафиксировал публичный master 9363ac5. Лаборатория — это PHP-гаджет зафиксированного sink, loopback HTTP на 127.0.0.1:19020.
Статья серии: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Метод | Sink | Привилегия |
|---|---|---|
| POST wizard.php?xml=setup_wizard.xml шаг 7 | getUserEntryByUID(0) local_user_set_password | Целостность: Доказано в лаборатории: шаг 7 перезаписал bcrypt-хеш uid 0. LFI через xml= закрыт (../etc/passwd и абсолютный путь отклонены). |
| тот же остаток | тот же sink | Разведка: Предположительно: тот же мастер перезаписывает WAN/LAN/DHCP/hostname. |
| тот же остаток | тот же sink | Доступность: Предположительно: заблокировать оператора от LAN. |
Требуется: page-pfsensewizardsubsystem. CSRF-magic при POST, если не указано иное. WebGUI PHP-FPM работает от root.
Требуется: page-pfsensewizardsubsystem. CSRF-magic при POST, если не указано иное. WebGUI PHP-FPM работает от root. CSRF-magic при POST, если не указано иное. WebGUI PHP-FPM работает от root.
LFI через префикс realpath в xml=. page-system-usermanager имеет warn-root для того же класса.
Нет Diagnostics: Command, если эта страница также не предоставлена.
cd lab
./run.sh
Loopback 127.0.0.1:19020. Compose-проект pfsense-wizard-uid0. Свидетель PFSENSE-WIZARD-UID0-WITNESS. Только loopback: 127.0.0.1:19020. Compose-проект pfsense-wizard-uid0. Свидетель PFSENSE-WIZARD-UID0-WITNESS. PHP-гаджет зафиксированных строк. Стек разбирается после запуска.
Последняя строка:
SUCCESS PFSENSE-WIZARD-UID0 lfi-closed=yes control-no-hash-change=yes trigger-uid0-hash-change=yes wizard-no-warn-root=yes usermanager-warn-root=yes PFSENSE-WIZARD-UID0-WITNESS
Пометить wizard.php как standard-warning-root или убрать пароль uid 0 из мастера настройки после первой загрузки.
9363ac5b8651a1c7a333180425ce7719070f95f9