My Calendar <= 3.8.7 - Unauthenticated Privilege Escalation to 'mcs' Parameter via Reflected Shortcode Injection into 'above' Attribute
What fixes it
No source in this snapshot names a fixed version.
Description
The My Calendar – Accessible Event Manager plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 3.8.7. The public mcs GET parameter is reflected into post content unsanitized before WordPress core's do_shortcode filter runs, allowing an unauthenticated attacker to inject a nested [my_calendar above=...] shortcode; mc_generate_calendar_nav() then splits the above attribute on commas and dispatches each element via call_user_func() with no authentication, authorization, or callable allowlist check. This makes it possible for unauthenticated attackers to invoke arbitrary loaded PHP functions, enabling a call chain in which the shortcode $params array is passed to edit_user() — which PHP coerces to integer 1 as the $user_id argument — overwriting the credentials of the initial Administrator account (user ID 1) and granting the attacker full wp-admin access. Exploitation is trivially reachable via the plugin's auto-generated /my-calendar/ page, which is publicly accessible by default upon plugin activation.
Text from CVE List
Affected versions 5
- My Calendar – Accessible Event Manageraffected: all versions through 3.4.24CVE List
- My Calendar – Accessible Event Manageraffected: 3.5 through 3.5.21CVE List
- My Calendar – Accessible Event Manageraffected: 3.6 through 3.6.17CVE List
- My Calendar – Accessible Event Manageraffected: 3.7 through 3.7.17CVE List
- My Calendar – Accessible Event Manageraffected: 3.8 through 3.8.7CVE List
References 8
- wordfence.com/threat-intel/vulnerabilities/id/e8aa6ee7-525e-4458-9f5b-1e729afe448c?source=cveReferencevia CVE List
- plugins.trac.wordpress.org/browser/my-calendar/tags/3.8.6/my-calendar-navigation.php#L248Referencevia CVE List
- plugins.trac.wordpress.org/browser/my-calendar/tags/3.8.6/my-calendar-navigation.php#L260Referencevia CVE List
- plugins.trac.wordpress.org/browser/my-calendar/tags/3.8.6/my-calendar-search.php#L221Referencevia CVE List
- plugins.trac.wordpress.org/browser/my-calendar/tags/3.8.6/my-calendar-search.php#L170Referencevia CVE List
- plugins.trac.wordpress.org/browser/my-calendar/tags/3.8.6/my-calendar-shortcodes.php#L102Referencevia CVE List
- plugins.trac.wordpress.org/browser/my-calendar/tags/3.8.6/my-calendar-output.php#L1622Referencevia CVE List
- plugins.trac.wordpress.org/changeset?reponame=&old=3746389%40my-calendar&new=3746389%40my-calendarReferencevia CVE List