Critical Persistent XSS 0day in WordPress

## Metadata
- Author: [[Marc-Alexandre Montpas]]
- Full Title: Critical Persistent XSS 0day in WordPress
- Category: #articles
- Summary: Yes, you’ve read it right: a critical, unpatched XSS 0day in WordPress’ comment mechanisms was disclosed earlier today by Klikki Oy. If your WordPress site allows users to post comments via the WordPress commenting system, you’re at risk.
- URL: https://blog.sucuri.net/2015/04/critical-persistent-xss-0day-in-wordpress.html
**\*Update 2015-04-27\*:** A patch has been released and made [available by the WordPress Core Team in version 4.2.1](https://wordpress.org/news/2015/04/wordpress-4-2-1/) – Please update immediately.
*Yes, you’ve read it right: a critical, unpatched XSS 0day in WordPress’ comment mechanisms was [disclosed earlier today by Klikki Oy](http://klikki.fi/adv/wordpress2.html).*
###### Who’s Affected?
If your WordPress site allows users to post comments via the WordPress commenting system, you’re at risk. An attacker could leverage a bug in the way comments are stored in the site’s database to insert malicious scripts on your site, thus potentially allowing them to infect your visitors with malware, inject SEO spam or even insert backdoor in the website’s code if the code runs when in a logged-in administrator browser.
You should definitely disable comments on your site until a patch is made available or leverage a [WAF](https://sucuri.net/website-firewall/) to protect your site and customers.
###### Technical Details
This vulnerability requires an attacker to send a comment long enough to force the backend MySQL database to truncate what is stored.
WordPress Database Schema
As you can see from the above schema, the comments texts are stored in the **comment\_content** column which is a TEXT column, meaning a comment can only contain a maximum of 65535 bytes of data.
A typical exploit would look like the following:
```
<a href='x onclick=alert(1) AAAAAAAAAAAAAA..(multiplied so our comment contains more than 65k bytes)'>test</a>
```
Once taken back from the database would look like this:
```
<p><a href='x onclick=alert(1) AAAAAAA</p>
```
Some of you might have noticed that the resulting HTML tag isn’t complete, but this isn’t a problem for most modern browsers as most of them will simply patch it up automatically:
[](https://blog.sucuri.net/wp-content/uploads/2015/04/Screen-Shot-2015-04-27-at-10.43.34-AM.png)
This bug then allows anyone to insert any HTML tag attributes to his hyperlink, including Javascript event handlers.
###### What You Can Do
There’s a few thing you can do to prevent getting hacked before there’s an official patch being released:
* You can **disable comments** on your site.
* Leverage a **Web Application Firewall** to filter good requests from exploit attempts.
Hopefully the WordPress team will release a patch soon., Critical Persistent XSS 0day in WordPress, Marc-Alexandre Montpas, 01gnmcz4ht2tbptf5cx18qvbe5.