
pfSense CE 2.9.0-DEVELOPMENT — низкий — удалённый — CSRF — WOL GET wakeall
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-wol-get-all
Класс: CSRF Доступ: Удалённый
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
В services_wol.php по-прежнему присутствуют $_REQUEST['wakeall'] и href="services_wol.php?wakeall=true" без usepost. #16961 в этом публичном дереве — только заметки.
| ID | CVE пока нет |
| Класс | CSRF |
| Доступ | Удалённый (аутентифицированный WebGUI, если не указано иное) |
| CWE | CWE-352 |
| CVSS | Средний: 4.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N |
| Продукт | pfSense CE |
| Затронуто | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Аутентификация | Сессия WebGUI с page-services-wakeonlan (session; GET mutator) |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1 |
Я зафиксировал публичный master 9363ac5. Лаборатория — это PHP-гаджет зафиксированного sink, loopback HTTP на 127.0.0.1:19300.
Разбор серии: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Метод | Sink | Привилегия |
|---|---|---|
| GET services_wol.php?wakeall=true | send_wol() для каждого сохранённого MAC | Целостность: Доказано в лаборатории: GET ?wakeall=true отправил wol для обоих сохранённых MAC. CONTROL GET без wakeall не отправил ничего. |
| тот же остаток | тот же sink | Разведка: Нет. |
| тот же остаток | тот же sink | Доступность: Доказано в лаборатории: пробуждает сохранённые цели WOL. |
Требуется: page-services-wakeonlan (session; GET mutator). CSRF-magic на POST, если не указано иное. WebGUI PHP-FPM работает от root.
Требуется: page-services-wakeonlan (session; GET mutator). CSRF-magic на POST, если не указано иное. WebGUI PHP-FPM работает от root. CSRF-magic на POST, если не указано иное. WebGUI PHP-FPM работает от root.
Без аутентификации без сессионной cookie. SameSite=Strict по-прежнему применяется к CSRF с чужого сайта.
Нет Diagnostics: Command, если эта страница также не предоставлена.
cd lab
./run.sh
Loopback 127.0.0.1:19300. Compose-проект pfsense-wol-get-all. Свидетель PFSENSE-WOL-GET-ALL-WITNESS. Только loopback: 127.0.0.1:19300. Compose-проект pfsense-wol-get-all. Свидетель PFSENSE-WOL-GET-ALL-WITNESS. PHP-гаджет зафиксированных строк. Стек разбирается после запуска.
Последняя строка:
SUCCESS PFSENSE-WOL-GET-ALL control-no-packets=yes trigger-wake-all-get=yes PFSENSE-WOL-GET-ALL-WITNESS
wakeall только через POST. usepost на ссылке Wake All.
9363ac5b8651a1c7a333180425ce7719070f95f9