- cms
- microweber
- path-traversal
- cve
- laravel
- file-read
news
Microweber Unauthenticated File Read (CVE-2026-65694)
Query-parameter path override on /userfiles/{path} yields unauth arbitrary file read (Laravel .env, etc.) in Microweber ≤ 2.0.20; PoC indexed on Sploitus.
Summary
CVE-2026-65694 is an unauthenticated path-traversal → arbitrary file read in Microweber CMS via the public GET /userfiles/{path} static-file controller. A ?path= query parameter can override the route segment through Laravel’s request property resolution, while normalize_path() fails to canonicalize or confine the result inside userfiles_path(). PHP then resolves ../ sequences on disk.
Affected: Microweber ≤ 2.0.20 (and vulnerable master lines at disclosure). Credit: Bobur Abdugafforov (VulnCheck CVE assignment). Public PoC indexed on Sploitus.
OFFSITE.DARK indexes the Sploitus card and researcher write-up only.
Technical Details
| Aspect | Detail |
|---|---|
| CVE | CVE-2026-65694 |
| CWE | CWE-22 / CWE-23 |
| CVSS 3.1 | 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) |
| Auth | None |
| Route | /userfiles/{path} → ServeStaticFileContoller@serveFromUserfiles |
| Blocked ext | .php / .phtml / .php7 skipped — .env, configs, keys, logs still readable |
Two bugs combine:
$request->pathproperty (notpath()) can be overridden by?path=.- No realpath jail — normalized path never verified to stay under
userfiles_path().
Impact
Leak of Laravel .env (APP_KEY → session forgery, DB/mail/cloud secrets), host files the web user can read, and other non-PHP assets. Often escalates to full instance compromise.
Mitigation
- Upgrade Microweber past the patched release once available; apply vendor fix that uses route-bound path +
realpath()confinement. - Until patched: deny
/userfiles/querypath=at WAF/reverse proxy; serve userfiles only via hardened static mapping. - Rotate APP_KEY, DB credentials, and API keys if the instance was exposed unpatched.
- Prefer document-root layouts that never dispatch traversal-capable controllers for static trees.