IPBUF安全漏洞报告
English
CVE-2026-33738 CVSS 5.4 中危

CVE-2026-33738 Lychee 存储型XSS漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33738
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Lychee

相关标签

XSSStored XSSLycheeCWE-79RSS Injection

漏洞概述

Lychee是一款免费的开源照片管理工具。在7.5.3版本之前,该软件存在一个存储型跨站脚本(XSS)漏洞。具体而言,照片的描述字段在存储时未经过适当的HTML清理,随后在RSS、Atom及JSON feed模板中使用了Blade模板引擎的未转义语法({!! !!})进行渲染。由于/feed端点无需身份验证即可公开访问,攻击者可以通过上传带有恶意脚本的照片描述,诱使任何访问该RSS feed的RSS阅读器执行攻击者控制的JavaScript代码。

技术细节

该漏洞的根本原因在于Laravel Blade模板引擎的不安全使用。在生成RSS、Atom和JSON Feed时,开发者使用了`{!! $item->summary !!}`语法直接输出用户控制的数据(照片描述),而没有使用`{{ }}`进行自动HTML转义。这导致攻击者上传的恶意HTML/JavaScript代码被原样写入Feed响应中。攻击流程如下:首先,攻击者注册或利用现有权限上传照片,并在description字段注入XSS Payload(如<script>标签);其次,服务器将该Payload存储在数据库中;最后,当受害者或RSS聚合器访问公开的/feed端点时,服务器会从数据库读取未经过滤的描述并直接渲染到响应体中,导致受害者浏览器解析并执行恶意脚本。

攻击链分析

STEP 1
步骤1:恶意输入注入
攻击者在Lychee平台上上传照片,并在照片的描述字段中插入恶意的JavaScript代码或HTML标签。
STEP 2
步骤2:数据存储
Lychee服务器将照片及其未经HTML清理的描述字段原样存储到数据库中。
STEP 3
步骤3:生成恶意Feed
由于未转义输出,当服务器处理RSS/Atom/JSON Feed请求时,会将恶意脚本直接嵌入到Feed的XML或JSON响应中。
STEP 4
步骤4:触发执行
受害者(或RSS聚合机器人)访问公开的/feed端点,其RSS阅读器解析Feed内容并执行其中的恶意脚本,导致XSS攻击成功。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC Concept for CVE-2026-33738 1. Log in to Lychee and upload a photo. 2. Set the 'description' field of the photo to the following payload: --> <img src=x onerror=alert('CVE-2026-33738_XSS')> <!-- Alternatively, using script tags (depending on RSS reader parser): <script>alert('CVE-2026-33738_XSS')</script> 3. Access the public feed endpoint: GET /feed or /feed?type=atom 4. Observe that the JavaScript alert executes when the feed is loaded in a vulnerable RSS reader or browser. -->

影响范围

Lychee < 7.5.3

防御指南

临时缓解措施
如果无法立即升级,建议在网络层面(如WAF或反向代理)限制对/feed端点的访问,仅允许受信任的内部IP访问,或者暂时禁用RSS Feed功能以防止攻击者利用公开接口进行攻击。

参考链接

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