CVE-2025-11174Document Library Lite是WordPress平台上广泛使用的一款文档管理插件,允许用户创建和管理文档库。在该插件1.1.6及之前的所有版本中,存在一个严重的安全漏洞,由于不当的授权检查缺失,导致未认证攻击者可以访问敏感信息。该漏洞源于插件暴露了一个未认证的AJAX端点dll_load_posts,该端点直接返回数据库中的文档数据JSON表格,但未执行任何nonce令牌验证或用户权限检查。更为严重的是,端点接受攻击者可控的args参数,其中status选项明确允许draft(草稿)、pending(待审)、future(定时发布)和any(任意)等值,这意味着攻击者可以通过构造恶意请求,指定status参数为draft或其他未发布状态,从而绕过正常的访问控制机制,获取未公开的文档标题和内容。这种信息泄露可能导致商业机密外泄、敏感文档暴露等严重后果。由于该漏洞无需认证即可利用,且攻击复杂度低,因此对使用该插件的网站构成较大威胁。
该漏洞的技术根源在于WordPress插件的AJAX处理逻辑缺乏适当的安全验证机制。具体来说,问题出在插件的Ajax_Handler.php文件中(第23行和第32行附近),该文件处理dll_load_posts AJAX动作时存在以下缺陷:首先,插件使用wp_ajax_{action}或wp_ajax_nopriv_{action}钩子注册了dll_load_posts动作,但仅使用了nopriv钩子,这意味着未登录用户也可以访问该端点。其次,在处理请求时,代码直接接受并处理客户端提交的args数组参数,而没有进行任何权限检查或nonce验证。关键的漏洞点在于status参数的处理逻辑:当用户指定status为draft、pending、future或any时,系统会从WordPress数据库中查询对应状态的文档记录,而正常情况下这些未发布的内容只应对具有相应权限的登录用户可见。攻击者只需要构造一个POST请求到wp-admin/admin-ajax.php端点,设置action为dll_load_posts,并在args数组中指定status为draft,即可获取所有草稿状态的文档信息。由于WordPress的AJAX API设计特性,这种未经适当保护的端点可以直接被外部访问。