【WordPress专题06】CVE-2025-13342选项修改导致的管理员用户注册漏洞POC及漏洞分析

admin 2025-12-30 01:24:12 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了WordPress插件FrontendAdmin的CVE-2025-13342漏洞,指出因缺乏权限检查导致未授权用户可修改关键配置。攻击者通过构造请求修改users_can_register和default_role,实现前台注册管理员账户。建议升级至3.28.21及以上版本修复漏洞,防范权限提升风险。 综合评分: 88 文章分类: 漏洞分析,漏洞POC,WEB安全,代码审计


cover_image

【WordPress专题06】CVE-2025-13342 选项修改导致的管理员用户注册漏洞POC及漏洞分析

原创

a1batr0ss

天翁安全

2025年12月29日 09:00 江苏

免责声明:本公众号所发布的全部内容,包括但不限于技术文章、POC脚本、漏洞利用工具及相关测试环境,均仅限于合法的网络安全学习、研究和教学用途。所有人在使用上述内容时,应严格遵守中华人民共和国相关法律法规以及道德伦理要求。未经明确的官方书面授权,严禁将公众号内的任何内容用于未经授权的渗透测试、漏洞利用或攻击行为。 所有人仅可在自己合法拥有或管理的系统环境中进行本地漏洞复现与安全测试,或用于具有明确授权的合法渗透测试项目。所有人不得以任何形式利用公众号内提供的内容从事非法、侵权或其他不当活动。 如因违反上述规定或不当使用本公众号提供的任何内容,造成的一切法律责任、经济损失、纠纷及其他任何形式的不利后果,均由相关成员自行承担,与本公众号无任何关联。

不错过最新的漏洞POC

为保证您可以在第一时间接收到本公众号分享的漏洞复现及POC信息,建议您在公众号“天翁安全”主页界面将“天翁安全”设为星标

专题介绍

本文为【WordPress专题】的第六篇文章,本专题详细介绍对WordPress框架中公开Or未公开漏洞的漏洞挖掘代码审计分析POC构造

以小见大,通过个性的漏洞总结WordPress中漏洞的共性,实现对WordPress漏洞的全面掌握。

感兴趣的师傅们可以查看前四篇文章进行共同学习

  • 【WordPress专题01】前台管理员账户创建漏洞(CVE-2025-4334)漏洞分析及POC
  • 【WordPress专题02】CVE-2025-2563漏洞分析及POC
  • 【WordPress专题03】遇到不按规范编写的插件如何进行代码审计?
  • 【WordPress专题04】通过漏洞介绍构造CVE-2025-11457的POC
  • 【WordPress专题05】CVE-2025-11499前台文件上传漏洞 全网首发POC及漏洞分析

有意思的漏洞

最近在逛Wordfence的时候发现了一个很有意思的漏洞:

漏洞描述:DynamiApps 的 WordPress 插件 Frontend Admin 在所有版本(包括 3.28.20 及之前版本)中存在可被利用的漏洞,允许未授权修改任意 WordPress 选项。该问题源于 ActionOptions::run() 保存处理函数中缺乏足够的权限检查和输入验证。这使得未经过身份验证的攻击者可以通过向公开的前端表单提交精心构造的数据,修改关键的 WordPress 选项,例如 users_can_register、default_role 和 admin_email。

第一次看见这种未授权修改任意WordPress 选项的漏洞,第一反应是修改选项能有什么用呢?后来研究一下发现有一种方法能将“未授权修改任意WordPress 选项”的危害放到最大。

我们知道有些WordPress站不会开启用户注册,就算开启注册,注册完成也只是Subscriber(订阅者)身份。如下图所示,这些选项都是在后台可以设置的。

我们如果能够修改这两个选项,就可以实现任意管理员用户注册漏洞一样的危害。

接着去了解一下这个漏洞的使用数量及范围:总下载量80万+,活跃安装数量1万+。

Fofa上也能搜到1万多的结果

注:本处所示内容仅用于证明插件使用数量之目的,不得用于任何违法或不当行为。若违反相关法律法规,由行为人自行承担全部法律责任。

了解了这个漏洞危害,话不多说,我们正式开始漏洞分析!

漏洞分析

首先我们提取出漏洞描述中最有用的一个信息:

该问题源于 ActionOptions::run() 保存处理函数中缺乏足够的权限检查和输入验证。

对应找到 ActionOptions类的 run方法

往前跟踪发现 acf-frontend-form-element/main/frontend/forms/classes/submit.php中 submit_form函数调用了 run方法

再往前跟一下这个 submit_form函数,发现被 check_submit_form函数调用

全局搜索下 check_submit_form函数,发现被 wp_ajax_nopriv_frontend_admin/form_submit钩子触发。

友情回顾:【WordPress专题01】

也就是我们可以通过 /wp-admin/admin-ajax.php配合 "action":"frontend_admin/form_submit"参数来触发这个钩子。

大致的触发链熟悉了,我们开始研究确定一下利用细节。

wp_ajax_nopriv_frontend_admin/form_submit钩子触发之后,一路跟着链可以来到 submit_form函数中调用的 create_record函数。

研究了一下 create_record函数,这个函数主要的作用是读取提交的 $_POST['acff']中每一个字段

将它们按规则写入 $form['record']

这里注意一点就是其实你想传入的参数是在 $form['record']['fields']

写入完成后,会遍历当前表单配置的每一个action,其中会遍历到我们目标的 ActionOptions类并执行其 run方法

run方法中遍历了我们刚才写入的 $form['record'],本质上就是 $_POST['acff']

所以我们构造POST参数时要构造 $_POST['acff'][admin_options][需要改变的选项]即可,我们构造的需要改变的选项(如users_can_register)会赋值给 $key参数并传入 update_option函数。

首先注意这个 update_option函数已经是WordPress的自带函数了,是具有共性的。

第一次遇到,研究一下 update_option函数。两个参数第一个参数是选项的名称,第二个参数是选项的值。

最后是通过 update语句对数据库进行更新的。

到这里就非常清晰了,我们构造 $_POST['acff'][admin_options][users_can_register]的值为1、构造 $_POST['acff'][admin_options][default_role]的值为administrator即可。

最后还有一个小点,是在一开始的 check_submit_form函数中关于校验 nonce和 form_id的。

还是和之前一样去表格界面前端取即可。

最终我们构造POC,用burpsuite去执行

执行完成后,我们去注册界面注册一个demo用户

发现注册完成后demo为管理员权限

漏洞修复

漏洞修复就很直接,直接添加了一些不可修改的选项。大家使用 FrontendAdminbyDynamiApps插件的将插件升级到3.28.21及以上版本即可。

知识星球

“CVE-2025-13342的POC、CVE-2025-13342代码审计环境、CVE-2025-13342代码审计与详细漏洞分析现已全部发布至知识星球,大家可在知识星球内获取,自行搭建环境、学习复现、代码审计。

星球加入方式见文章底部二维码,欢迎加入交流和学习


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:天翁安全 a1batr0ss《【WordPress专题06】CVE-2025-13342 选项修改导致的管理员用户注册漏洞POC及漏洞分析》

评论:0   参与:  0