Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pfsense-api-unix-sock-noauth — pfSense Plus MIM API toolkit b4acd7ca - Élevé - Local - Privilège résiduel - unix sock enroll no JWT | Kitploit
Outils/GitHubGitHub/abraxas/pfsense-api-unix-sock-noauth
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationCollecte d'InformationsSécurité RéseauTests d'IntrusionAuthentificationLabs et Pratique

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHub
abraxas/pfsense-api-unix-sock-noauth

pfsense-api-unix-sock-noauth

pfSense Plus MIM API toolkit b4acd7ca - Élevé - Local - Privilège résiduel - unix sock enroll no JWT

Voir le dépôt
1il y a 1 jourPas encore vérifié

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 : Privilège résiduel Portée : Locale

pfSense Plus MIM API b4acd7ca - Netgate

github.com/Netgate/pfsense-api est l'OpenAPI public plus le Python généré pour pfSense Plus Nexus Multi-instance Management. Ce n'est pas le paquet REST CE. L'exemple d'enrôlement officiel se connecte en HTTPS sur :8443 avec un JWT Bearer, puis déploie en SSH un script POSIX sur chaque pare-feu. Ce script communique avec /var/run/pfnet-controller.sock sans 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

Les fallbacks obsolètes /api/system/controller et /api/system/mim/devid sont identiques : pas de Bearer. La connexion HTTPS émet toujours un JWT. Ce jeton n'est pas appliqué au sock sur l'appareil. Il s'agit d'une frontière de confiance distincte de :8443 plus les groupes mim_*.

Partie 3 de la série Nexus MIM. Après que G1 / G2 ont atterri sur la machine, ce sock est le plan local.

Un processus local capable de connect(2) sur le sock peut enrôler un contrôleur et extraire l'identité de l'appareil sans JWT. De plus, il n'a pas été exécuté. Le DAC réel du sock est inconnu.

IDpas encore de CVE
ClassePrivilège résiduel
PortéeLocale (connect(2) vers /var/run/pfnet-controller.sock)
CWECWE-306
CVSSÉlevé : 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H si le mode du sock permet à un autre uid local de se connecter. En toute honnêteté : DAC inconnu, Plus non exécuté.
ProduitNetgate/pfsense-api (boîte à outils Plus Nexus MIM)
Affectémain public b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25)
Authaucune sur les curls d'enrôlement officiels via unix-socket
LicenceGNU Affero GPL v3.0
Labo127.0.0.1:19121 uniquement. Mock HTTP Unix. Pas d'image Plus.

Ce qu'un attaquant peut faire

L'acteur est tout processus sur l'appareil pfSense capable de connect(2) vers /var/run/pfnet-controller.sock. Pas de TCP distant dans cet exemple (curl --unix-socket uniquement). Le JWT HTTPS :8443 et les groupes mim_* ne s'appliquent pas sur ce fd.

Prouvé en labo (mock du protocole d'enrôlement publié)

MéthodeCiblePrivilège
POST officiel device_script sans AuthorizationPOST http://unix/api/mim/controllersIntégrité : le mock a accepté le JSON d'enrôlement. Journal de succès authorization_present=false.
GET officiel device_script sans AuthorizationGET http://unix/api/mim/device/identityRecon : le mock a renvoyé un JSON de forme DeviceIdentity incluant PFSENSE-API-UNIX-SOCK-NOAUTH-WITNESS.
Même GET avec Authorization: Bearer lab-jwtmême chemin d'identitéContrôle labo : 401, témoin absent du corps. Distingue présent vs absent. Pas un résultat Plus.

Déduit sur un démon Plus en production (binaire non testé)

Ce sont les mêmes opérations OpenAPI que l'échantillon officiel et le tag mim placent sur l'appareil. Prouvé uniquement en tant que protocole, pas en tant que 200 Plus.

MéthodeCiblePrivilège
POST /mim/controllers (fallback POST /api/system/controller) avec un ControllerIdentity attaquant (key, vpn_pubkey, vpn_listenaddr, vpn_netkey, cert)SetControllerIntégrité : enrôler un contrôleur hostile. Spécification : l'appareil « continuera d'émettre une demande de connexion toutes les 10 secondes » (VPN Netgard vers l'attaquant).
GET /mim/device/identity (fallback GET /api/system/mim/devid)GetDeviceIdentityRecon : clés publiques Noise/VPN de l'appareil, address, texte curl controller_add.
GET /mim/controllersGetControllersRecon : liste des contrôleurs plus les infos de l'appareil (ControllerInfo.noise_secret, clés).
GET /mim/controllers/id/{key}GetMIMControllerRecon : un enregistrement de contrôleur.
DELETE /mim/controllers/id/{key}DeleteMIMControllerIntégrité / disponibilité : désenrôler le vrai contrôleur (clé hex ou base64-URL).
POST /mim/device/pubkey avec privkey / pubkey attaquantSetDevicePublicKey (DevicePublicKeyOption inclut privkey)Intégrité : remplacer l'identité ED25519 de l'appareil. La poignée de main du contrôleur fait alors confiance à la clé de l'attaquant.

N'accorde pas en soi un shell root sur l'hôte. Accorde le plan MIM : qui l'appareil considère comme contrôleur, et la clé privée Noise de l'appareil si le POST pubkey est honoré.

Nécessite : un connect(2) local vers /var/run/pfnet-controller.sock. Le DAC (mode, propriétaire, groupe, SO_PEERCRED) n'est pas dans l'arbre client public. Si le démon se lie en 0600 root, il s'agit déjà d'un accès local root (confused deputy pour un helper, un paquet ou une évasion qui peut voir /var/run). Si le socket est joignable par un autre uid, CVSS 7.8 selon le score.

Surface adjacente qui reste fermée

  • TCP distant non authentifié vers /mim/controllers sur Nexus HTTPS :8443. Ce port est documenté comme User Manager JWT. Ce reliquat est le fd unix.
  • HTTPS POST /login émet toujours un Bearer JWT. AuthenticatedClient l'envoie toujours à CONTROLLER_URL+"/api".
  • La bibliothèque générée a par défaut verify_ssl=True. Les paramètres de chemin percent-encodent ../.
  • OpenAPI security: MISSING sur les 755 opérations est une lacune de schéma, pas un contournement HTTPS non authentifié prouvé.
  • Ce lab est un mock HTTP unix. Il ne prouve pas que le binaire Plus a accepté la requête.
  • Diagnostics php/shell admin prévu sur un JWT superutilisateur. Pas ce reliquat.

Même pin, plan d'enrôlement distant : pfsense-api-enroll-json-ssh et pfsense-api-enroll-autoadd. Carte de la série : pfsense-api-nexus-mim.

Comment je l'ai trouvé

J'ai épinglé Netgate/pfsense-api b4acd7ca21dbca739a530403a1f62a7440f7726f et lu la boucle d'enrôlement officielle : login, GET /mim/controller/identity, stringify, exécution SSH d'un POST/GET sur socket unix, POST /mim/devices. HTTPS utilise AuthenticatedClient(token=...). Les curls sur le socket, non.

Télécharger l’outil