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

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

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

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

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

Категории

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

pfsense-carp-vhid

pfSense CE 2.9.0-DEVELOPMENT — высокий уровень — удалённое выполнение кода — остаточный CARP VHID

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

Популярное

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

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

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

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

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

Abraxas Labs - pfsense-carp-vhid

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

pfsense-carp-vhid

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

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

Редактирование виртуального IP сохраняет CARP VHID из POST без проверки диапазона 1-255. Опции Form_Select существуют только в HTML. При применении CARP VHID обрабатывается escapeshellarg. При применении составного IP Alias значение vhid {$carpvip['vhid']} подставляется вне escapeshellarg. Статус CARP подставляет тот же сохранённый VHID в конвейер grep с двойными кавычками; точка с запятой остаётся в кавычках, но подстановка команд всё равно выполняется под /bin/sh -c. Требуемые привилегии — редактирование VIP + применение, а не Diagnostics: Command.

IDCVE пока нет
КлассRCE
ДоступУдалённый (аутентифицированный WebGUI)
CWECWE-78
CVSSHigh: 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) CARP VHID
АутентификацияСессия WebGUI с правами редактирования VIP + применения (статус/виджет — более поздний триггер)
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Я зафиксировал публичный master 9363ac5. Лаборатория представляет собой PHP-гаджет из зафиксированных interface_carp_configure, составного ipalias mwexec и статуса exec. Loopback 127.0.0.1:18830.

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

МетодТочка сбросаПривилегия
POST carp VIP с нецелочисленным VHID, затем применение составного IP Alias на родителе _vip{uniqid}mwexec ifconfig ... alias {$gateway} {$vhid} (interfaces.inc:3238)Integrity (подтверждено в лаборатории): root shell. В лаборатории ipalias-unescaped записал свидетельство. Применение CARP с тем же VHID не записало ничего (carp-escaped=yes).
Тот же сохранённый VHID, затем GET status_carp.php или рендеринг carp_status.widget.phpexec конвейер grep (pfsense-utils.inc:794)Integrity (подтверждено в лаборатории): подстановка команд внутри двойных кавычек выполнилась и записала свидетельство (status-sink=yes, status-subst=yes). Точка с запятой осталась в кавычках. Триггер виджета может быть из другой сессии GUI.
Тот же root shellфайловая система хостаRecon (предположительно): config.xml, ключи.
Root shell или сломанный ifconfigустройства CARP / aliasAvailability (предположительно): нарушение работы интерфейса / CARP / фильтра.

Подтверждено в лаборатории vs предположительно: carp-escaped, свидетельство ipalias-unescaped и свидетельство подстановки команд в статусе подтверждены в лаборатории. Разведка файловой системы и нарушение работы фильтра предполагаются исходя из root PHP-FPM.

Требуется: page-firewall-virtualipaddress-edit (сохранение) и page-firewall-virtualipaddresses (применение). Точка сброса статуса: page-status-carp или любая панель управления с виджетом CARP. CSRF на POST.

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

ПоверхностьЛаборатория
Само применение CARPescapeshellarg для VHID, carp-escaped=yes
Пароль CARP / advbase / advskew / subnetis_ipaddr / экранировано
Без аутентификациизакрыто
xmlrpc-применение тех же объектов без учётных данных HASA-26_22 skip-list
Diagnostics: Commandостаётся закрытым, если не предоставлено дополнительно

Лаборатория

cd lab
./run.sh

Loopback 127.0.0.1:18830. Проект Compose pfsense-carp-vhid. Тег образа pfsense-carp-vhid:2.9.0-dev. Свидетельство PFSENSE-CARP-VHID-WITNESS. Последняя строка:

SUCCESS PFSENSE-CARP-VHID carp-escaped=yes ipalias-unescaped=yes status-sink=yes PFSENSE-CARP-VHID-WITNESS

Исправление

Ограничить VHID целочисленным диапазоном 1-255 при сохранении. Применять escapeshellarg к VHID при применении составного IP Alias и в grep статуса — так же, как это уже делает применение CARP.

Ссылки

  • github.com/pfsense/pfsense 9363ac5b8651a1c7a333180425ce7719070f95f9
  • firewall_virtual_ip.inc saveVIP
  • interfaces.inc составной ipalias mwexec
  • pfsense-utils.inc grep статуса CARP
  • CWE-78
Скачать инструмент