本仓库包含一个基于 Python 的扫描器和概念验证,针对 Joomla Helix3 组件中的一个漏洞。该漏洞是一个任意文件写入问题,当攻击者能够将 PHP 载荷写入 Web 可访问的位置时,可能导致远程代码执行(RCE)。
当请求参数被用于控制文件路径或文件内容且缺乏适当验证时,就会出现该漏洞行为。在 Helix3 AJAX 接口的情况下,该端点接受可能被用于将文件写入服务器文件系统的数据。如果应用程序不限制目标路径且不验证内容,攻击者就可以在 Web 服务器会执行的位置创建恶意 PHP 脚本。
换句话说,该漏洞不仅仅是“可以写入文件”——而是一条危险的利用链:
这是典型的任意文件写入到 Web Shell 场景。
一旦攻击者能够将 PHP 文件写入站点根目录或其他可执行目录,他们就可以:
影响非常严重,因为它允许攻击者将简单的文件写入缺陷转变为对服务器的完全攻陷。
根本问题通常类似于以下逻辑:
$file = $_POST['layoutName'];
$content = $_POST['content'];
file_put_contents($file, $content);
如果 $file 的值由攻击者控制且路径未受限制,应用程序可能会将 PHP 代码写入可执行路径。恶意脚本随后可被浏览器访问,并可由 Web 服务器执行。
本项目包含一个多线程 Python 工具,尝试执行以下操作:
它将存在漏洞的目标记录在 results.txt 中,并将原始 PHP 输出存储在 raw_result.txt 中。
修复应消除不受信任的文件写入并实施严格验证。推荐的修复步骤如下。
将 Joomla 和 Helix3 组件/插件升级到最新的稳定版本。安全更新通常会移除或限制允许任意写入操作的易受攻击端点。
如果不需要 Helix3 AJAX 功能,请完全禁用它。移除对不安全端点的访问可显著减少攻击面。
不允许任意文件系统路径。应用程序应仅允许写入一个固定的小型目录,该目录不可公开访问且不作为 PHP 执行。
验证应拒绝:
../在写入任何文件之前:
仅应允许受信任的管理员使用写入文件的端点。在接受任何写入请求之前,要求进行适当的身份验证和权限检查。
切勿在未经严格验证的情况下将攻击者控制的原始内容写入可执行文件。此外,服务器加固应包括:
requests 包创建一个包含目标 URL 的文件,例如 targets.txt:
http://example.com
https://joomla-site.local
http://127.0.0.1
然后运行:
python3 cve-2026-49049.py targets.txt
该脚本将创建:
results.txt — 检测到的存在漏洞的 URLraw_result.txt — 测试期间观察到的原始 PHP 载荷本项目旨在用于教育目的、合法的安全研究以及经授权的漏洞评估。不得在未经明确许可的情况下针对系统使用。严禁滥用。
本仓库中的内容旨在帮助研究人员和管理员理解、识别并修复真实的安全问题。请负责任地使用,并且仅在您拥有适当授权的受控环境中使用。