
pfSense Plus MIM API toolkit b4acd7ca — высокий — удалённо — остаточные привилегии — GET export-key приватные ключи
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-api-export-key-get
Класс: Остаточные привилегии Достижимость: Удалённая
pfSense Plus MIM API (Netgate), пин b4acd7ca — публичный OpenAPI + сгенерированный Python-клиент для контроллера Nexus Multi-instance Management.
GET /system/certauth/{refid}/export-key документирован как «Download the CA certificate signing key». GET /system/certificates/{refid}/export-key — «Download the certificate's private key». GET /system/certificates/{refid}/export-p12 — унифицированный файл PKCS12 без парольной защиты. Документация сопоставляет GET под /system с mim_system_read / mim_read_system. mim_view документирован как не содержащий конфиденциальной информации. В спецификации нет securitySchemes и нет безопасности на уровне операций. Сгенерированный _get_kwargs — это метод плюс URL в кавычках. Авторизация туда никогда не добавляется.
Это не php, не shell и не firmware POST. Украденного JWT из примера G9 с пропуском TLS или токена флота G6 достаточно, чтобы вызвать эти GET-запросы. Является ли read-ориентированный MIM JWT достаточным на Plus — это и есть остаток. Я не запускал Plus. RBAC Plus не выполнялся.
| ID | CVE пока нет |
| Класс | Остаточные привилегии |
| Достижимость | Удалённая (аутентифицированный HTTP к контроллеру Nexus; лаборатория — это публичный контракт клиента) |
| CWE | CWE-200, CWE-862 |
| CVSS | Высокий: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N, если read-ориентированный MIM JWT может вызывать эти GET-запросы |
| Продукт | Netgate/pfsense-api (контроллер pfSense Plus Nexus MIM OpenAPI + сгенерированный клиент) |
| Затронуто | пин b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25). OpenAPI 3.0.3, заголовок pfSense API версии 1.0. Plus 25.11+. Не пакет CE REST. |
| Аутентификация | Документированный Nexus JWT (POST /login, Bearer). Лаборатория — это публичный OpenAPI плюс контракт сгенерированного _get_kwargs. RBAC Plus не выполнялся. |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1:19141. Без образа Plus. |
Я зафиксировал github.com/Netgate/pfsense-api b4acd7ca21dbca739a530403a1f62a7440f7726f. Не master после этого дня. Не сторонний пакет CE jaredhendrickson/pfsense-api.
Хаб серии: pfsense-api-nexus-mim. Этот пак — Часть 4.
Документация сопоставляет GET под /system с mim_system_read / mim_read_system. mim_view документирован как не содержащий конфиденциальной информации. Остаток — это экспорт приватного ключа через GET, с PKCS12, документированным как незащищённый, и сгенерированным _get_kwargs, который никогда не добавляет Authorization.
| Метод | Путь | Привилегия |
|---|---|---|
GET DownloadCAKey | /system/certauth/{refid}/export-key | Разведка (подтверждено в лаборатории на mock): тело application/octet-stream, содержащее witness PEM. Предполагается на Plus: ключ подписи сертификата CA, если RBAC разрешает GET. |
GET GetCertKey | /system/certificates/{refid}/export-key | Разведка (подтверждено в лаборатории на mock): witness PEM. Предполагается на Plus: закрытый ключ листа. |
GET GetCertP12 | /system/certificates/{refid}/export-p12 | Разведка (подтверждено в лаборатории на mock): то же witness-тело. Предполагается на Plus: сертификат плюс ключ в виде PKCS12 без парольной защиты (сводка OpenAPI). |
Сгенерированный _get_kwargs | все три операции | Разведка (подтверждено в лаборатории): kwargs — это только method плюс url в кавычках. Ни headers, ни Authorization, ни Bearer. |
Client (без токена) | все три операции | Разведка (подтверждено в лаборатории): три попадания в mock с has_authorization=false и witness-телом (client-no-auth=yes, witness-body=yes). |
AuthenticatedClient | все три операции | Разведка (подтверждено в лаборатории): три попадания в mock с Authorization: Bearer mock-token (authed-bearer=3). Bearer — это свойство обёртки, а не _get_kwargs. |
| Украденный JWT из G9 MITM или токен флота G6 | те же три GET, плюс /api/device/pfsense/{device_id}/api, если остаток флота его содержит | Разведка (предполагается, по цепочке): извлечь ключи CA / листа для контроллера и каждого зарегистрированного экземпляра, который токен может назвать. |
| Использование украденных ключей CA / листа | TLS, VPN, IPsec, сертификаты WebGUI | Целостность (предполагается, не проверено в лаборатории): выпуск дочерних сертификатов от имени CA; выдача себя за TLS-имя Nexus; расшифровка туннелей, использующих эти сертификаты. Само по себе это не Unix root. |
| Связанные GET списка/деталей | /system/certauth?withprivkey=true, поля сертификата prv / private_key | Разведка (спецификация, не эта лаборатория): массовый дамп тех же секретов. Здесь не проверялось. |
Доступность: не требуется.
Подтверждено в лаборатории vs предполагается: три GET-пути OpenAPI, фраза PKCS12 «без парольной защиты», _get_kwargs без Authorization, три попадания Client без аутентификации с witness PEM, три попадания AuthenticatedClient с Bearer и pin-клонирование pfapi_openapi.yml подтверждены в лаборатории. Ответы 200 для mim_system_read / mim_view на Plus, выпуск дочерних сертификатов и извлечение ключей по всему флоту предполагаются. Также RBAC на Plus не выполнялся.
Требуется (предполагается, Plus не выполнялся): вход в Nexus плюс группа, которой разрешён GET по /system/certauth и /system/certificates. Не admins / mim_superuser, если остаток реален. Не Diagnostics: Command. Сетевой путь к контроллеру :8443 (или прокси устройства) с JWT.