
CVE-2023-3460

超级管理员、管理员、编辑、作者、贡献者 等。那么我们如何获得管理员权限呢?首先,让我们看看 Ultimate Member 插件的工作方式。首先,你需要配置插件以使其正常运行,因此我们需要在 页面 板块中创建几个页面,然后将这些页面链接到 Ultimate Member > 设置,之后我们可以创建新角色,或者直接使用 Ultimate Member 提供的默认角色。
订阅者。查看 MySQL 中的 wp_usermeta 表,可以看到 wp_capabilities 的值被设置为一个序列化数组,其中定义了我们的角色——在本例中是 订阅者。
wp_capabilities 的值呢?我们可以在注册时,将 wp_capabilities 作为一个参数传入 POST 请求中,如下所示:
is_metakey_banned 的函数,它会检查几个值,例如 "cap_key"、"wp_capabilities"、"wp_user_level"、"user_activation_key" 等。我们感兴趣的是 wp_capabilities,但如果它在请求体中出现,就会触发 break,从而阻止我们更改角色。
à, è, ì, ò, ù, À, È, Ì, Ò, Ù。那么,如果我们在请求体中使用这些字符,例如 wp_càpabilities=administrator,会发生什么?它不会在 class-user.php 的第 182 行触发 break,从而绕过 is_metakey_banned 函数。


a:1:{s:13:"administrator";b:1;}。好,现在让我们尝试将这个值直接传递给我们的参数。
wp_capabilities 的值,但这并不是我们期望的结果。
wp_capabilities,它是一个序列化数组——这才是我们想要的。WordPress 有自己的序列化机制,所以我们可以将值作为数组传递,然后让 WordPress 处理剩下的部分。因此,我们的 payload 如下:wp_càpabilities[administrator]=1。
wp_capabilities 的值已更改为 a:1:{s:13:"administrator";s:1:"1";},现在可以以管理员身份登录了。
