Advanced Custom Fields: Extended <= 0.9.2.5 - 未经验证的权限提升 via Validation Bypass to '_acf_post_id' Parameter 此严重安全漏洞(CVSS 9.8)影响流行的 WordPress 插件 Advanced Custom Fields: Extended(ACF Extended)自版本 0.9.2.5 起的所有版本。
尽管已在版本 0.9.2.6 中修复,但该漏洞的工作原理如下:
问题函数: 漏洞的根源在于 after_validate_save_post() 函数对名为 _acf_post_id 的 POST 参数不加验证地信任。该插件未对此参数进行任何验证或身份验证过程。
验证绕过: 通过操纵 _acf_post_id 参数,攻击者使函数静默地选择一条清理分支,忽略所有不带 "acfe:" 前缀的验证错误。这将禁用两个关键安全检查:
由 acfe_field_user_roles::validate_front_value() 添加的角色权限列表验证错误。
由 acfe_module_form_action_user::validate_action() 添加的管理员权限保护错误。
未经授权的管理员创建: 绕过这些检查后,wp_insert_user() 函数会使用攻击者提供的 "administrator" 角色参数执行。结果,一个未经身份验证的用户在系统上创建了新的管理员账户,这与该插件的预期用途相悖。
利用代码的逻辑流程 以下 Python 脚本是一个概念验证,展示了如何利用此漏洞。该代码通过自动化所有必要步骤来工作。