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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-66491 — Joomla 扩展 PhocaCommander 在 getSource 函数中存在路径遍历漏洞 | Kitploit
工具/GitHubGitHub/toanln-cov/cve-2026-66491
漏洞分析漏洞利用Web应用程序漏洞利用信息收集Web安全渗透测试
GitHubtoanln-cov/cve-2026-66491

CVE-2026-66491

Joomla 扩展 PhocaCommander 在 getSource 函数中存在路径遍历漏洞

查看仓库
12天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

PhocaCommander 中通过 getSource() 实现任意文件读取

PhocaCommander ≤ 6.1.3 —— 已认证的管理员路径遍历,无需 CSRF

CVE CVSS v4.0 CWE-22 Affected Researcher


摘要

PhocaCommander 的文件编辑器端点存在任意文件读取漏洞。getSource() 函数将 base64 编码的 filename 参数解码后,直接传递给 file_get_contents(),且未进行路径包含检查。已认证的管理员只需发送一个 GET 请求,即可读取 Web 服务器进程可访问的任何文件——包括 Web 根目录之外的文件。无需 CSRF 令牌。

利用该漏洞可从 configuration.php 中泄露 Joomla 的数据库凭据和密钥,并可通过路径遍历序列(例如 ../../../../etc/passwd)读取 /etc/passwd 等系统文件。


受影响版本

组件受影响版本测试环境已修复版本
PhocaCommander1.0.0 – 6.1.3Joomla 5.4.7 + PhocaCommander 6.1.3(PHP 8.2 / Apache)6.1.4

漏洞详情

所需认证: 管理员会话(无需 CSRF 令牌——GET 请求)

文件: administrator/components/com_phocacommander/models/phocacommanderedit.php

根本原因

getSource() 将 filename 从 base64 解码后,直接拼接到 JPATH_ROOT 上,然后读取文件,且未进行包含检查:

PHOCACOMMANDEREDIT.PHP —— 存在漏洞的代码

root@kitploit:~
public function getSource($fileName) {
    $fileName = base64_decode($fileName); // ← attacker-controlled
    $item = new stdClass;
    if (PhocaCommanderHelper::fileExists(JPATH_ROOT . '/' . $fileName)) {
        $item->source = file_get_contents(JPATH_ROOT . '/' . $fileName); // ← no containment check
    }
    return $item;
}

fileExists() 使用 is_file(Path::clean($file))。Path::clean() 会规范化斜杠,但不会去除 ../ 序列,因此遍历路径可未受检查地逃逸出 Web 根目录。

代码库中的 helpers/phocacommander.php 包含 getContainedRealPath(),该函数基于 realpath() 执行正确的包含检查。save() 和 download() 会调用此函数,但 getSource() 中从未加入该检查。此外,控制器的 edit() 方法通过 GET 分发,因此标准 CSRF 令牌检查不适用——仅凭一个有效的管理员会话 Cookie 即可触发任意文件读取。


概念验证(PoC)

场景 1 —— 通过 Web 根目录外的路径遍历读取 /etc/passwd

1. 登录 Joomla 管理员面板

通过管理员登录页面进行身份验证,获取有效的会话 Cookie。除标准管理员会话外,无需任何其他特权。

2. 通过路径遍历读取 Web 根目录外的 /etc/passwd

发送以下携带 base64 编码遍历路径的 GET 请求:

root@kitploit:~
GET /administrator/index.php?option=com_phocacommander&task=phocacommanderedit.edit&filename=Li4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA==
Cookie: [admin session]

filename 解码后:Li4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA== → ../../../../etc/passwd

解析后的路径:/var/www/html/../../../../etc/passwd = /etc/passwd

编辑器会呈现 /etc/passwd 的完整内容,从而确认可读取 Web 根目录之外的文件。

请求 / 响应

Burp Suite 请求与响应,显示 /etc/passwd 内容在 Joomla 编辑器中呈现


影响

  1. 系统文件泄露 —— SSH 密钥以及同托管应用的配置文件均可访问(前提是 Web 服务器进程可读)
  2. 无需交互 —— 攻击仅为单个 GET 请求,无需 CSRF 令牌,无需表单提交,也无需受害者交互
  3. 权限提升链条 —— 泄露的密钥使攻击者能够在离线状态下伪造 Joomla 令牌,从而针对目标站点打开更大的攻击面

参考资料

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-66491
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-66491
  • 厂商仓库: https://github.com/PhocaDesign/PhocaCommander
下载工具