Wordpress InfiniteWP Client插件认证绕过漏洞
字数 1172 2025-08-26 22:11:56
WordPress InfiniteWP Client插件认证绕过漏洞分析
漏洞概述
InfiniteWP是一款WordPress站点管理插件,通过在server端安装admin panel插件来管理安装了client插件的客户端站点。该插件存在一个严重的认证绕过漏洞(CVSS评分9.8),允许攻击者在满足以下条件时直接获取管理员权限:
- 知道目标站点的管理员用户名
- 目标站点安装的InfiniteWP Client插件版本低于1.9.4.5
漏洞影响
成功利用此漏洞的攻击者可以绕过认证直接登录WordPress后台,获得相当于管理员级别的权限。
漏洞分析
漏洞位置
漏洞存在于插件主文件wp-content/plugins/iwp-client/init.php中的iwp_mmb_parse_request()和iwp_mmb_set_request()函数。
认证流程缺陷
-
认证绕过逻辑:
- 在
iwp_mmb_parse_request()函数中,当$action值为add_site或readd_site时,函数会直接返回,跳过后续的authenticate_message()认证检查 - 开发者本意是这两个操作通过SSL签名进行校验,因此不需要额外认证
- 但实际实现中,程序会继续执行到
iwp_mmb_set_request()函数
- 在
-
不安全的cookie设置:
iwp_mmb_set_request()函数检查是否存在username参数且用户未登录- 如果满足条件,直接根据提供的用户名设置认证cookie,没有任何密码验证
- 关键代码如下:
if(isset($params['username']) && !is_user_logged_in()){ $user = get_user_by('login', $params['username']); // 设置认证cookie if($isHTTPS){ wp_set_auth_cookie($user->ID); }else{ wp_set_auth_cookie($user->ID, false, false); wp_set_auth_cookie($user->ID, false, true); } }
漏洞利用条件
攻击者需要:
- 知道目标站点的管理员用户名
- 构造一个包含
username参数和特定action参数(add_site或readd_site)的请求
补丁分析
补丁在设置cookie前增加了对$action的硬编码检查,确保只有在特定操作时才允许设置cookie。
修复建议
- 立即升级InfiniteWP Client插件到1.9.4.5或更高版本
- 如果无法立即升级,可临时禁用该插件
漏洞利用示例(仅供研究使用)
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: vulnerable-site.com
Content-Type: application/x-www-form-urlencoded
action=add_site&username=admin
成功利用后,响应中会包含管理员会话cookie,可直接用于访问后台。
总结
此漏洞源于认证逻辑的分裂:
- 开发者认为
add_site和readd_site操作已经通过SSL签名验证,不需要额外认证 - 但实际实现中,程序会继续执行到cookie设置部分,而该部分仅检查用户名就设置认证cookie
- 模块化设计导致两部分安全逻辑不一致,形成认证绕过