漏洞概述 漏洞名称: Stored XSS no Cadastro de Responsáveis via campos "Nome" e "Descrição" #2491 漏洞类型: 存储型跨站脚本攻击 (Stored Cross-Site Scripting, XSS) 漏洞描述: 在 SIGA 应用的“责任人注册”功能中,发现了一个存储型 XSS 漏洞。攻击者可以通过在“Nome”(名称)和“Descrição”(描述)字段中注入恶意 JavaScript 代码,这些代码会被存储在系统中。当其他用户访问该页面时,恶意代码会自动执行,从而窃取用户会话信息(如 Cookie)。 影响范围 受影响组件: Cadastro de Responsáveis (责任人注册) 触发条件: 用户需要在“Nome”或“Descrição”字段中插入特定的 payload。 执行环境: 任何登录并访问责任人列表页面的用户。 潜在危害: - 会话劫持:攻击者可以获取用户的会话 Cookie,进而冒充用户进行操作。 - 数据泄露:可能访问到敏感信息,如用户会话数据。 - 进一步攻击:利用已获取的权限进行更复杂的攻击。 修复方案 输入验证: 对用户输入进行严格的验证,确保不包含恶意脚本。 输出编码: 在将用户输入渲染到 HTML 之前,进行适当的 HTML 编码,防止脚本执行。 内容安全策略 (CSP): 实施 CSP 策略,限制页面中可以执行的脚本来源。 后端过滤: 在后端对输入进行过滤,阻止潜在的恶意代码。 POC 代码 详细步骤 1. 访问漏洞功能: - 访问 2. 插入 Payload: - 在“Nome”或“Descrição”字段中插入上述 POC 代码。 3. 保存: - 保存表单。 4. 触发漏洞: - 访问 5. 结果: - 页面加载时,恶意代码自动执行,弹出包含用户 Cookie 的警告框。 技术细节 漏洞原因: 应用未能正确对用户输入进行 HTML 编码,导致恶意脚本直接嵌入到页面中。 预期行为: 用户输入应被正确编码,防止脚本执行。 实际行为: 恶意脚本被直接执行,导致 XSS 攻击成功。 影响总结 存储型 XSS: 恶意代码存储在服务器端,每次访问相关页面时都会执行。 认证上下文执行: 代码在用户已认证的情况下执行,具有更高的权限。 敏感数据暴露: 可能暴露用户的会话 Cookie 和其他敏感信息。 进一步攻击基础: 为更复杂的攻击提供了起点,如会话劫持和数据操纵。