IPBUF安全漏洞报告
English
CVE-2026-5090 CVSS 6.1 中危

CVE-2026-5090 Perl Template::Plugin::HTML 存在XSS漏洞

披露日期: 2026-05-19
来源: 9b29abf9-4ab0-4765-b253-1875cd9b441e

漏洞信息

漏洞编号
CVE-2026-5090
漏洞类型
跨站脚本攻击 (XSS)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Template::Plugin::HTML (Perl)

相关标签

XSSPerlHTML InjectionCVE-2026-5090Template::Plugin::HTML

漏洞概述

Template::Plugin::HTML版本3.102及之前的Perl模块存在安全漏洞。由于`html_filter`函数未正确转义单引号,攻击者可以通过注入恶意HTML和JavaScript代码,在单引号包裹的HTML属性中执行脚本,导致跨站脚本攻击风险。

技术细节

该漏洞源于Perl的Template::Plugin::HTML组件中`html_filter`函数的过滤机制不完善。该函数通常会转义尖括号、双引号和特殊符号,但遗漏了对单引号的转义处理。当模板开发人员使用单引号定义HTML属性(例如`<a title='[% var | html %]'>`)并传入未经过滤的用户输入时,攻击者可以构造包含单引号的Payload(如`' onclick='alert(1)`)。这将闭合原有属性并注入新的JavaScript事件处理器。尽管完全的HTML标签注入受到限制,但通过事件处理器触发的代码仍可在受害者浏览器中执行,造成信息泄露。

攻击链分析

STEP 1
1. 识别目标
攻击者确认目标应用使用了Perl Template Toolkit,并且版本中包含Template::Plugin::HTML 3.102或更早版本。
STEP 2
2. 构造Payload
攻击者构造包含单引号的恶意字符串,旨在闭合当前属性并插入JavaScript事件处理器(如onclick)。
STEP 3
3. 发送请求
攻击者通过输入字段或URL参数将Payload发送给服务器。
STEP 4
4. 模板渲染与执行
服务器使用存在漏洞的插件处理模板,生成包含恶意代码的HTML页面返回给用户。
STEP 5
5. 触发漏洞
用户访问该页面并点击被修改的元素,触发注入的JavaScript代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Vulnerable template snippet # <a id='ref' title='[% var | html %]'> # PoC Input value for 'var' # This payload breaks out of the single quote attribute and injects an onclick event my $var = "' onclick='while (true) { alert(1) }'"; # Expected Rendered HTML: # <a id='ref' title='' onclick='while (true) { alert(1) }''>

影响范围

Template::Plugin::HTML <= 3.102

防御指南

临时缓解措施
在无法立即升级的情况下,开发者应对用户输入进行额外的单引号转义处理,或者修改模板代码,将单引号包裹的属性改为双引号包裹(前提是双引号转义正常工作),以减少攻击面。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表