Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
pfsense-api-fleet-jwt — pfSense Plus MIM API toolkit b4acd7ca - Hoch - Remote - IDOR - ein Controller-JWT ist ein Flotten-Token | Kitploit
Tools/GitHubGitHub/abraxas/pfsense-api-fleet-jwt
Authentifizierung & AutorisierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffungPenetrationstestsAPI-SicherheitLabs & Praxis
GitHubabraxas/pfsense-api-fleet-jwt

pfsense-api-fleet-jwt

pfSense Plus MIM API toolkit b4acd7ca - Hoch - Remote - IDOR - ein Controller-JWT ist ein Flotten-Token

vor 1 TagNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

Abraxas Labs - pfsense-api-fleet-jwt

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

pfsense-api-fleet-jwt

Klasse: IDOR Reichweite: Remote

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

Ein POST /login Bearer wird für jede registrierte device_id wiederverwendet. Offizielle Beispiele kopieren dieses Token auf /api/device/pfsense/{device_id}/api für jede id aus GET /mim/devices. Die Felder von LoginResponse sind nur token, user, version und alerts. LDAP-MIM-Rollen sind global. Sie sind nicht an ein Gerät gebunden. Ein Controller-Login, der Geräte auflisten kann, kommuniziert mit Firewall B mit einem Token, das für einen Benutzer ausgestellt wurde, der für Firewall A vorgesehen war.

Dies ist eine einzelne Kundenmandantenschaft, kein SaaS-übergreifender Mandantenrest. Nicht authentifizierte Aufrufe bleiben 401. Plus RBAC wurde nicht ausgeführt. Serien-Hub: pfsense-api-nexus-mim (dies ist Rest 6). Das gestohlene JWT aus Rest 9 (verify_ssl=False-Beispiele) ist dieses Flotten-Token.

IDnoch keine CVE
KlasseIDOR
ReichweiteRemote (authentifiziertes Controller-JWT)
CWECWE-639
CVSSHoch: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProduktNetgate/pfsense-api (pfSense Plus Nexus Multi-instance Management Controller OpenAPI + generierter Client)
BetroffenPin b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25). Keine Tags. Server ist nur Plus (kostenpflichtig). Nicht das CE REST-Paket.
AuthController-JWT aus POST /login. Das Erraten von device_id ist nicht erforderlich, wenn GET /mim/devices erlaubt ist.
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1:19161. Python-Mock des veröffentlichten Client-Vertrags. Kein Plus-Image.

Ich habe github.com/Netgate/pfsense-api main b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25, Add Snort-3 API definitions) gepinnt. Dies ist nicht jaredhendrickson/pfsense-api / pfrest.org.

Was ein Angreifer tun kann

Ein Controller-Login, der Geräte auflisten kann, kommuniziert mit jeder registrierten Instanz mit demselben JWT. CSRF ist nicht im Spiel (Bearer API). PHP / Shell / Export-Key auf jeder Box ist beabsichtigte Admin-Befugnis sobald der Proxy das Flotten-Token akzeptiert. Der Rest ist die fehlende gerätebezogene Bindung, nicht Diagnostics: Command.

BerechtigungMethode / PfadIm Labor bewiesen oder abgeleitet
Jede registrierte device_id auflisten (Name, Adresse, Status)GET /mim/devices mit dem Login-BearerRecon (im Labor bewiesen). Mock gab sowohl site-a als auch site-b zurück. Unauth ist 401.
Systemstatus von Firewall A und Firewall B mit einem Token lesenGET /api/device/pfsense/{device_id}/api/systemRecon (im Labor bewiesen). device-a=200, device-b=200. Witness nur auf B.
Den Diagnostics-PHP-Wrapper auf beiden IDs per POST sendenPOST /api/device/pfsense/{device_id}/api/diag/cmd/phpIntegrität (Labor nur auf Mock). Beide 200. Zudem wurde RBAC nicht ausgeführt, sodass ein Live-Rollen-Gate unbewiesen ist.
PHP / Shell / Dateibearbeitung auf jeder registrierten Box ausführen, wenn der Login Konsole oder system enthältPOST /diag/cmd/php, POST /diag/cmd/shell, GET/POST /diag/editfile, Download/UploadIntegrität (abgeleitet aus OAS + Beispielen). Beabsichtigte Admin-Befugnis, sobald der Proxy das Fleet-Token akzeptiert. Typisches pfSense PHP-FPM läuft als root.
CA-/Leaf-Private-Keys und PKCS12 auf jeder gelisteten Instanz exportierenGET /system/certificates/{refid}/export-key, GET /system/certauth/{refid}/export-key, GET /system/certificates/{refid}/export-p12Recon (abgeleitet). Gleiches JWT, gleiches Schema wie Leftover 4. Zudem RBAC nicht ausgeführt.
ACME-Konto und ausgestellte Keys auf jeder gelisteten Instanz dumpenGET /services/acme und zugehörige Konto-/Zertifikat-GETsRecon (abgeleitet). Gleiches JWT, Leftover-5-Schema.
Aliase, Firewall, Interfaces, VPN, Dienste auf jeder gelisteten Instanz änderngleiches Per-Device-Präfix, restliche 700+ OperationenIntegrität (abgeleitet). Gleiches JWT, gleiches Schema wie die lokale Instanz.
Reboot / Halt / Config-Restore auf jeder gelisteten InstanzPOST /diag/control, POST /diag/backup/restoreVerfügbarkeit + Integrität (abgeleitet). Gleicher Proxy. Nicht ausgeführt.
Cross-Customer-SaaS-IDORn/aGeschlossen. Eine Kunden-Tenancy. Netgate betreibt den Controller in dieser Tenancy.
Unauthentifiziertes Internet-zu-:8443GET /mim/devices ohne BearerIn diesem Labor geschlossen. 401. Falscher Bearer ist ebenfalls 401.
Offline-GeräteBeispiele überspringen state != onlineDurch Beispiele geschlossen. Keine Auth-Grenze.
Blinder numerischer Walk von device_idGET /api/device/pfsense/1/api/systemAls Rate-Anforderung geschlossen. IDs sind lange Strings (ED25519-förmig). Das Listing entfernt das Raten.

Erfordert: einen Controller-Login, der auf den Device-Proxy zugelassen ist. Netzwerkpfad zum MIM-Controller (:8443 im Produkt, Loopback :19161 in diesem Labor). Nicht unauth. Nicht CSRF.

Angrenzende Angriffsfläche, die geschlossen bleibt

AngriffsflächeWarum
Unauth-Listing / php / shellMock 401 ohne Bearer und mit falschem Bearer. Spec-Schweigen zu securitySchemes ist kein Server-200.
SaaS Cross-TenantEine Kunden-Tenancy. Tenancy-Cluster waren auf der Marketingseite dennoch geplant.
mim_user / keine Nexus-GruppeDokumentiert als geschlossen, wenn das Login-Gate hält.
Funktionale mim_*-RollennamenSie existieren (view, logs, usermgmt, services, firewall, interfaces, devices, system, superuser). Sie sind global, nicht pro device_id. Live-Plus-Prüfungen wurden nicht ausgeführt (plus-rbac=not-executed).
Enrollment-SSH-JSON-InterpolationLeftover 1. Anderes Pack.
Enrollment-AutoAddPolicyLeftover 2. Anderes Pack.
Device-Unix-Socket ohne JWTLeftover 3. Lokal, anderes Pack.
CE-REST-Paketjaredhendrickson/pfsense-api ist ein anderer Server.
CE-WebGUI-QinQ / OpenVPN-Wizard / CARP / Limiter / IPsec-BannerBereits als CE-Leftovers gemeldet. Feldnamen in dieser OAS sind dieselben Sinks, keine neuen CVEs.
Beabsichtigte admins / mim_superuser-Fleet-KonsoleProduktmodell für den Controller-Eigentümer. Der Leftover ist die fehlende Objekt-ACL für alle anderen.

Wie ich es gefunden habe

Ich habe b4acd7ca gepinnt und die offiziellen Beispiele gegen die OpenAPI gelesen. Jedes Beispiel, das mit verwalteten Firewalls spricht, macht Folgendes:

Tool herunterladen