CVE-2025-11758All 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等字段实现任意操作。