Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pfsense-api-fleet-jwt — pfSense Plus MIM API toolkit b4acd7ca - Alta - Remoto - IDOR - um JWT de controlador é um token de frota | Kitploit
Ferramentas/GitHubGitHub/abraxas/pfsense-api-fleet-jwt
Autenticação e AutorizaçãoAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebColeta de InformaçõesTestes de PenetraçãoSegurança de APILabs e Prática
GitHubabraxas/pfsense-api-fleet-jwt

pfsense-api-fleet-jwt

pfSense Plus MIM API toolkit b4acd7ca - Alta - Remoto - IDOR - um JWT de controlador é um token de frota

há 1 diaAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

Abraxas Labs - pfsense-api-fleet-jwt

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-api-fleet-jwt

pfsense-api-fleet-jwt

Classe: IDOR Alcance: Remoto

pfSense Plus MIM API (Netgate) pin b4acd7ca - github.com/Netgate/pfsense-api

Um Bearer de POST /login é reutilizado para cada device_id inscrito. Os exemplos oficiais copiam esse token para /api/device/pfsense/{device_id}/api para cada id de GET /mim/devices. Os campos de LoginResponse são apenas token, user, version e alerts. As funções LDAP MIM são globais. Não estão vinculadas a um dispositivo. Um login de controlador que consegue listar dispositivos comunica com o firewall B com um token emitido para um usuário que se destinava ao firewall A.

Esta é uma única tenancy de cliente, não um resquício cross-tenant de SaaS. Chamadas não autenticadas permanecem 401. O RBAC do Plus não foi executado. Hub da série: pfsense-api-nexus-mim (este é o resquício 6). O JWT roubado do resquício 9 (amostras verify_ssl=False) é este token de frota.

IDainda sem CVE
ClasseIDOR
AlcanceRemoto (JWT de controlador autenticado)
CWECWE-639
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProdutoNetgate/pfsense-api (controlador pfSense Plus Nexus Multi-instance Management OpenAPI + cliente gerado)
Afetadopin b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25). Sem tags. O servidor é exclusivo do Plus (pago). Não é o pacote REST do CE.
AutenticaçãoJWT de controlador de POST /login. Adivinhar o device_id não é necessário se GET /mim/devices for permitido.
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1:19161. Mock em Python do contrato do cliente publicado. Sem imagem Plus.

Fiz pin de github.com/Netgate/pfsense-api main b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25, Add Snort-3 API definitions). Este não é jaredhendrickson/pfsense-api / pfrest.org.

O que um atacante pode fazer

Um login de controlador que consegue listar dispositivos comunica com cada instância inscrita com o mesmo JWT. CSRF não está em jogo (API Bearer). PHP / shell / export-key em cada máquina é poder de administrador pretendido assim que o proxy aceita o token de frota. O resquício é a ausência de vínculo por dispositivo, não Diagnostics: Command.

PrivilégioMétodo / caminhoComprovado em laboratório ou inferido
Listar todos os device_id inscritos (nome, endereço, estado)GET /mim/devices com o Bearer de loginRecon (comprovado em laboratório). O mock devolveu tanto site-a como site-b. Sem autenticação é 401.
Ler o estado do sistema do firewall A e do firewall B com um único tokenGET /api/device/pfsense/{device_id}/api/systemRecon (comprovado em laboratório). device-a=200, device-b=200. Witness apenas em B.
Fazer POST do wrapper PHP de diagnósticos em ambos os idsPOST /api/device/pfsense/{device_id}/api/diag/cmd/phpIntegridade (laboratório apenas no mock). Ambos 200. Além disso, o RBAC não foi executado, pelo que um role gate em produção não está comprovado.
Executar PHP / shell / edição de ficheiros em todas as máquinas inscritas se o login incluir console ou systemPOST /diag/cmd/php, POST /diag/cmd/shell, GET/POST /diag/editfile, download/uploadIntegridade (inferido a partir do OAS + exemplos). Poder de admin pretendido assim que o proxy aceita o token da frota. O pfSense PHP-FPM típico corre como root.
Exportar chaves privadas de CA / leaf e PKCS12 em todas as instâncias listadasGET /system/certificates/{refid}/export-key, GET /system/certauth/{refid}/export-key, GET /system/certificates/{refid}/export-p12Recon (inferido). Mesmo JWT, mesmo schema que o leftover 4. Além disso, o RBAC não foi executado.
Despejar a conta ACME e as chaves emitidas em todas as instâncias listadasGET /services/acme e GETs relacionados de conta/certificadoRecon (inferido). Mesmo JWT, schema do leftover 5.
Alterar aliases, firewall, interfaces, VPN, serviços em todas as instâncias listadasmesmo prefixo por dispositivo, restantes 700+ operaçõesIntegridade (inferido). Mesmo JWT, mesmo schema que a instância local.
Reboot / halt / restaurar configuração em todas as instâncias listadasPOST /diag/control, POST /diag/backup/restoreDisponibilidade + integridade (inferido). Mesmo proxy. Não exercitado.
IDOR de SaaS entre clientesn/aFechado. Uma única tenancy de cliente. A Netgate corre o controller nessa tenancy.
Internet-to-:8443 não autenticadoGET /mim/devices sem BearerFechado neste laboratório. 401. Bearer errado também dá 401.
Dispositivos offlineas amostras ignoram state != onlineFechado pelas amostras. Não é uma fronteira de autenticação.
Varredura numérica cega de device_idGET /api/device/pfsense/1/api/systemFechado como requisito de adivinhação. Os ids são strings longas (com forma de ED25519). A listagem elimina a adivinhação.

Requer: um login no controller que tenha permissão para aceder ao proxy do dispositivo. Caminho de rede até ao controller MIM (:8443 em produção, loopback :19161 neste laboratório). Não é sem autenticação. Não é CSRF.

Superfície adjacente que permanece fechada

SuperfíciePorquê
Listagem / php / shell sem autenticaçãoMock 401 sem Bearer e com um Bearer errado. O silêncio da spec sobre securitySchemes não é um 200 do servidor.
SaaS entre tenantsUma única tenancy de cliente. Os clusters de tenancy ainda estavam planeados na página de marketing.
mim_user / sem grupo NexusDocumentado como fechado se o gate de login se mantiver.
Nomes de roles mim_* funcionaisExistem (view, logs, usermgmt, services, firewall, interfaces, devices, system, superuser). São globais, não por device_id. As verificações do Plus em produção não foram executadas (plus-rbac=not-executed).
Interpolação JSON do SSH de enrollmentLeftover 1. Pack diferente.
AutoAddPolicy do enrollmentLeftover 2. Pack diferente.
Socket unix do dispositivo sem JWTLeftover 3. Local, pack diferente.
Pacote REST do CEjaredhendrickson/pfsense-api é um servidor diferente.
QinQ / assistente OpenVPN / CARP / limiter / banner IPsec da WebGUI do CEJá reportado como leftovers do CE. Os nomes de campos neste OAS são os mesmos sinks, não novas CVEs.
Consola de frota admins / mim_superuser pretendidaModelo de produto para o proprietário do controller. O leftover é a ACL de objeto em falta para todos os outros.

Como o encontrei

Fiz pin de b4acd7ca e li os exemplos oficiais contra o OpenAPI. Todas as amostras que comunicam com firewalls geridos fazem isto:

Baixar ferramenta