CVE-2017-17951

9.8 CRITICAL

📋 TL;DR

This vulnerability allows attackers to execute arbitrary SQL commands through the shopping-cart.php script's cusid parameter in PHP Multivendor Ecommerce. It affects websites running this specific e-commerce platform, potentially compromising database integrity and exposing sensitive customer data. Attackers can exploit this without authentication to manipulate or extract database contents.

💻 Affected Systems

Products:
  • PHP Multivendor Ecommerce
Versions: All versions prior to patched release
Operating Systems: Any OS running PHP
Default Config Vulnerable: ⚠️ Yes
Notes: Affects all installations using the vulnerable shopping-cart.php script. No special configuration required for exploitation.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete database compromise including theft of customer PII, payment information, administrative credentials, and potential remote code execution leading to full system takeover.

🟠

Likely Case

Data exfiltration of customer information, order details, and potentially administrative credentials, leading to further system compromise.

🟢

If Mitigated

Limited impact with proper input validation and parameterized queries preventing SQL injection, though system may still be vulnerable to other attacks.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Simple SQL injection via GET/POST parameter. Public proof-of-concept available in GitHub repository.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Check vendor for latest patched version

Vendor Advisory: https://www.phpscriptsmall.com/

Restart Required: No

Instructions:

1. Contact PHP Scripts Mall for patched version. 2. Replace vulnerable shopping-cart.php file. 3. Implement parameterized queries in all database interactions. 4. Validate and sanitize all user inputs.

🔧 Temporary Workarounds

Input Validation Filter

all

Add input validation to filter cusid parameter to only accept expected values

// Add to shopping-cart.php before processing cusid:
if (!is_numeric($_GET['cusid']) || $_GET['cusid'] <= 0) {
    die('Invalid customer ID');
}

Web Application Firewall Rule

linux

Block SQL injection patterns targeting shopping-cart.php

ModSecurity rule: SecRule REQUEST_URI "@contains shopping-cart.php" "chain,id:1001,phase:2,deny,status:403,msg:'SQLi attempt detected'"
SecRule ARGS:cusid "@detectSQLi"

🧯 If You Can't Patch

  • Implement strict input validation for all user-supplied parameters
  • Deploy web application firewall with SQL injection protection rules

🔍 How to Verify

Check if Vulnerable:

Test shopping-cart.php with SQL injection payload: shopping-cart.php?cusid=1' OR '1'='1

Check Version:

Check PHP Multivendor Ecommerce version in admin panel or configuration files

Verify Fix Applied:

Attempt SQL injection test and verify proper error handling or rejection

📡 Detection & Monitoring

Log Indicators:

  • Multiple failed SQL queries from single IP
  • Unusual database error messages in logs
  • Requests to shopping-cart.php with SQL keywords in parameters

Network Indicators:

  • Unusual database connection patterns
  • Large data exfiltration from database server

SIEM Query:

source="web_logs" AND uri="*shopping-cart.php*" AND (param="*cusid*" AND value="*' OR*" OR value="*UNION*" OR value="*SELECT*" OR value="*--*" OR value="*;*" OR value="*/*")

🔗 References

📤 Share & Export