CLP-01-014 Persistent XSS via Direct Login from Bookmarklet (Critical) Caused by missing output filtering, an attacker can abuse the Bookmarklet in combination with the creation of a new card of type ?Direct Login? to persistently infect a Clipperz account and get full and transparent access to all data stored in the account including passwords, keystrokes and other sensitive data. Steps to Reproduce: Navigate to a maliciously prepared Website Use the Clipperz Bookmarklet Copy the generated JSON to create a Card Navigate to the Clipperz application Create a new card of type ?Direct Login? Paste the content and save (First XSS is triggerd) Create the card (Second XSS is triggered) Anytime the affected user navigates to the malicious card, the injected JavaScript is executed. This thereby effectively ?trojanizes? the entire Clipperz account and gives an attacker access to any of the stored cards and related passwords in plaintext. Example Markup for malicious page:
Resulting JSON: {"page": {"title": ""}, "form": {"attributes": {"action": "http://attacked/", "method": null}, "inputs": [{"type": "text", "name": "username", "value": "root"}, {"type": "password", "name": "password", "value": ""}, {"type": "text", "name": "\">", "value": "bla"}]}, "version": "0.2.3"} Affected Markup in Clipperz application: "><img src=x onerror=alert(domain)>
">
It is highly recommended to escape and filter any output and consider the pages to pull login data from to be an adversary as well. Especially the content of the name field and other attributes of form elements should not be considered trusted as they can contain malicious data - similar to the form element?s value. All special HTML characters need to be converted into their corresponding HTML entities before displaying them to the user.