Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
pfsense-limiter-number — pfSense CE 2.9.0-DEVELOPMENT — высокий уровень — удалённый — RCE — limiter number dnctl | Kitploit
Инструменты/GitHubGitHub/abraxas/pfsense-limiter-number
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и УправлениеRed TeamingЛаборатории и Практика
GitHubabraxas/pfsense-limiter-number

pfsense-limiter-number

pfSense CE 2.9.0-DEVELOPMENT — высокий уровень — удалённый — RCE — limiter number dnctl

Репозиторий
11148 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Abraxas Labs - pfsense-limiter-number

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-limiter-number

Разбор: https://abraxaslabs.tech/research/pfsense-limiter-number

pfsense-limiter-number

Класс: RCE Доступ: Удалённый

pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org

Ограничители Traffic Shaper при редактировании передают скрытое поле number. Создание перезаписывает это число через dnpipe_find_nextnumber(). Редактирование — нет. validate_input никогда не проверяет number. GetNumber() без кавычек конкатенируется в dnctl pipe|sched|queue delete. PHP mwexec — это /bin/sh -c. Привилегия — page-firewall-trafficshaper-limiter, а не Diagnostics: Command.

IDCVE пока нет
КлассRCE
ДоступУдалённый (аутентифицированный WebGUI)
CWECWE-78
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) поле number ограничителя
АутентификацияСессия WebGUI с page-firewall-trafficshaper-limiter
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Я зафиксировал публичный master 9363ac5. Лаборатория — это PHP-гаджет с зафиксированными ReadConfig / SetNumber / delete_queue. Loopback 127.0.0.1:18840.

Что может сделать атакующий

МетодТочка сбросаПривилегия
Создать ограничитель, отправить POST save с подконтрольным атакующему number, затем удалить этот ограничительmwexec("/sbin/dnctl pipe delete " . $this->GetNumber()) (shaper.inc:3820)Целостность (доказано в лаборатории): root shell. Лаборатория: edit-delete записал свидетельство (edit-delete-exec=yes). Перезапись при создании и путь apply-file не записали ничего.
Тот же root shellфайловая система хостаРазведка (предположительно): config.xml, ключи.
Root shell или dnctl с подконтрольными номерамиdummynetДоступность (предположительно): нарушение работы ограничителя / dummynet.

Доказано в лаборатории vs предположительно: перезапись при создании (без свидетельства), путь apply-file (dnctl файла, без свидетельства) и exec при edit-delete (со свидетельством) доказаны в лаборатории. Разведка файловой системы выведена из root PHP-FPM.

Требуется: сессия WebGUI с page-firewall-trafficshaper-limiter. CSRF при POST save. Удаление — GET action=delete.

Смежная поверхность, которая остаётся закрытой

ПоверхностьЛаборатория
Путь созданияdnpipe_find_nextnumber() перезаписывает, create-overwrites=yes
Путь примененияdnctl для /tmp/rules.limiter, имя файла не контролируется пользователем, apply-file=yes
Набор символов имени ограничителя^[a-zA-Z0-9_-]+$
Без аутентификациизакрыто
Diagnostics: Commandостаётся закрытым, если не предоставлено дополнительно

Параметры AQM в /tmp/rules.limiter — это дополнительный язык dummynet, а не данная недоделка.

Лаборатория

cd lab
./run.sh

Loopback 127.0.0.1:18840. Проект Compose pfsense-limiter-number. Тег образа pfsense-limiter-number:2.9.0-dev. Свидетель PFSENSE-LIMITER-NUMBER-WITNESS. Последняя строка:

SUCCESS PFSENSE-LIMITER-NUMBER create-overwrites=yes apply-file=yes edit-delete-exec=yes PFSENSE-LIMITER-NUMBER-WITNESS

Исправление

Приводить GetNumber() к int перед каждым вызовом dnctl. Игнорировать POST-параметр number при редактировании или проверять его диапазон по актуальному id dummynet. Создание уже перезаписывает; сделать то же самое при редактировании.

Ссылки

  • github.com/pfsense/pfsense 9363ac5b8651a1c7a333180425ce7719070f95f9
  • shaper.inc delete_queue / GetNumber
  • firewall_shaper_vinterface.php
  • CWE-78
Скачать инструмент