CVE-2026-33149Tandoor Recipes是一个用于管理食谱、膳食计划和购物清单的应用程序。在2.5.3及之前的版本中,该应用默认将Django的ALLOWED_HOSTS设置为'*',导致系统接受任意HTTP Host头而未进行验证。由于应用使用request.build_absolute_uri()在多个上下文中生成绝对URL(如邀请邮件、API分页和OpenAPI schema),攻击者可以通过发送精心构造的Host头请求来操纵所有服务器生成的URL。最严重的影响是邀请链接投毒:当管理员创建邀请并发送邮件时,链接会指向攻击者的服务器而非真实应用。受害者点击链接后,邀请令牌将发送给攻击者,攻击者随后可利用该令牌在真实应用上注册。
该漏洞的核心原理在于Django配置不当。Tandoor Recipes未在配置文件中严格限制ALLOWED_HOSTS,使用了通配符'*',这使得Django框架信任任何传入的Host头。应用程序在生成邀请链接等关键功能时,依赖request.build_absolute_uri()方法。此方法根据当前请求的元数据构建URL,直接使用了攻击者可控的Host头值。利用该漏洞需要攻击者具备一定的权限(PR:H),通常需要已注册用户或能够向系统发送请求。攻击流程如下:首先,攻击者向Tandoor Recipes的接口发送HTTP请求,并将Host头修改为恶意域名(如attacker.com)。随后,当系统管理员创建新用户邀请时,后端生成邮件内容,其中的邀请链接域名被替换为attacker.com。受害者收到邮件并点击链接,浏览器向attacker.com发送带有有效令牌的请求。攻击者截获令牌后,即可通过向真实服务器提交该令牌来完成账户注册,从而获取对系统的访问权限。