Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pfsense-api-acme-key-dump — pfSense Plus MIM API toolkit b4acd7ca - Alta - Remoto - Privilegio residuo - GET /services/acme espone le chiavi | Kitploit
Strumenti/GitHubGitHub/abraxas/pfsense-api-acme-key-dump
Analisi delle VulnerabilitàExploitEsfiltrazione DatiRaccolta InformazioniSicurezza WebPenetration TestingRilevamento SegretiPaper e RicercaSicurezza delle API
GitHubabraxas/pfsense-api-acme-key-dump

pfsense-api-acme-key-dump

pfSense Plus MIM API toolkit b4acd7ca - Alta - Remoto - Privilegio residuo - GET /services/acme espone le chiavi

Vedi Repository
11 giorno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

Classe: Privilegio residuo Portata: Remota

pfSense Plus Nexus Multi-instance Management toolkit OpenAPI b4acd7ca - Netgate

GET /services/acme (GetACMEConfig) restituisce ACMEConfig senza alcun flag write-only o redacted. Lo schema 200 include la chiave privata dell'account ACME, ogni chiave privata foglia emessa, qualsiasi chiave foglia personalizzata e i token del provider DNS usati per la validazione. Il cert manager almeno ha un dedicato GET .../export-key. ACME non ne ha nessuno. La GET della configurazione è il dump.

Una sessione del controller che può eseguire GET su questo percorso copia ogni chiave hostname che il firewall registra, più le credenziali DNS che provano il controllo di quei nomi.

Questo albero è l'OpenAPI pubblico più un client Python generato. Non è il pacchetto CE REST. Il controller MIM è solo per Plus e non è nel repository GitHub. Non ho parlato con un controller live. plus-not-executed=1.

IDnessuna CVE al momento
ClassePrivilegio residuo (dump di segreti su GET della configurazione)
PortataRemota (controller MIM autenticato; non provato non autenticato)
CWECWE-200
CVSSAlto: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N se un ruolo services-read riceve il body. Se solo il superuser può eseguire la GET, il dump ha comunque la forma sbagliata per un elenco di configurazione.
ProdottoNetgate/pfsense-api OpenAPI per pfSense Plus Nexus MIM
Affettomain pubblico b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25, Add Snort-3 API definitions). Nessun tag.
AuthJWT del controller da POST /login. Gli esempi inviano Bearer. La specifica non ha securitySchemes.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:19151. Nessuna immagine Plus.

Hub della serie: pfSense Plus MIM leftovers. Questa è la parte 5. Si concatena con G9 stolen JWT (gli esempi impostano verify_ssl=False) e G6 fleet token (un login Bearer viene riutilizzato per ogni device_id). Dump affine: G4 cert-manager export-key.

Cosa può fare un attaccante

Richiede una sessione del controller che possa eseguire GET /services/acme. La documentazione lo mappa su mim_services_read / mim_services / mim_superuser. La specifica non associa quei ruoli al percorso. Il RBAC di Plus non è stato eseguito.

Un JWT rubato da G9 (MITM degli esempi ufficiali) o un fleet token dell'helpdesk da G6 è sufficiente per puntare questa GET su ogni box registrato. Questa catena è dedotta. Questo residuo è il body della GET.

Recon

MetodoSinkPrivilegio
GET /services/acmeACMEConfig.account_keys[].account_key (format: byte)Dimostrato in laboratorio sulla specifica pubblicata e sul mock: lo schema 200 include account_key; il corpo del mock restituisce PFSENSE-API-ACME-KEY-DUMP-WITNESS. Inferito su Plus: copiare la chiave privata dell'account Let's Encrypt (o altro ACME). Comunicare con l'account ACME dall'esterno.
Stesso GETcerts[].issued_cert.privateKey (format: byte)Dimostrato in laboratorio su specifica+mock. Inferito su Plus: copiare ogni chiave privata foglia emessa che il firewall ha registrato. Impersonificazione TLS off-box per quei nomi.
Stesso GETcerts[].custom_key (format: byte)Dimostrato in laboratorio su specifica+mock. Inferito su Plus: copiare una chiave foglia personalizzata quando key_type=custom.
Stesso GETcerts[].domain_list[].config.credentials (additionalProperties: string)Dimostrato in laboratorio su specifica+mock. Inferito su Plus: copiare i segreti di validazione DNS (token Cloudflare, chiavi AWS, segreti RFC2136). Questi provano il controllo dei nomi.
Stesso GETemail dell'account, URL di server personalizzati, action_list.commandDimostrato in laboratorio che i campi sono presenti nello schema. L'esecuzione di hook è un percorso di modifica, non questo GET.

Integrità

Nessuna dal GET stesso. L'uso successivo di chiavi rubate e token DNS avviene off-box (emettere un certificato fraudolento, comunicare con l'account ACME, modificare il DNS). Non esercitato.

Disponibilità

Nessuna. La lista di configurazione non revoca né riscrive certificati.

Richiede: accesso autenticato al controller MIM che è autorizzato a eseguire il GET del tag ACME. Non dimostrato non autenticato. Il _get_kwargs generato per questa operazione non aggiunge Authorization; gli esempi effettuano comunque il login e inviano Bearer.

Superficie adiacente che rimane chiusa

SuperficieMotivo
Controller pfSense Plus / Nexus liveNon eseguito. plus-not-executed=1.
Internet-to-8443 non autenticatoGli esempi richiedono POST /login. La mancanza di security nell'OAS è una lacuna della specifica, non una prova di server 200-senza-JWT.
POST /services/acme/cert/{name}/issue e .../renewModifica dei servizi prevista.
POST /services/acme/genprivatekeyGenerazione e restituzione previste di una nuova chiave account. Non questo residuo.
POST /diag/cmd/php / POST /diag/cmd/shellConsole di amministrazione prevista. Superficie separata. Il vendor considera Diagnostics: Command come previsto (CVE-2025-69691 contestato).
GET /system/certificates/{refid}/export-keyResiduo separato: esportazione dedicata della chiave sul cert manager. ACME non ha un'operazione di esportazione equivalente.
GET /services/acme/validmethodsCatalogo dei metodi. Nessuna chiave.
CE jaredhendrickson/pfsense-apiProdotto diverso.

Come l'ho trovato

Ho fissato il repository pubblico Netgate/pfsense-api b4acd7ca dopo l'ondata CE 2.9.0-DEVELOPMENT. Questo albero è OpenAPI 3.0.3 (pfapi_openapi.yml, 486 path, 755 op) più un client Python generato per il controller MIM Plus su :8443. Nessun tag. L'ultimo commit pubblico il giorno in cui ho clonato era 2026-05-25, "Add Snort-3 API definitions."

Dodici ricerche su login/JWT, diagnostica, enrollment MIM, TLS client, utenti/certificati, pacchetti, VPN/firewall, sicurezza OpenAPI, IDOR dispositivo, git/firmware/feeds, più un mock loopback di ogni operazione generata.

Prima la lista di esclusione: i cinque residui CE già segnalati (QinQ parent-if, OpenVPN wizard CRLF, CARP VHID, limiter number, IPsec login banner). Il pacchetto REST CE di terze parti. Diagnostics PHP/shell come RCE non pubblicato. securitySchemes mancante come non autenticato dimostrato. POST /system/firmware non ha URL. Ping/DNS/traceroute sono la diagnostica.

Scarica lo strumento