漏洞概述 标题: Environment variable disclosure via Response-Derived DSL Expressions 发布者: ehsandeep 发布日期: 2 days ago 严重程度: Moderate (5.3 / 10) 描述: Nuclei 表达式求值引擎中的漏洞使得恶意目标服务器能够注入并执行支持的 DSL 表达式。当包含 helper/function 语法的 HTTP 响应数据被多步模板重复使用时,就会发生这种情况。如果启用了 / 选项,这可能会暴露主机环境变量。默认情况下,标准配置不受此信息泄露风险的影响。 CVSS v3 基本指标: 攻击向量: Network 攻击复杂度: High 特权要求: None 用户交互: Required 范围: Unchanged 机密性: High 完整性: None 可用性: None 影响范围 受影响组件: 位于 未解析变量验证路径 ( ) 受影响用户: 运行多步模板(包含提取器或基于流的请求链接)的 CLI 用户,这些模板将响应派生值针对不受信任或受攻击者控制的靶标进行解析,并启用了 标志。 已将 Nuclei 集成到平台中的 SDK 用户,其中 设置为 且扫描靶标不完全受信任。 漏洞细节: 首先替换占位符,然后扫描替换后的输出以查找表达式。由于这种两遍方法,响应派生的值(包括提取器输出和响应正文内容)可以在第二遍中被重新解释为 DSL/helper 语法。 当启用 ( ) 时,环境变量会合并到模板变量映射中。恶意目标可以返回包含表达式(如 )的响应数据,这些表达式在随后的请求模板中重新使用时,会解析为实际的环境变量值。这可能会暴露敏感的主机数据,如 API 密钥、凭据和令牌。 即使未启用 (默认值),注入的 DSL 表达式仍可能触发 helper 函数(如 ),但这在意外行为之外没有有意义的安全影响。 还有一个单独的问题在 中:在决定是否将 包含未解析的变量时,正在评估 helper 表达式,这导致验证逻辑在最终请求将值保留为字面量时运行 side-effectful helpers。 修复方案 Patches: 该漏洞已在 Nuclei v3.8.0 中修复。强烈建议升级到该版本。 相关修复引用: #7221, #7321 Mitigation: 升级到 Nuclei v3.8.0。更新的求值逻辑现在在占位符替换之前从原始模板文本收集表达式,并且仅评估那些模板作者编写的表达式。 如果您启用了 ,请在扫描不受信任的靶标时禁用它,以避免环境变量泄露。 Workarounds: 如果暂时无法升级,请确保在针对不受信任的靶标运行多步模板时,未启用 / 。 Acknowledgments: 感谢 @gnuletik 通过负责任披露报告此问题至 security@projectdiscovery.io。