Joomla Novarain/Tassos 框架漏洞允许 SQL 注入和未经身份验证的文件读取
运行 Novarain/Tassos 框架的网站容易受到严重安全漏洞的影响,这些漏洞允许未经身份验证的文件读取、文件删除和 SQL 注入攻击 ,这可能会导致远程代码执行和未打补丁的系统上的管理员完全接管。
运行 Novarain/Tassos 框架的网站容易受到严重安全漏洞的影响,这些漏洞允许未经身份验证的文件读取、文件删除和 SQL 注入攻击 ,这可能会导致远程代码执行和未打补丁的系统上的管理员完全接管。
这些问题影响多个流行的 Tassos 扩展程序,需要通过供应商的更新版本进行紧急修补。
对共享的 Novarain/Tassos Framework 插件 (plg_system_nrframework) 的源代码审查发现,通过 AJAX 处理程序暴露了三个核心原语,该处理程序在处理 task=include 操作时没有进行适当的加固。
通过滥用此入口点,攻击者可以调用 Joomla 站点根目录下实现了 onAjax 方法的 PHP 类,从而有效地将内部辅助类变成可远程访问的小工具。
在这些小工具中,有一个类错误地处理了 CSV 加载,它可以被强制读取 Web 服务器用户可访问的任意文件。
而另一类则公开了一个删除操作,该操作会删除攻击者提供的路径,而无需额外的验证。
第三个类用于动态字段填充,它将攻击者控制的参数传递到数据库查询中,从而创建了一个 SQL 注入原语,能够在 Joomla 数据库帐户下进行任意表和列读取。
将这些功能串联起来,外部攻击者可以从数据库中窃取管理员会话数据,进而入侵后端,然后部署恶意扩展程序或修改模板, 从而获得持久远程代码执行 (RCE) 权限。
受影响的部件和影响
该漏洞框架被捆绑到几个广泛部署的 Joomla 扩展程序中,包括 Convert Forms、EngageBox、Google Structured Data、Advanced Custom Fields 和 Smile Pack,这意味着许多网站通过这些插件间接地继承了这种风险。
受影响的版本范围包括 Novarain/Tassos Framework (plg_system_nrframework) 和每个扩展的特定版本,只要面向互联网的站点上系统插件保持启用状态,就可能被利用。
由于该攻击向量完全依赖于未经身份验证的 AJAX 请求,因此需要采取一些常见的加固措施,例如限制对管理员角色的访问以及添加额外的密码。
添加插件级密钥并不能阻止攻击者在能够读取或删除文件以及查询数据库后遭受损失。
在实际的攻击链中,攻击者可以利用 SQL 注入获取超级管理员会话,登录后端,然后利用文件写入路径执行任意 PHP 代码 ,从而导致网站完全被接管。
供应商已做出回应,发布了修复后的 Tassos 框架和受影响的扩展程序,可通过官方下载区和标准的 Joomla 更新机制获取。
这些漏洞是由独立安全研究员 p1r0x 与 SSD Secure Disclosure 合作发现的。
管理员应立即更新所有 Tassos 组件,或暂时关闭暴露站点上的 plg_system_nrframework 插件及相关扩展,直到修补完成。
作为纵深防御措施,运营商应在 Web 服务器或 WAF 上限制或过滤 com_ajax 流量 ,并审查日志中是否存在可疑的 task=include 请求、异常的 CSV 相关 AJAX 活动或无法解释的文件删除,这些都可能表明有人试图利用漏洞。



评论4次
这个框架的应用还不少呢
SQL注入 和 文件包含漏洞 也值得 测试一波
这量也太少了
SQL注入 和 文件包含漏洞 也值得 测试一波
结论
该漏洞组合通过未验证的AJAX入口点
task=include实现了多链式攻击:漏洞的根源在于未对
task=include入口参数进行权限校验和输入过滤,且插件级密钥未被纳入校验逻辑,导致攻击无需身份验证即可触发。分析路径(T00ls方法论)
L1 攻击面识别
plg_system_nrframework插件的AJAX处理器(如index.php?option=com_ajax&plugin=...&task=include)CSV加载类:include方法直接拼接用户提供的文件路径(include($_GET['file'])类似逻辑)文件删除类:unlink($_GET['path'])等未过滤的文件操作函数动态字段类:mysql_query("SELECT * FROM ... WHERE id=".$_GET['id'])(直接拼接id参数)L2 假设与验证
task=include可调用任意实现onAjax方法的类,需验证是否包含可滥用的方法:task=include&class=TargetClass&method=targetMethod?option=com_ajax&task=include&class=CsvLoader&file=../../../configuration.php?option=com_ajax&task=include&class=DynamicField&method=fetch&id=1%20UNION%20SELECT%201,2,3,user()%23L3 边界/异常场景
file=../configuration.phpvsfile=php://filter/convert.base64-encode/resource=configuration.phpid=1%20OR%201=1%20UNION%20SELECT%20concat(user(),0x3a,database()).htaccess)或遍历删除目录(需验证是否有限制)。L4 防御反推与修复
task=include无需密钥。task和class参数,拒绝include等危险操作。file/id等参数进行严格过滤(如正则限制路径为^[a-zA-Z0-9/_]+$)。task=include需管理员身份或通过CSRF验证。验证步骤(最小PoC)
文件读取验证:
若返回
<dbname>,<dbuser>,<dbprefix>等配置信息,则漏洞存在。SQL注入验证:
若响应包含
root@localhost:...等数据,则注入成功。日志审计: 检查服务器日志中是否存在异常请求:
修复建议
紧急措施:
plg_system_nrframework插件及关联的Tassos扩展(如Convert Forms等)。com_ajax?task=include请求:长期修复:
监控与响应:
task=include且携带file/id参数的请求。find /var/www/html -mmin -10 -ls监控异常修改。(注:若无法确认具体漏洞参数名,需结合目标站点源码或调试模式进一步逆向
onAjax方法逻辑。)