xt:Commerce - Cross Site Scripting and Session Fixation Issues

2009.02.06
Risk: Medium
Local: No
Remote: Yes
CWE: CWE-79


CVSS Base Score: 4.3/10
Impact Subscore: 2.9/10
Exploitability Subscore: 8.6/10
Exploit range: Remote
Attack complexity: Medium
Authentication: No required
Confidentiality impact: None
Integrity impact: Partial
Availability impact: None

[MajorSecurity Advisory #54]xt:Commerce - Cross Site Scripting and Session Fixation Issues Details ======= Product: xt:Commerce Security-Risk: moderated Remote-Exploit: yes Vendor-URL: http://www.xtcommerce-shop.com/ Vendor-Status: informed Advisory-Status: published Credits ============ Discovered by: David Vieira-Kurz http://www.majorsecurity.de Affected Products: ---------------------------- xt:Commerce 3.04 and prior Original Advisory: ============ http://www.majorsecurity.de/index_2.php?major_rls=major_rls54 Introduction ============ xt:Commerce is one of the leading webshop systems based on the eCommerce Engine. More Details ============ 1. Cross Site Scripting: ---------------------- 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. 1.2 PoC: ============ /advanced_search_result.php?keywords=/>"<script>alert(15)</script>&x=1&y =1 1.3 Workaround ============= 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')); ?> 2. session fixation: --------------------- 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. 2.2 PoC: ============ https://localhost/xtcommerce304/shopping_cart.php/XTCsid/15031988 2.3 Workaround: ============ 1. Do not accept session identifiers from GET / POST variables. 2.Regenerate SID on each request. 3. Accept only server generated SID: One way to improve security is to not accept session identifiers not generated by server. 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; Solution ============= 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 ================ 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/

References:

http://www.securityfocus.com/bid/31313
http://www.securityfocus.com/archive/1/archive/1/496583/100/0/threaded
http://www.majorsecurity.de/index_2.php?major_rls=major_rls54


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2022, cxsecurity.com

 

Back to Top