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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/hann1bl3l3ct3r/fuxapwn
Escalation di PrivilegiRicognizioneMeccanismi di PersistenzaAnalisi delle VulnerabilitàExploitMovimento LateraleSicurezza SCADA/ICSSfruttamento di Applicazioni WebRaccolta InformazioniPenetration TestingSviluppo Payload
2214 mesi 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
GitHubhann1bl3l3ct3r/fuxapwn

FUXAPWN

Exploit POC per CVE-2026-25895 FUXA Path Traversal non autenticato -> Scrittura arbitraria di file -> RCE

Vedi Repository

CVE-2026-25895 — FUXA <= 1.2.9 Path Traversal non autenticato verso Esecuzione di Codice Remoto

Scrittura arbitraria di file non autenticata, pre-autenticazione, contro FUXA, una piattaforma SCADA/HMI basata su Node.js. Si collega all'esecuzione di codice remoto tramite diverse primitive post-scrittura distinte. Funziona anche quando secureEnabled = true (autenticazione attiva) perché l'endpoint vulnerabile non ha alcun middleware associato.

Disponibile anche su ExploitDB: https://www.exploit-db.com/exploits/52568

CampoValore
ID CVECVE-2026-25895
Versione affettaFUXA <= 1.2.9
Versione correttaFUXA 1.2.10
Fornitorefrangoteam / FUXA
Vettore d'attaccoNetwork (HTTP/HTTPS)
AutenticazioneNessuna richiesta
ImpattoScrittura arbitraria di file, esecuzione di codice remoto
CVSS v3.19.8 (Critico) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
RicercatoreAnthony Cihan (Hann1bl3L3ct3r)

Riepilogo

L'endpoint POST /api/upload di FUXA (server/api/projects/index.js:193) è registrato senza middleware, bypassando sia il controllo JWT / API-key di secureFnc sia il controllo dei permessi di amministrazione applicato a ogni altro endpoint di gestione dei progetti. All'interno del gestore, il campo destination del corpo JSON viene concatenato in un percorso del filesystem con un solo underscore iniziale e senza alcuna normalizzazione o verifica di contenimento:

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

Un valore di destination della forma a/../../../../../etc (dove a assorbe il prefisso di underscore iniziale) fa sì che path.resolve di Node esca da appDir verso qualsiasi posizione scrivibile dal processo FUXA. Poiché fs.writeFileSync è preceduto da un fs.mkdirSync(dir, { recursive: true }) condizionale, l'attaccante può anche creare le directory padre secondo necessità.

Il risultato è una primitiva di scrittura arbitraria di file non autenticata raggiungibile sulla porta HTTP predefinita (1881), sfruttabile in fase pre-autenticazione indipendentemente dal fatto che l'amministratore FUXA abbia abilitato l'accesso.

Impatto

Un attaccante remoto non autenticato può:

  • Scrivere o sovrascrivere qualsiasi file raggiungibile dall'account di servizio FUXA
  • Sostituire settings.js per ottenere l'esecuzione di codice al successivo riavvio di FUXA
  • Inserire un cron job (/etc/cron.d/<file>) per l'esecuzione di codice entro 60 secondi quando FUXA viene eseguito come root (impostazione predefinita nell'immagine Docker del fornitore)
  • Installare un listener webshell HTTP all'interno del processo Node di FUXA
  • Inserire chiavi pubbliche SSH in /root/.ssh/authorized_keys o in ~/.ssh/authorized_keys di qualsiasi utente
  • Enumerare l'account utente locale che esegue FUXA e altri account presenti sul sistema tramite un canale laterale a livello di filesystem

Questa è una vulnerabilità di gravità critica pre-autenticazione su una piattaforma ICS/SCADA utilizzata per operare processi industriali.

Versioni affette

VersioneStato
<= 1.2.9Vulnerabile
1.2.10+Corretta

Confermato sfruttabile su un'installazione pulita di FUXA 1.2.9 su Ubuntu Server.

Prova di concetto

Script Python 3 in un unico file, una dipendenza di terze parti (requests).

pip install requests
python3 fuxapwn.py --help

Ricognizione rapida non autenticata

Identifica l'utente OS in esecuzione, l'esposizione di Node-RED e qualsiasi altro account sul sistema senza scrivere nulla di inusuale:

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

Dimostrare la primitiva di scrittura

Scrive un indicatore neutrale /tmp/healthcheck (nessun IOC specifico della CVE nel nome file o contenuto):

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

RCE in un colpo solo

Se FUXA viene eseguito come root, inserisce un file cron che si attiva entro 60 secondi senza necessità di riavvio di FUXA:

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

Webshell persistente tramite sostituzione di settings.js

Installa un listener webshell HTTP all'interno del processo Node di FUXA (si attiva al successivo avvio a freddo, poiché require() memorizza nella cache i moduli), quindi entra in una REPL interattiva dopo il riavvio di FUXA:

# Prepara il payload — sostituisce settings.js ma preserva la configurazione reale
# del target (uiPort, allowedOrigins, secureEnabled, ecc.) in modo che
# l'applicazione continui a funzionare normalmente.
python3 fuxapwn.py -u http://target:1881 --mode webshell \
    --appdata /opt/FUXA/server/_appdata --ws-port 31337

# Dopo il riavvio di FUXA, connettersi alla webshell installata.
python3 fuxapwn.py -u http://target:1881 --mode webshell-exec \
    --ws-host target --ws-port 31337 \
    --ws-path /_abc123 --ws-token <printed-above> --interact

Modalità operative

ModalitàScopo
reconInfo leak non autenticato tramite GET /api/settings; deduce l'utente OS dai percorsi assoluti; riporta lo stato di Node-RED; sonde attive opzionali --probe-root e --probe-home
canaryProva della primitiva di scrittura file con un percorso predefinito neutrale
settings-rceSostituisce settings.js con un payload che esegue un comando configurabile al successivo avvio a freddo di FUXA
ssh-keyScrive una chiave pubblica in authorized_keys di un utente target
dropRilascio arbitrario di file in qualsiasi percorso assoluto
cronRilascia /etc/cron.d/<nome> per RCE entro 60 secondi senza attendere un riavvio di FUXA (richiede FUXA eseguito come root)
webshellInstalla un listener webshell HTTP all'interno del processo Node di FUXA tramite sostituzione di settings.js (si attiva al successivo avvio a freddo)
webshell-execClient per una webshell già installata; comando singolo o REPL --interact

Riferimento completo per modalità e flag: python3 fuxapwn.py --help.

Note tecniche

Perdita di configurazione non autenticata

GET /api/settings (server/api/index.js:103) è registrato senza middleware e restituisce la configurazione runtime in tempo reale, leggermente oscurata (il server elimina secretCode e smtp.password prima dell'invio). I campi rimanenti rivelano percorsi assoluti (appDir, workDir, userSettingsFile, logsDir, uploadFileDir) che tipicamente identificano l'utente di servizio, oltre a nodeRedEnabled, che è un indicatore diretto di un percorso RCE secondario non autenticato (vedi sotto).

Enumerazione dell'utente in esecuzione su installazioni non-root e non-Docker

Quando FUXA viene avviato tramite npm start sotto un account utente locale e i percorsi di installazione non codificano l'utente (ad es. l'installazione si trova sotto /opt, /tmp o un /app generico), e /root/ non è scrivibile, il PoC ricade sull'iterazione di /home/<candidato>/ con scritture di zero byte.

Scarica lo strumento