Laravel框架惊现高危漏洞 攻击者可肆意植入恶意脚本
Laravel 框架中出现了一个极为严重的安全漏洞(编号为 CVE-2024-13918)。攻击者能够借此在运行该流行 PHP 框架特定版本的网站上,随意执行 JavaScript 代码。
这个漏洞是在 Laravel 调试模式下的错误页面渲染环节被发现的。当应用程序处于开发配置状态时,就容易受到反射性跨站点脚本(XSS)攻击。CVSS v3.1 评分为 8.0 分,受影响的 Laravel 版本为 11.9.0 至 11.35.1。
漏洞触发机制
当通过.env 配置文件中的 APP_DEBUG=true 设置开启调试模式后,Laravel 的错误处理系统就会暴露出这个漏洞。在受影响的版本里,框架的错误页面在展示 HTTP 500 错误的诊断信息时,对请求参数的编码处理存在错误。
攻击者会利用这一点,精心构造恶意 URL,在查询参数或者 POST 数据里嵌入 JavaScript 攻击载荷。从技术层面来看,根本原因在于 Laravel 的 Blade 模板引擎,在调试错误页面中渲染请求参数时,使用了未转义的输出指令({! !!}),这就绕过了 Laravel 原本由安全的 {{ }} 语法自动进行 HTML 实体编码所提供的 XSS 防护机制。在错误页面模板中,就能看到这段容易引发问题的代码片段。
一旦开发人员配置了 APP_DEBUG=true,这种未转义的输出方式就会让原始的 HTML/JavaScript 内容得以注入。这种情况一般出现在开发阶段,但有时候在生产环境中也会意外开启。这个漏洞是由 SBA Research 的研究人员 Philipp Adelsberger 和 Fabian Funder 发现的。
POC方式
有一个POC展示了这种攻击的实现方式:
在 .env 中使用 APP_DEBUG=true 配置 Laravel 创建触发错误的测试路由:
制作攻击 URL:
当访问这个 URL 时,会触发除零错误,使得 Laravel 渲染包含未转义的 payload 参数的调试错误页面,浏览器就会执行注入的脚本,进而导致用户会话信息被泄露,或者被执行未经授权的操作。
攻击场景
攻击者可以通过该漏洞执行多种恶意操作,比如:
通过 document.cookie 访问来窃取会话 cookie 和身份验证令牌;
通过 window.location 操作,将用户重定向到钓鱼网站;
通过 CSRF 令牌盗窃,代表已认证用户执行操作;
还能通过加载外部脚本,部署加密货币挖矿程序或者恶意软件
当然,这种攻击需要受害者在应用程序以调试模式运行时,点击特制链接。不过,攻击者要是把社会工程策略和对易受攻击实例的广泛扫描结合起来,那这将成为一个极具威胁的攻击手段。
缓解措施
Laravel 已经发布了 11.36.0 版本,里面包含了针对错误页面请求参数正确编码的安全补丁。开发人员得马上通过 Composer 进行升级。
对于那些需要临时缓解风险的系统,要审核所有环境,确保生产环境中调试模式始终处于禁用状态。
Laravel 为全球超过 78.6 万个可见的 Web 应用程序提供支持,管理员必须把漏洞管理和强化错误报告机制当作重中之重。
关注公众号:拾黑(shiheibook)了解更多
友情链接:
下软件就上简单下载站:https://www.jdsec.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/