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-unix-sock-noauth — pfSense Plus MIM API toolkit b4acd7ca - Alta - Locale - Privilegio residuo - unix sock enroll no JWT | Kitploit
Strumenti/GitHubGitHub/abraxas/pfsense-api-unix-sock-noauth
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitRaccolta InformazioniSicurezza di RetePenetration TestingAutenticazioneLab e Pratica

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
GitHub
abraxas/pfsense-api-unix-sock-noauth

pfsense-api-unix-sock-noauth

pfSense Plus MIM API toolkit b4acd7ca - Alta - Locale - Privilegio residuo - unix sock enroll no JWT

Vedi Repository
11 giorno faNon ancora revisionato

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

Classe: Privilegio residuo Portata: Locale

pfSense Plus MIM API b4acd7ca - Netgate

github.com/Netgate/pfsense-api è l'OpenAPI pubblico più il Python generato per pfSense Plus Nexus Multi-instance Management. Non è il pacchetto REST CE. Il campione di enrollment ufficiale effettua il login su HTTPS :8443 con un Bearer JWT, quindi invia via SSH uno script POSIX su ciascun firewall. Quello script comunica con /var/run/pfnet-controller.sock senza alcun 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

I fallback deprecati /api/system/controller e /api/system/mim/devid sono identici: nessun Bearer. Il login HTTPS emette comunque un JWT. Quel token non viene applicato al sock sul dispositivo. Questo è un confine di fiducia separato da :8443 più i gruppi mim_*.

Parte 3 della serie Nexus MIM. Dopo che G1 / G2 arrivano sul box, questo sock è il piano locale.

Un processo locale che può fare connect(2) al sock può registrare un controller e estrarre l'identità del dispositivo senza JWT. Inoltre non è stato eseguito. Il DAC reale del sock è sconosciuto.

IDnessuna CVE al momento
ClassePrivilegio residuo
RaggiungibilitàLocale (connect(2) a /var/run/pfnet-controller.sock)
CWECWE-306
CVSSAlto: 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H se la modalità del sock consente a un altro uid locale di connettersi. Onestà: DAC sconosciuto, Plus non eseguito.
ProdottoNetgate/pfsense-api (toolkit Plus Nexus MIM)
Affettomain pubblico b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25)
Authnessuna sulle curl ufficiali di enroll via unix-socket
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:19121. Mock HTTP Unix. Nessuna immagine Plus.

Cosa può fare un attaccante

L'attore è qualsiasi processo sul dispositivo pfSense che può fare connect(2) a /var/run/pfnet-controller.sock. Non TCP remoto in questo esempio (solo curl --unix-socket). Il JWT HTTPS :8443 e i gruppi mim_* non si applicano su questo fd.

Provato in laboratorio (mock del protocollo di enroll pubblicato)

MetodoSinkPrivilegio
POST ufficiale device_script senza AuthorizationPOST http://unix/api/mim/controllersIntegrità: il mock ha accettato il JSON di enroll. Log di hit authorization_present=false.
GET ufficiale device_script senza AuthorizationGET http://unix/api/mim/device/identityRecon: il mock ha restituito JSON con forma DeviceIdentity incluso PFSENSE-API-UNIX-SOCK-NOAUTH-WITNESS.
Stesso GET con Authorization: Bearer lab-jwtstesso percorso identityControllo lab: 401, witness non nel body. Distingue presente vs assente. Non un risultato Plus.

Inferito su un daemon Plus live (binario non sotto test)

Queste sono le stesse operazioni OpenAPI che il campione ufficiale e il tag mim mettono sul dispositivo. Provate solo come protocollo, non come Plus 200.

MetodoSinkPrivilegio
POST /mim/controllers (fallback POST /api/system/controller) con ControllerIdentity dell'attaccante (key, vpn_pubkey, vpn_listenaddr, vpn_netkey, cert)SetControllerIntegrità: registra un controller ostile. Spec: il dispositivo "continuerà a inviare una richiesta di connessione ogni 10 secondi" (VPN Netgard verso l'attaccante).
GET /mim/device/identity (fallback GET /api/system/mim/devid)GetDeviceIdentityRecon: chiavi pubbliche Noise/VPN del dispositivo, address, testo curl controller_add.
GET /mim/controllersGetControllersRecon: elenca i controller più le info del dispositivo (ControllerInfo.noise_secret, chiavi).
GET /mim/controllers/id/{key}GetMIMControllerRecon: un record controller.
DELETE /mim/controllers/id/{key}DeleteMIMControllerIntegrità / disponibilità: annulla la registrazione del controller reale (key hex o base64-URL).
POST /mim/device/pubkey con privkey / pubkey dell'attaccanteSetDevicePublicKey (DevicePublicKeyOption include privkey)Integrità: sostituisce l'identità ED25519 del dispositivo. L'handshake del controller si fida quindi della chiave dell'attaccante.

Non concede di per sé una shell root sull'host. Concede il piano MIM: di chi il dispositivo si fida come controller, e la chiave privata Noise del dispositivo se il POST pubkey viene onorato.

Richiede: connect(2) locale a /var/run/pfnet-controller.sock. Il DAC (mode, owner, group, SO_PEERCRED) non è nell'albero client pubblico. Se il daemon si lega a 0600 root, questo è già root locale (confused deputy per un helper, pacchetto o escape che può vedere /var/run). Se il sock è raggiungibile da un altro uid, CVSS 7.8 come valutato.

Superficie adiacente che rimane chiusa

  • TCP remoto non autenticato verso /mim/controllers su Nexus HTTPS :8443. Quella porta è documentata come User Manager JWT. Questo residuo è il unix fd.
  • HTTPS POST /login emette ancora un Bearer JWT. AuthenticatedClient lo invia ancora a CONTROLLER_URL+"/api".
  • La libreria generata predefinita verify_ssl=True. I parametri di percorso codificano in percentuale ../.
  • OpenAPI security: MISSING su tutte le 755 operazioni è una lacuna dello schema, non un salto HTTPS non autenticato provato.
  • Questo lab è un mock HTTP unix. Non prova che il binario Plus abbia accettato la richiesta.
  • Diagnostics php/shell admin previsto su un JWT superuser. Non questo residuo.

Stesso pin, piano di enrollment remoto: pfsense-api-enroll-json-ssh e pfsense-api-enroll-autoadd. Mappa della serie: pfsense-api-nexus-mim.

Come l'ho trovato

Ho fissato Netgate/pfsense-api b4acd7ca21dbca739a530403a1f62a7440f7726f e letto il loop di enrollment ufficiale: login, GET /mim/controller/identity, stringify, SSH exec di unix-socket POST/GET, POST /mim/devices. HTTPS usa AuthenticatedClient(token=...). I curl sul sock no.

Vicoli ciechi: trattare securitySchemes mancanti come HTTPS non autenticato (manca anche al login; gli esempi mettono sempre Bearer per primo). Presumere che il sock sia scrivibile da tutti (il mode non è in questo repo). Dichiarare un Plus 200. Il residuo provato qui è il protocollo di enroll pubblicato.

Scarica lo strumento