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

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

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

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

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

Категории

Все категории
Loading categories
pfsense-api-acme-key-dump — pfSense Plus MIM API toolkit b4acd7ca — высокий — удалённо — остаточные привилегии — GET /services/acme раскрывает ключи | Kitploit
Инструменты/GitHubGitHub/abraxas/pfsense-api-acme-key-dump
Анализ уязвимостейЭксплуатацияЭксфильтрация данныхСбор информацииВеб-безопасностьТестирование на ПроникновениеОбнаружение СекретовСтатьи и ИсследованияБезопасность API
GitHubabraxas/pfsense-api-acme-key-dump

pfsense-api-acme-key-dump

pfSense Plus MIM API toolkit b4acd7ca — высокий — удалённо — остаточные привилегии — GET /services/acme раскрывает ключи

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

Популярное

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

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

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

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

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

Abraxas Labs - pfsense-api-acme-key-dump

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-api-acme-key-dump

pfsense-api-acme-key-dump

Класс: Остаточные привилегии Доступ: Удалённый

pfSense Plus Nexus Multi-instance Management OpenAPI-инструментарий b4acd7ca — Netgate

GET /services/acme (GetACMEConfig) возвращает ACMEConfig без флага write-only или redacted. Схема ответа 200 включает приватный ключ учётной записи ACME, каждый выпущенный приватный ключ конечного сертификата, любой пользовательский ключ конечного сертификата и токены DNS-провайдеров, используемые для валидации. У менеджера сертификатов хотя бы есть выделенный GET .../export-key. У ACME такого нет. GET конфигурации — это и есть дамп.

Сессия контроллера, способная выполнить GET по этому пути, копирует каждый ключ hostname, который регистрирует межсетевой экран, а также учётные данные DNS, подтверждающие контроль над этими именами.

Это дерево — публичный OpenAPI плюс сгенерированный Python-клиент. Это не пакет CE REST. Контроллер MIM доступен только в Plus и отсутствует в репозитории GitHub. Я не взаимодействовал с живым контроллером. plus-not-executed=1.

IDCVE пока нет
КлассОстаточные привилегии (дамп секретов при GET конфигурации)
ДоступУдалённый (аутентифицированный контроллер MIM; неаутентифицированный доступ не доказан)
CWECWE-200
CVSSВысокий: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, если роль с доступом на чтение сервисов получает тело ответа. Если GET доступен только суперпользователю, дамп всё равно имеет неправильную форму для листинга конфигурации.
ПродуктNetgate/pfsense-api OpenAPI для pfSense Plus Nexus MIM
Затронутопубличная ветка main b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25, Add Snort-3 API definitions). Тегов нет.
АутентификацияJWT контроллера из POST /login. Примеры отправляют Bearer. В спецификации нет securitySchemes.
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:19151. Образ Plus отсутствует.

Хаб серии: pfSense Plus MIM leftovers. Это часть 5. Связывается с G9 stolen JWT (примеры устанавливают verify_ssl=False) и G6 fleet token (один Bearer от логина переиспользуется для каждого device_id). Родственный дамп: G4 cert-manager export-key.

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

Требуется сессия контроллера, способная выполнить GET /services/acme. Документация сопоставляет это с mim_services_read / mim_services / mim_superuser. Спецификация не привязывает эти роли к пути. RBAC в Plus не выполнялся.

Украденного JWT из G9 (MITM официальных примеров) или fleet-токена службы поддержки из G6 достаточно, чтобы направить этот GET на каждый зарегистрированный узел. Эта цепочка выведена предположительно. Данный остаток — это тело ответа GET.

Разведка

МетодSinkПривилегия
GET /services/acmeACMEConfig.account_keys[].account_key (format: byte)Лабораторно подтверждено на опубликованной спецификации и mock: схема 200 включает account_key; тело mock выполняет round-trip PFSENSE-API-ACME-KEY-DUMP-WITNESS. Предполагается на Plus: скопировать приватный ключ аккаунта Let's Encrypt (или другого ACME). Обратиться к ACME-аккаунту извне.
Тот же GETcerts[].issued_cert.privateKey (format: byte)Лабораторно подтверждено спецификацией+mock. Предполагается на Plus: скопировать каждый выданный приватный ключ leaf-сертификата, который зарегистрировал firewall. TLS-имперсонация извне для этих имён.
Тот же GETcerts[].custom_key (format: byte)Лабораторно подтверждено спецификацией+mock. Предполагается на Plus: скопировать пользовательский leaf-ключ при key_type=custom.
Тот же GETcerts[].domain_list[].config.credentials (additionalProperties: string)Лабораторно подтверждено спецификацией+mock. Предполагается на Plus: скопировать секреты DNS-валидации (токены Cloudflare, ключи AWS, секреты RFC2136). Они доказывают контроль над именами.
Тот же GETemail аккаунта, пользовательские URL серверов, action_list.commandЛабораторно подтверждено, что поля присутствуют в схеме. Выполнение hook — это путь модификации, а не этот GET.

Целостность

Отсутствует в самом GET. Последующее использование украденных ключей и DNS-токенов происходит вне устройства (выпуск подложного сертификата, обращение к ACME-аккаунту, изменение DNS). Не проверялось.

Доступность

Отсутствует. Листинг конфигурации не отзывает и не перезаписывает сертификаты.

Требуется: аутентифицированный доступ к MIM-контроллеру, которому разрешён GET тега ACME. Не подтверждено как неаутентифицированное. Сгенерированный _get_kwargs для этой операции не добавляет Authorization; примеры всё равно выполняют вход и отправляют Bearer.

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

ПоверхностьПричина
Живой контроллер pfSense Plus / NexusНе выполнялось. plus-not-executed=1.
Неаутентифицированный доступ из Интернета к 8443Примеры требуют POST /login. Отсутствие security в OAS — это пробел в спецификации, а не доказательство ответа сервера 200 без JWT.
POST /services/acme/cert/{name}/issue и .../renewПредназначено для модификации сервисов.
POST /services/acme/genprivatekeyПредназначено для генерации и возврата нового ключа аккаунта. Не этот остаток.
POST /diag/cmd/php / POST /diag/cmd/shellПредназначено для админ-консоли. Отдельная поверхность. Вендор считает Diagnostics: Command предназначенным (CVE-2025-69691 оспаривается).
GET /system/certificates/{refid}/export-keyОтдельный остаток: выделенный экспорт ключа в менеджере сертификатов. В ACME нет эквивалентной операции экспорта.
GET /services/acme/validmethodsКаталог методов. Без ключей.
CE jaredhendrickson/pfsense-apiДругой продукт.

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

Я зафиксировал публичный Netgate/pfsense-api b4acd7ca после волны CE 2.9.0-DEVELOPMENT. Это дерево — OpenAPI 3.0.3 (pfapi_openapi.yml, 486 путей, 755 операций) плюс сгенерированный Python-клиент для MIM-контроллера Plus на :8443. Тегов нет. Последний публичный коммит на день клонирования — 2026-05-25, "Add Snort-3 API definitions."

Двенадцать поисков по login/JWT, диагностике, MIM-регистрации, клиентскому TLS, пользователям/сертификатам, пакетам, VPN/firewall, безопасности OpenAPI, IDOR устройств, git/прошивкам/фидам, а также loopback-mock каждой сгенерированной операции.

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