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

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

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

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

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

Категории

Все категории
Loading categories
pfsense-api-unix-sock-noauth — pfSense Plus MIM API toolkit b4acd7ca — высокий — локальный — остаточные привилегии — unix sock enroll без JWT | Kitploit
Инструменты/GitHubGitHub/abraxas/pfsense-api-unix-sock-noauth
Повышение привилегийАнализ уязвимостейЭксплуатацияСбор информацииСетевая безопасностьТестирование на ПроникновениеАутентификацияЛаборатории и Практика

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHub
abraxas/pfsense-api-unix-sock-noauth

pfsense-api-unix-sock-noauth

pfSense Plus MIM API toolkit b4acd7ca — высокий — локальный — остаточные привилегии — unix sock enroll без JWT

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

Abraxas Labs - pfsense-api-unix-sock-noauth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-api-unix-sock-noauth

pfsense-api-unix-sock-noauth

Класс: Оставшиеся привилегии Доступ: Локальный

pfSense Plus MIM API b4acd7ca - Netgate

github.com/Netgate/pfsense-api — это публичный OpenAPI плюс сгенерированный Python для pfSense Plus Nexus Multi-instance Management. Это не пакет CE REST. Официальный пример enroll выполняет вход по HTTPS :8443 с Bearer JWT, а затем по SSH запускает POSIX-скрипт на каждом межсетевом экране. Этот скрипт обращается к /var/run/pfnet-controller.sock без Authorization.

curl --unix-socket /var/run/pfnet-controller.sock -H "Content-Type: application/json" -d "{controller JSON}" http://unix/api/mim/controllers
curl --unix-socket /var/run/pfnet-controller.sock http://unix/api/mim/device/identity

Устаревшие резервные эндпоинты /api/system/controller и /api/system/mim/devid одинаковы: без Bearer. HTTPS-вход всё ещё выдаёт JWT. Этот токен не применяется к локальному сокету на устройстве. Это отдельная граница доверия от :8443 плюс групп mim_*.

Часть 3 серии Nexus MIM. После того как G1 / G2 оказываются на устройстве, этот сокет становится локальной плоскостью.

Локальный процесс, способный выполнить connect(2) к сокету, может зарегистрировать контроллер и выгрузить идентичность устройства без JWT. Plus не выполнялся. Реальный DAC сокета неизвестен.

IDCVE пока нет
КлассОстаточные привилегии
ДостижимостьЛокальная (connect(2) к /var/run/pfnet-controller.sock)
CWECWE-306
CVSSВысокий: 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, если режим сокета позволяет подключиться другому локальному uid. Честно: DAC неизвестен, Plus не выполнялся.
ПродуктNetgate/pfsense-api (набор инструментов Plus Nexus MIM)
Затронутопубличная ветка main b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25)
Аутентификацияотсутствует на официальных curl-запросах регистрации через unix-сокет
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:19121. Unix HTTP-мок. Без образа Plus.

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

Актором является любой процесс на устройстве pfSense, способный выполнить connect(2) к /var/run/pfnet-controller.sock. В этом примере это не удалённый TCP (только curl --unix-socket). JWT HTTPS :8443 и группы mim_* не применяются к этому fd.

Доказано в лаборатории (мок опубликованного протокола регистрации)

МетодПриёмникПривилегия
Официальный POST device_script без AuthorizationPOST http://unix/api/mim/controllersЦелостность: мок принял JSON регистрации. В логе попадания authorization_present=false.
Официальный GET device_script без AuthorizationGET http://unix/api/mim/device/identityРазведка: мок вернул JSON в форме DeviceIdentity, включая PFSENSE-API-UNIX-SOCK-NOAUTH-WITNESS.
Тот же GET с Authorization: Bearer lab-jwtтот же путь идентичностиКонтроль в лаборатории: 401, свидетельство отсутствует в теле. Различает присутствие и отсутствие. Не результат Plus.

Предполагается на живом демоне Plus (бинарник не под тестом)

Это те же операции OpenAPI, которые официальный пример и тег mim размещают на устройстве. Доказано только как протокол, а не как ответ 200 от Plus.

МетодПриёмникПривилегия
POST /mim/controllers (резервный POST /api/system/controller) с атакующим ControllerIdentity (key, vpn_pubkey, vpn_listenaddr, vpn_netkey, cert)SetControllerЦелостность: зарегистрировать враждебный контроллер. Спецификация: устройство «будет продолжать отправлять запрос на подключение каждые 10 секунд» (Netgard VPN к атакующему).
GET /mim/device/identity (резервный GET /api/system/mim/devid)GetDeviceIdentityРазведка: публичные ключи Noise/VPN устройства, address, текст curl controller_add.
GET /mim/controllersGetControllersРазведка: список контроллеров плюс информация об устройстве (ControllerInfo.noise_secret, ключи).
GET /mim/controllers/id/{key}GetMIMControllerРазведка: одна запись контроллера.
DELETE /mim/controllers/id/{key}DeleteMIMControllerЦелостность / доступность: отменить регистрацию реального контроллера (ключ в hex или base64-URL).
POST /mim/device/pubkey с атакующими privkey / pubkeySetDevicePublicKey (DevicePublicKeyOption включает privkey)Целостность: заменить идентичность ED25519 устройства. Рукопожатие с контроллером затем доверяет ключу атакующего.

Сам по себе не даёт root-оболочку на хосте. Даёт плоскость MIM: кому устройство доверяет как контроллеру, и приватный ключ Noise устройства, если POST pubkey будет принят.

Требуется: локальный connect(2) к /var/run/pfnet-controller.sock. DAC (режим, владелец, группа, SO_PEERCRED) отсутствует в публичном клиентском дереве. Если демон привязывается к 0600 root, это уже локальный root (confused deputy для helper, пакета или escape, который может видеть /var/run). Если сокет доступен другому uid, CVSS 7.8 по оценке.

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

  • Неаутентифицированный удалённый TCP к /mim/controllers на Nexus HTTPS :8443. Этот порт документирован как User Manager JWT. Этот остаток — unix fd.
  • HTTPS POST /login по-прежнему выдаёт Bearer JWT. AuthenticatedClient по-прежнему отправляет его на CONTROLLER_URL+"/api".
  • Сгенерированная библиотека по умолчанию verify_ssl=True. Параметры пути percent-кодируют ../.
  • OpenAPI security: MISSING на всех 755 операциях — это пробел в схеме, а не доказанный неаутентифицированный обход HTTPS.
  • Эта лаборатория — unix HTTP mock. Она не доказывает, что бинарник Plus принял запрос.
  • Предназначенная администраторская Diagnostics php/shell на JWT суперпользователя. Не этот остаток.

Тот же пин, плоскость удалённой регистрации: pfsense-api-enroll-json-ssh и pfsense-api-enroll-autoadd. Карта серии: pfsense-api-nexus-mim.

Как я это нашёл

Я зафиксировал Netgate/pfsense-api b4acd7ca21dbca739a530403a1f62a7440f7726f и прочитал официальный цикл регистрации: login, GET /mim/controller/identity, stringify, SSH exec unix-socket POST/GET, POST /mim/devices. HTTPS использует AuthenticatedClient(token=...). Sock curls — нет.

Неверные повороты: трактовка отсутствующих securitySchemes как неаутентифицированного HTTPS (login тоже их не имеет; примеры всегда Bearer первым). Предположение, что сокет доступен на запись всем (режим отсутствует в этом репозитории). Утверждение о Plus 200. Остаток, доказанный здесь, — это опубликованный протокол регистрации.

Скачать инструмент