
| 插件名称 | Learnify |
|---|---|
| 漏洞类型 | 本地文件包含 |
| CVE 编号 | CVE-2025-60085 |
| 紧迫性 | 高 |
| CVE 发布日期 | 2026-04-25 |
| 来源网址 | CVE-2025-60085 |
Learnify 主题中的关键本地文件包含漏洞 (≤ 1.15.0) — WordPress 网站所有者的紧急步骤
2026-04-25 | WP‑Firewall 安全团队
概括
在 Learnify WordPress 主题中发现了一个关键的本地文件包含 (LFI) 漏洞,影响版本 ≤ 1.15.0 (CVE-2025-60085)。该问题允许未经身份验证的攻击者从网络服务器中包含和显示本地文件。报告的漏洞具有高严重性 (CVSS 8.1),并且可以大规模利用 — 允许攻击者泄露敏感文件,例如 wp-config.php, 、环境文件或任何可读的服务器端文件。这可能导致凭据泄露、数据库被攻破以及根据环境的不同完全接管网站。.
如果您运行 Learnify 或使用它的网站,请仔细阅读此帖子。我们解释了漏洞的含义、攻击者如何利用它、如何检测利用迹象,以及我们推荐的逐步缓解和事件响应过程。我们还展示了实用的 WAF 规则和服务器加固指导,以立即减少攻击面。.
什么是本地文件包含 (LFI)?
本地文件包含 (LFI) 是一种网络应用程序中的漏洞类别,当用户控制的输入用于选择和包含服务器上的文件而没有适当验证时,就会发生这种情况。在基于 PHP 的网站中,例如,这可能看起来像:
include($_GET['template']);require_once($_REQUEST['page']);
如果攻击者可以控制决定包含哪个文件的输入,他们可以将应用程序指向任意本地文件,并强迫服务器读取并输出其内容。常见后果:
- 秘密泄露(数据库凭据、API 密钥)。.
- 收集信息以准备进一步的攻击。.
- 在允许危险包装器(php://input,php://filter)或启用远程文件包含的环境中,可能会发生远程代码执行 (RCE)。.
LFI 可以使用简单的遍历字符串 (../../../../) 和包装器技术 (php://filter) 来安全地读取文件,在直接包含不会打印文件内容的上下文中。.
为什么这个 Learnify LFI 是危险的
关于此事件的关键事实:
- 影响 Learnify 主题版本 ≤ 1.15.0。.
- CVE: CVE-2025-60085。.
- 所需权限:无(未经身份验证)。.
- CVSS:8.1(高)。.
- 目前没有官方供应商补丁可用(网站所有者必须采取缓解措施)。.
为什么这个特定的LFI是一个高优先级问题:
- 未经身份验证:攻击者无需凭据即可尝试利用。.
- 易于自动化:LFI检查可以通过自动扫描器在数千个网站上运行。.
- 敏感目标文件:WordPress在
wp-config.php, 中存储数据库凭据和盐,使该文件成为主要目标。. - 可链式利用:LFI可以与其他错误配置(弱文件权限、可写插件/主题目录、危险的PHP包装器)链式利用,以升级到RCE或持久后门安装。.
由于这些因素,运行易受攻击的Learnify版本的网站应立即采取行动。.
技术细节(攻击者通常如何利用LFI)
虽然确切的易受攻击参数名称可能因主题版本而异,但LFI的利用模式遵循常见步骤。下面我们解释攻击者将使用的一般方法——以便您能够识别并防御。.
- 找到入口点
- 攻击者寻找调用包含,需要,file_get_contents, 的主题文件,或类似的受GET/POST/ cookie值影响的函数。.
- 示例风险模式:include( $theme_dir . '/' . $_GET['tpl'] ); - 路径遍历
- 攻击者提交包含遍历序列的有效负载:
–../../../../etc/passwd
–../../../../wp-config.php
- 许多服务器通过在包含二进制文件时返回错误来防止读取文件。攻击者随后使用包装器。. - 使用包装器读取文件(常见技术)
–php://filter/convert.base64-encode/resource=path/to/file— 在包含时应用过滤器以对文件进行base64编码,使其在响应中可打印。.
– 示例有效负载:
–?tpl=php://filter/convert.base64-encode/resource=../../../../wp-config.php - 空字节和编码技巧
– 在较旧的PHP和服务器设置中,攻击者可能会使用空字节(%00)截断来绕过后缀检查。许多现代版本对此进行了缓解,但在自动扫描中仍然是常见的有效负载:
–?tpl=../../../../wp-config.php - 利用后步骤
– 如果找到wp-config凭据,攻击者会使用它们访问数据库或创建管理员用户、上传后门或提取其他秘密。.
– 如果文件上传可访问且未经过清理,攻击者可能会上传PHP shell并获得RCE。.
一份负责任的披露指出,Learnify主题的包含逻辑未能正确清理用户提供的路径,从而启用了上述技术。.
示例指标和恶意请求模式
检查您的Web服务器日志和WAF日志,寻找包含这些模式的请求:
php://filter/convert.base64-encode/resource=....或者../重复的(路径遍历)%00或空字节编码尝试- 对主题PHP文件的请求,带有不寻常的查询字符串,如
?tpl=...或者?page=...(检查任何看起来像是选择模板的参数) - 响应中的长base64字符串(表示文件内容已编码并返回)
可疑请求行示例:
GET /wp-content/themes/learnify/somefile.php?template=php://filter/convert.base64-encode/resource=../../../../wp-config.php HTTP/1.1
如果您看到此模式,请将其视为高优先级 — 立即隔离并调查。.
立即行动清单(在头几个小时内该做什么)
如果您运营的站点使用 Learnify ≤1.15.0,请立即执行以下操作:
- 将站点置于维护模式(如果可行)或应用临时访问控制(IP 白名单)以减少暴露。.
- 切换到干净的主题(WordPress 默认)或从面向公众的目录中移除易受攻击的主题。不要让易受攻击的主题处于激活状态。.
- 如果发布了修补的主题版本,请立即应用更新。如果尚未存在官方补丁,请继续以下缓解措施。.
- 设置 WAF 规则(虚拟补丁)以阻止包含遍历序列或包装器使用的请求(请参见“WAF 规则”部分中的示例规则)。.
- 更改 WordPress 数据库密码和可能存储在
wp-config.php和其他配置文件中的任何服务凭据 — 但仅在确保备份和完整性检查后进行,因为妥协可能仍然存在。. - 在
wp-config.php修复后轮换密钥和盐。. - 扫描站点以查找 webshell、可疑文件和修改过的时间戳。.
- 如果检测到妥协,请从经过验证的干净备份中恢复。.
- 增加监控:启用文件完整性监控、审计日志和警报。.
如果您没有技术能力执行所有步骤,请联系您的托管提供商或安全团队,并提供您发现的指标。.
如何检测您的站点是否被利用
即使您关闭了漏洞,您也必须验证它是否在之前被利用。.
检查:
- 在
wp-content/上传,wp-内容/主题,wp-内容/插件, ,或其他意外位置。. - WordPress 中的新管理员用户(检查
wp_users表)。. - 可疑的计划任务(cron 作业)或数据库中的未经授权的 cron 条目。.
- 从服务器到未知 IP 的出站连接(检查防火墙/主机日志)。.
- 意外的高 CPU/IO 使用率或流量激增。.
- 慢查询日志中不寻常的数据库查询或使用以前未见账户的查询。.
- 不明的 PHP 文件或包含编码脚本的文件。
评估,base64_解码, 或者gzinflate.
推荐的工具:
- 服务器级文件完整性检查(类似 tripwire)。.
- WordPress 安全扫描器(优先选择提供代码级扫描和启发式分析的工具)。.
- 对文件和数据库内容进行全面恶意软件扫描。.
- 手动审核关键文件(wp-config、.htaccess、插件/主题文件夹中的 index.php)。.
如果发现被攻破的证据,请遵循下一部分的事件响应步骤。.
事件响应:逐步操作手册
如果确认被利用,请按以下步骤进行:
- 包含
– 将网站下线或阻止流量以防止进一步损害。.
– 撤销被攻破的凭据和 API 密钥。.
– 如果可能,将服务器与网络隔离。. - 保留证据
– 备份日志(Web 服务器、数据库、应用程序日志)和磁盘映像。.
– 不要覆盖日志 — 保留时间戳以便进行取证分析。. - 根除
– 删除所有发现的后门、shell 和恶意脚本。.
– 从干净的来源重新安装 WordPress 核心、插件和主题。.
– 如果怀疑服务器级持久性,请从映像重建服务器。. - 恢复
– 从干净的备份中恢复(在被攻破之前进行的备份)。.
– 应用所有可用的安全补丁和加固措施。.
– 更改所有密码并轮换密钥和盐值。. - 恢复后
– 加强监控和日志记录。.
– 进行事后分析:攻击是如何发生的?哪些控制措施失效了?
– 教育团队并更新你的事件响应计划。. - 通知
– 通知利益相关者、托管服务提供商,以及在你的管辖区内如有需要,通知客户或监管机构。.
减少LFI风险的加固建议
即使在立即缓解之后,也要采取这些长期防御措施:
- 最小特权原则
– 确保文件和目录权限最小化。大多数WordPress文件应该可被web服务器读取,但不可写入,除了wp-content/上传需要写入访问权限的上传。.
– WordPress使用的数据库账户应仅具有必要的权限。. - PHP配置
– 禁用allow_url_include.
– 如果可能,禁用未使用的包装器。.
– 使用open_basedir以限制PHP对目录的访问。.
– 禁用执行,shell_exec,直通,系统if (shortcode_exists('su_box')) {. - 禁用内置的插件和主题编辑器
– 添加到wp-config.php:
定义('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);// 限制WP管理员的插件/主题安装/更新 - 安全上传
– 通过添加服务器规则防止直接执行 PHP 文件(请参见下面的示例 .htaccess/nginx 块)。wp-content/上传使用强大且独特的盐和密钥(在修复时轮换). - – 更改密钥将使活动身份验证 cookie 无效 — 在事件发生后很有用。
– 保持频繁的离线备份,并定期测试恢复。. - 定期备份并测试恢复
使用分阶段升级和代码审查. - – 对于正在积极开发的主题/插件,审查第三方代码或限制使用,直到安全状态得到验证。
当官方补丁尚不可用时,虚拟补丁(WAF)可以争取时间。以下是您可以在常见 WAF 系统中使用或作为 Web 服务器级控制的示例规则。请仔细调整和测试 — 不正确的规则可能会阻止合法流量。.
实用的 WAF 规则和服务器级缓解措施
重要的模式检测以阻止:.
任何包含的参数值
- 任何包含多个的参数
php://filter - 空字节尝试
../序列 - 尝试包含具有敏感文件名的文件(
%00 - 示例 ModSecurity/Core Rule Language (CRS) 风格规则:
wp-config.php,.env,/etc/passwd)
# 阻止常见 LFI 攻击签名
# 阻止常见的 LFI 攻击签名"
if ($request_uri ~* "(php://filter||\.\./){1,}") {
if ($request_uri ~* "(php://filter||\.\./){1,}") {
Apache .htaccess # 保护上传 - 防止 PHP 执行
# 另外,对于上传目录中的 .htaccess
更加细致的方法:仅阻止可疑请求,允许安全请求。在生产环境中应用之前先在预发布环境中测试规则。.
我们在 WP‑Firewall 的帮助方式(托管防火墙 + 缓解)
在 WP‑Firewall,我们的假设是:主题/插件中会发现漏洞。最快、最不干扰的保护是通过托管 WAF 进行虚拟补丁,实时阻止利用尝试,同时您计划并应用永久修复。.
我们提供和推荐的核心保护:
- 根据新披露自动更新的托管 WAF 规则——阻止利用有效载荷(php://filter、遍历序列、尝试获取
wp-config.php)在它们到达 PHP 之前。. - 恶意软件扫描和签名检测,以便在利用尝试后不久检测到 webshell 和可疑修改。.
- 文件完整性监控和每日扫描,以检测意外的文件更改。.
- 事件警报和支持,帮助分类发现并实施缓解措施。.
- 虚拟补丁能力,即使主题没有官方补丁,您也可以在降低风险的同时继续运营。.
我们建议将即时虚拟补丁与上述服务器加固步骤、轮换凭据和实施持续监控相结合。.
示例检测正则表达式和日志分析提示
监控 web 服务器日志,并对这些模式实施警报:
检测可能的 LFI 探测的正则表达式(不区分大小写):
(?i)(phpfilter|php://filter|(\.\./){2,}|(\.\.\\){2,}||wp-config\.php|/etc/passwd)
触发警报的日志条目:
- GET /wp-content/themes/learnify/… ?…=php://filter/convert.base64-encode/resource=../../../../wp-config.php
- 任何使用的请求
php://包装器 - 返回 200 的请求,带有 base64 编码字符串——HTML 页面中的 base64 通常是文件内容读取的指示。.
设置自动作业,每日扫描日志以查找这些模式并通知管理员。.
示例安全测试以检查漏洞(仅适用于网站所有者)
如果您是网站所有者并需要测试您的 Learnify 安装是否存在漏洞,请遵循此安全的只读检查程序。请勿尝试利用他人的网站。.
- 使用非破坏性
php://filter请求,仅仅尝试对已识别的文件进行 base64 编码(例如,,readme.html在主题目录中)。. - 构造类似于以下的请求:
GET /wp-content/themes/learnify/index.php?tpl=php://filter/convert.base64-encode/resource=inc/readme.html
- 如果响应包含一个解码为文件内容的 base64 字符串,则该主题中的功能易受包含模式滥用的影响。停止测试并进行缓解。.
重要: 仅在您拥有或运营的网站上进行测试。请勿在第三方网站上进行测试。.
修复决策树:更新 vs 临时缓解 vs 移除
- 如果有官方修补的主题可用:立即更新,然后遵循验证检查清单(文件完整性扫描,密码轮换)。.
- 如果没有官方补丁:
- 从活动使用中移除该主题(切换到默认主题)。.
- 应用 WAF 规则和服务器限制以阻止利用尝试。.
- 与主题供应商合作以确定时间表,或考虑用维护的替代主题替换该主题。.
- 如果由于业务原因无法移除该主题:
- 将网站置于严格的访问控制(IP 白名单)下以进行管理员访问。.
- 应用严格的 WAF 规则,仅允许最小功能。.
- 安排专门的监控和频繁的完整性扫描。.
修复后:验证和监控
应用修复后,验证您的环境:
- 重新运行自动扫描器。.
- 验证是否存在意外的管理员帐户或计划任务。.
- 检查是否有意外的网络连接或DNS更改。.
- 检查备份以获取早期妥协的指示(确保备份是干净的)。.
- 在修复后继续进行至少30天的高度监控。.
常见问题解答
- 问:LFI会导致远程代码执行吗?
- 答:LFI本身是一种文件包含/读取漏洞。如果攻击者能够包含他们可以控制的文件(例如,上传的PHP文件)或将LFI与其他错误配置(可写目录、危险的包装器或恶意插件)链接起来,则可能会发生RCE。.
- 问:我的网站使用Learnify的子主题——我会受到影响吗?
- 答:可能会。子主题从父主题继承核心代码。如果父主题代码中存在漏洞逻辑,并且父主题是Learnify ≤1.15.0,则您可能会受到影响。检查父主题版本并应用缓解措施。.
- 问:我修补了主题——我还需要更换凭据吗?
- 答:是的。如果网站有任何暴露的可能性,请更换网站上使用的密钥、数据库密码和API令牌。修补可以防止未来的利用,但不会消除之前发生的妥协。.
- 问:我如何能在未来被通知类似的漏洞?
- 答:订阅可信的安全信息源,并保持您的WAF签名和恶意软件扫描器更新。为已安装的主题和插件实施自动漏洞监控。.
今天开始保护您的网站 — 提供免费计划
如果您希望在执行上述技术修复步骤时获得直接、即时的保护层,我们的托管免费层为WordPress网站提供基本防御。免费计划包括带有虚拟修补的托管防火墙、Web应用防火墙(WAF)、恶意软件扫描、无限带宽保护以及对OWASP前10大风险的缓解。注册简单快速——您可以在几分钟内开始阻止攻击尝试。.
升级选项:我们还提供负担得起的付费计划,增加自动恶意软件删除、IP黑名单/白名单、每月安全报告以及针对企业和机构的高级托管服务。如果您运行多个网站或需要主动修复支持,我们的高级计划提供完整的托管安全方案。.
WP‑Firewall安全专家的最终想法
这次Learnify LFI披露提醒我们,任何主题或插件都可能引入关键弱点。应对此类事件最重要的方面是速度和完整性:
- 应用缓解措施的速度(虚拟补丁和临时移除)。.
- 调查的完整性(攻击者是否获取了任何东西?访问了什么?)。.
- 长期改进(加固、监控、最小权限)。.
如果您需要一个可以管理虚拟补丁并为您的 WordPress 系列提供持续检测和响应的合作伙伴,WP‑Firewall 的托管服务正是为此而设计——实时保护流量,扫描后利用指标,并帮助您以最小的业务中断进行恢复。.
如果您管理多个 WordPress 网站,现在是审查您的主题库存、确认版本并应用上述步骤的时机。如果您需要帮助来分类特定指标,我们发布详细的修复指南,并为需要加速协助的客户提供支持。保持警惕,将任何 LFI 探测视为潜在的严重问题——攻击者会自动化这些检查,易受攻击的网站面临真正的风险。.
附录 A:快速检查清单(复制/粘贴)
- 确认是否安装了 Learnify ≤ 1.15.0。.
- 切换到不同的主题或停用 Learnify。.
- 应用 WAF 规则以阻止 php://filter 和路径遍历尝试。.
- 扫描 WebShell 和未经授权的文件修改。.
- 轮换数据库凭据和 WP 盐。.
- 如果检测到妥协,从干净的备份中恢复。.
- 实施文件权限加固。.
- 启用文件完整性监控和警报。.
- 在修复后监控日志 30 天。.
附录 B:其他资源和参考
- CVE-2025-60085(公开咨询参考)
- PHP 加固最佳实践
- WordPress 安全手册(站点管理员指南)
- WAF 调优和规则测试指南
(如果您希望获得帮助以实施特定的 WAF 规则或在您的环境中运行安全漏洞扫描,我们的 WP‑Firewall 安全团队可以提供协助。我们提供适合各种规模网站的自助服务和托管选项。)
感谢您认真对待安全。如果您对上述步骤有疑问或希望获得针对您网站的具体指导,请联系 WP‑Firewall 支持或注册免费计划以获得即时的托管保护: https://my.wp-firewall.com/buy/wp-firewall-free-plan/
