[MajorSecurity Advisory #54]xt:Commerce - Cross Site Scripting and Session Fixation Issues
Product: xt:Commerce
Security-Risk: moderated
Remote-Exploit: yes
Vendor-URL: http://www.xtcommerce-shop.com/
Vendor-Status: informed
Advisory-Status: published
Discovered by: David Vieira-Kurz
http://www.majorsecurity.de
xt:Commerce 3.04 and prior
http://www.majorsecurity.de/index_2.php?major_rls=major_rls54
xt:Commerce is one of the leading webshop systems based on the eCommerce Engine.
1.1 Input passed directly to the "keywords" parameter in "advanced_search_result.php" is not properly
sanitised before being returned to the user.
This can be exploited to execute arbitrary HTML and script code in a user's browser session in
context of an affected site.
/advanced_search_result.php?keywords=/>"<script>alert(15)</script>&x=1&y=1
Edit the source code to ensure that input is properly sanitised.
You should work with "htmlspecialchars()" or "htmlentities()" php-function to ensure that html tags
and javascript code are not going to be executed.
Example:
$keywords = htmlentities($_POST['keywords']);
$keywords = htmlspecialchars($_GET('keywords'));
?>
The "PHPSESSID" parameter can be set to a malicious and arbitrary value.
2.1 Description:
In a session fixation attack, the attacker fixes the user's session ID before the user even logs into
the target server.
After a user's session ID has been fixed, the attacker will wait for them to login.
Once the user does so, the attacker uses the predefined session ID value to assume their online
identity.
https://localhost/xtcommerce304/shopping_cart.php/XTCsid/15031988
if ( !isset( $_SESSION['SERVER_GENERATED_SID'] ) ) {
session_destroy(); // destroy all data in session
}
session_regenerate_id(); // generate a new session identifier
$_SESSION['SERVER_GENERATED_SID'] = true;
Edit the source code to ensure that input is properly sanitised.
You should work with "htmlspecialchars()" or "htmlentities()" php-function to ensure that html tags
and javascript code are not going to be executed.
Example:
$password = htmlentities($_POST['pass']);
$search = htmlspecialchars($_GET['search']);
?>
MajorSecurity is a German penetrationtesting and security research company which focuses
on web application security. We offer professional penetrationtestings and reliable proof
of concepts.
You will find more Information about MajorSecurity at
http://www.majorsecurity.de/