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

CVE-2026-34231 Slippers框架XSS漏洞

披露日期: 2026-03-31

漏洞信息

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

相关标签

XSSCross-Site ScriptingSlippersDjangoWeb SecurityCVE-2026-34231

漏洞概述

Slippers是Django的UI组件框架。在0.6.3版本之前,其`{% attrs %}`模板标签存在跨站脚本(XSS)漏洞。当包含不受信任数据的上下文变量传递给该标签时,数据未经转义直接插入HTML属性字符串中,攻击者可利用此漏洞逃逸属性上下文,向渲染页面注入任意HTML或JavaScript代码,造成安全风险。

技术细节

该漏洞源于Slippers框架`{% attrs %}`模板标签在处理上下文变量时缺乏必要的安全过滤机制。在Django视图函数中,如果开发者将未经消毒的用户可控数据(如URL参数、表单输入)直接赋值给模板变量,并在模板中通过`{% attrs variable %}`的方式渲染,该变量值会被原样插入HTML标签的属性位置。由于系统未对`"`、`'`、`>`等特殊字符进行HTML实体转义,攻击者可以构造形如`x onmouseover="alert(1)"`的恶意字符串。这会导致生成的HTML变为`<div x onmouseover="alert(1)">`,从而成功逃逸原属性边界,注入任意JavaScript代码。CVSS 3.1评分为6.1,属于中危漏洞,攻击复杂度低,无需权限即可触发,但通常需要诱导用户点击或访问特定页面(UI:R)才能完成攻击。

攻击链分析

STEP 1
侦察
攻击者识别目标网站使用了Slippers Django组件框架,并定位到使用{% attrs %}标签的功能点。
STEP 2
武器化
攻击者构造包含恶意JavaScript代码的Payload,旨在打破HTML属性上下文(例如:`onclick=alert(1)`)。
STEP 3
交付
攻击者将恶意Payload通过输入字段(如表单、URL参数)提交给服务器,该数据随后被存储或直接传递给模板上下文。
STEP 4
利用
当受害者访问包含未转义数据的页面时,服务器渲染模板,将恶意Payload直接插入HTML属性中。
STEP 5
执行
受害者的浏览器解析渲染后的HTML,执行注入的恶意脚本,导致Cookie窃取或会话劫持。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept for CVE-2026-34231 # In a Django view, set a context variable with malicious payload # context = {'user_input': 'id="btn" onclick="alert(\'XSS\')"'} # In the Django template using the vulnerable slippers tag: # <button {% attrs user_input %}>Submit</button> # The rendered HTML will look like this: # <button id="btn" onclick="alert('XSS')">Submit</button> # # When a user clicks the button, the JavaScript alert will execute.

影响范围

Slippers < 0.6.3

防御指南

临时缓解措施
在升级补丁应用之前,开发者应确保所有传递给`{% attrs %}`标签的变量都经过严格的输入验证和HTML转义处理,或者使用Django内置的模板过滤器(如`escape`)对数据进行预处理,以防止恶意脚本注入。

参考链接

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