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-enroll-autoadd — pfSense Plus MIM API toolkit b4acd7ca - Alto - Remoto - Privilegio residuo - Paramiko AutoAddPolicy enroll | Kitploit
Strumenti/GitHubGitHub/abraxas/pfsense-api-enroll-autoadd
Analisi delle VulnerabilitàExploitSicurezza di ReteCrittografiaPenetration TestingAutenticazionePaper e RicercaRed TeamingLab e Pratica
GitHubabraxas/pfsense-api-enroll-autoadd

pfsense-api-enroll-autoadd

pfSense Plus MIM API toolkit b4acd7ca - Alto - Remoto - Privilegio residuo - Paramiko AutoAddPolicy enroll

Vedi Repository
1 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-enroll-autoadd

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

pfsense-api-enroll-autoadd

Classe: Privilegio residuo Portata: Remota

pfSense Plus MIM API (Netgate/pfsense-api) b4acd7ca - Netgate

example-add-devices.py è il modo documentato per registrare il controller Nexus su ciascun dispositivo pfSense. Non chiama mai load_system_host_keys(). Imposta paramiko.AutoAddPolicy(), poi connect, poi exec_command(device_script). Il commento dice di rimuovere AutoAdd quando i dispositivi sono già in known_hosts. Il default distribuito è AutoAdd.

Il primo contatto SSH verso una nuova macchina accetta qualunque chiave host risponda. L'autenticazione a password o a chiave viene presentata a quel peer. Lo stdout viene passato a json.loads e inviato con POST /mim/devices al controller reale.

Questo non è il pacchetto REST CE di terze parti. Questo è l'OpenAPI ufficiale più il client Python generato per pfSense Plus Nexus Multi-instance Management. Il server è solo Plus. Il lab è un gadget SSH Paramiko. Non ho comunicato con un controller Plus live.

IDnessuna CVE al momento
ClassePrivilegio residuo (Paramiko AutoAddPolicy sull'SSH di enrollment)
PortataRemota (on-path verso l'SSH del dispositivo al primo contatto)
CWECWE-322
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
ProdottoNetgate/pfsense-api (toolkit client Plus Nexus MIM)
Affettomain b4acd7ca21dbca739a530403a1f62a7440f7726f example-add-devices.py
AuthL'operatore esegue il sample ufficiale; l'attaccante è on-path verso l'SSH del dispositivo
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:19111. Nessuna immagine Plus.

AC:H indica primo contatto / on-path. Una workstation che ha già le chiavi reali del dispositivo in known_hosts e ha la riga AutoAdd rimossa non è questo residuo.

Stessi residui del pin: interpolazione JSON di ControllerSummary nella shell di enrollment (G1) e i sample forzano verify_ssl=False (G9). Hub della serie: pfsense-api-nexus-mim.

Cosa può fare un attaccante

Posizionarsi on-path verso un indirizzo SSH di primo contatto in pfsense_addresses mentre l'operatore esegue il sample. AutoAdd è ancora attivo.

MetodoSinkPrivilegio
Porsi on-path verso un indirizzo SSH di primo contatto in pfsense_addressesset_missing_host_key_policy(paramiko.AutoAddPolicy()) poi connect (example-add-devices.py:151-160)Integrità (dimostrato in laboratorio): la chiave host sconosciuta viene accettata. Lab: AutoAddPolicy connesso (autoadd=yes). RejectPolicy fallito (reject-control=yes).
Stessa sessione, risposta exec_command(device_script)stdout interpretato come DeviceIdentity (example-add-devices.py:161-187)Integrità (dimostrato in laboratorio): exec ha restituito l'identità JSON contenente PFSENSE-API-ENROLL-AUTOADD-WITNESS (identity-json=yes).
Stesso MITM, lettura del payload execdevice_script è il curl -d residuo di G1 di ControllerSummaryRecon (inferito dal sorgente): chiave identità del controller, vpn_pubkey / vpn_netkey / indirizzi di ascolto di Netgard. Non dumpato da questo lab.
Stesso MITM, autenticazione con password o chiaveSSHUSER / SSHPASS o agent/chiavi (example-add-devices.py:156-160)Recon (inferito): credenziali o chiavi presentate all'host falso. Il lab ha usato l'autenticazione con password solo come percorso campione SSHPASS.
Stesso stdout JSON, add_controlled_device.syncPOST /mim/devices sul controller realeIntegrità (inferito): registra chiavi Noise/VPN dell'attaccante e address. Inoltre l'handshake non è stato eseguito in questo lab.
Il MITM è il server SSHqualunque exec inviato dal client, come SSHUSERIntegrità / disponibilità (inferito): eseguire, scartare o saltare lo script di enrollment. Le chiamate al socket Unix sul dispositivo reale avvengono solo se il MITM le inoltra.

Dimostrato in laboratorio vs inferito: la connessione AutoAdd, il fallimento di RejectPolicy e l'identità JSON con il witness sono dimostrati in laboratorio. Il dump della chiave del controller, il furto di credenziali, il POST /mim/devices di un dispositivo falso e l'esecuzione dei curl reali sul socket Unix sono inferiti dallo stesso percorso campione.

Richiede: l'operatore esegue il campione ufficiale verso un indirizzo SSH la cui chiave host non è già stata fissata, con AutoAdd lasciato attivo. Percorso di rete verso quell'SSH. AC:H è primo contatto / on-path.

Superficie adiacente che rimane chiusa

SuperficieMotivo
RejectPolicy sullo stesso host sconosciutoLab: reject-control=yes. Paramiko rifiuta la chiave.
Workstation con chiavi del dispositivo reale in known_hosts e riga AutoAdd rimossaLa modalità prevista dal commento. Il campione non carica mai quelle chiavi a meno che tu non aggiunga la chiamata.
Login HTTPS del controllerverify_ssl=False è un residuo di un campione affine (G9), non di questo sink.
MIM su socket Unix sul firewall realeSolo se il MITM inoltra exec. Questo lab non comunica mai con /var/run/pfnet-controller.sock.
Client generato con default verify_ssl=TrueIl default della libreria non è il residuo. I campioni forzano False.
Inoltre RBAC / :8443 liveQuesto lab è un gadget Paramiko. Non ho comunicato con un controller Plus.
Internet non autenticato verso 8443Il login emette comunque un JWT. Non è questa la scoperta.
PHP/shell di diagnosticaPotere admin previsto per un JWT di flotta. Non è questa la scoperta.

Come l'ho trovato

Ho fissato github.com/Netgate/pfsense-api main b4acd7ca21dbca739a530403a1f62a7440f7726f dopo i residui della WebGUI CE. Questo albero è OpenAPI più Python generato per Plus Nexus MIM. Ho letto il ciclo di enrollment in example-add-devices.py. La policy della chiave host è AutoAdd. I segreti si trovano sullo stesso canale exec. Il campione non chiama mai load_system_host_keys().

Scarica lo strumento