☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2019-25496

CVE-2019-25496 SQL Injection in Oscommerce
📅 PUBLISHED: 2026-02-27 17:23 UTC 🔄 UPDATED: 2026-09-23 20:12 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.33%
👁️
0.33% probability
8.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
8.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2019-25496 is a critical SQL injection vulnerability in osCommerce 2.3.4.1, an open-source e-commerce platform. The flaw resides in the product_info.php script, where the products_id parameter is directly concatenated into SQL queries without proper sanitization or parameterization. An unauthenticated attacker can inject malicious SQL code via the products_id parameter, enabling boolean-based blind SQL injection to extract sensitive data such as user credentials, customer information, and database structure. The vulnerability has a CVSS score of 0.0 (placeholder) but is assessed as high severity due to the potential for data exfiltration. No official patch exists, and the vendor has not released a fix, leaving all installations of osCommerce 2.3.4.1 vulnerable. This report provides a comprehensive analysis, detection rules, and mitigation strategies.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
  • Base Score: 7.5 (High)
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: High
  • Integrity Impact: None
  • Availability Impact: None
  • Threat Level: High – Unauthenticated remote exploitation with direct data extraction capability.

Deep Dive & Mechanics

The vulnerability exists in the product_info.php file of osCommerce 2.3.4.1. The products_id parameter is retrieved from the HTTP request and used directly in a SQL query without any sanitization or prepared statements. The vulnerable code pattern is:

$product_id = $_GET['products_id'];
$product_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . $product_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");

An attacker can manipulate the products_id parameter to inject SQL code. For example, a boolean-based blind injection payload like:

1' AND (SELECT 1 FROM (SELECT COUNT(*), CONCAT((SELECT IFNULL(CAST(admin_user_name AS CHAR),0x20) FROM administrators LIMIT 0,1), FLOOR(RAND(0)*2)) x FROM information_schema.tables GROUP BY x) a) AND '1'='1

This payload modifies the query to return different responses based on the truth of a condition, allowing the attacker to extract data character by character. The lack of error handling or output filtering makes blind injection feasible.

Vulnerable vs. Patched Code

Vulnerable Code (osCommerce 2.3.4.1):

$product_id = $_GET['products_id'];
$product_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . $product_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");

Patched Code (Recommended Fix):

$product_id = (int)$_GET['products_id'];
$product_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$product_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");

The fix casts $product_id to an integer, preventing any non-numeric input from being used in the query. Alternatively, using prepared statements with parameterized queries is the most robust solution.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Target running osCommerce 2.3.4.1
  • Network access to the web server

Exploitation Steps:

  1. Identify the vulnerable endpoint: http://target/catalog/product_info.php?products_id=1
  2. Test for SQL injection: Append a single quote to the products_id parameter: http://target/catalog/product_info.php?products_id=1'
    • If an error or different response occurs, the parameter is injectable.
  3. Boolean-based blind injection: Use a tool like sqlmap or manual payloads to extract data.

Example sqlmap command:

sqlmap -u "http://target/catalog/product_info.php?products_id=1" --batch --dbs

Manual payload for extracting admin username:

1' AND (SELECT 1 FROM (SELECT COUNT(*), CONCAT((SELECT IFNULL(CAST(admin_user_name AS CHAR),0x20) FROM administrators LIMIT 0,1), FLOOR(RAND(0)*2)) x FROM information_schema.tables GROUP BY x) a) AND '1'='1

Expected behavior: The page loads normally if the condition is true, or shows a different response (e.g., blank or error) if false.

Blue Team (Defense & Detection)

Detection Steps:

  1. Monitor web server logs for unusual products_id values containing SQL keywords (e.g., AND, OR, SELECT, UNION, --).
  2. Deploy a Web Application Firewall (WAF) with rules to block SQL injection patterns.
  3. Implement input validation on the server side to ensure products_id is numeric.
  4. Use parameterized queries or prepared statements in all database interactions.

Honeypot suggestion: Create a fake product_info.php endpoint that logs all requests and alerts on suspicious patterns.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP GET requests to /catalog/product_info.php with products_id containing SQL keywords or special characters.
    • Repeated requests with incremental or boolean-based payloads (e.g., 1' AND '1'='1, 1' AND '1'='2).
  • File IOCs:
    • Modified product_info.php file (if attacker uploads a backdoor).
    • Suspicious entries in web server access logs (e.g., products_id=1' UNION SELECT...).
  • Database IOCs:
    • Unauthorized queries to information_schema tables.
    • Unexpected data extraction from administrators or customers tables.

Detection Engineering

YARA Rule

rule CVE_2019_25496_SQLi_osCommerce {
    meta:
        description = "Detects SQL injection attempts targeting osCommerce product_info.php"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2019-25496"
    strings:
        $sqli_pattern1 = /products_id=[0-9]*['\"]?\s*(AND|OR|UNION|SELECT|INSERT|UPDATE|DELETE|DROP|--|#)/i
        $sqli_pattern2 = /products_id=\d+['\"]?\s*AND\s+['\"]?\d+['\"]?\s*=\s*['\"]?\d+/i
        $sqli_pattern3 = /products_id=\d+['\"]?\s*OR\s+['\"]?1['\"]?\s*=\s*['\"]?1/i
    condition:
        any of them
}

Sigma Rule

title: SQL Injection Attempt on osCommerce product_info.php
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects SQL injection patterns in HTTP requests to osCommerce product_info.php
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'GET'
        cs-uri-query|contains: 'products_id='
        cs-uri-query|re: '(?i)(\bAND\b|\bOR\b|\bUNION\b|\bSELECT\b|--|#)'
    condition: selection
falsepositives:
    - Legitimate use of special characters in product IDs (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2019-25496 osCommerce SQL Injection Attempt"; flow:to_server,established; content:"GET"; http_method; content:"product_info.php"; http_uri; content:"products_id="; http_uri; pcre:"/products_id=\d*['\"]?\s*(AND|OR|UNION|SELECT|INSERT|UPDATE|DELETE|DROP|--|#)/iU"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade osCommerce to the latest version if available (check official site). If no update exists, apply the manual patch described in the "Vulnerable vs. Patched Code" section.
  2. Implement input validation – ensure products_id is strictly numeric using (int) casting or ctype_digit().
  3. Use parameterized queries – rewrite all database queries using prepared statements (e.g., PDO or MySQLi).
  4. Deploy a WAF with rules to block SQL injection patterns.
  5. Restrict database user permissions – use a database user with minimal privileges (e.g., no access to information_schema or administrators tables).

Long-term Measures:

  • Conduct regular security audits and code reviews.
  • Implement a Content Security Policy (CSP) to mitigate XSS if combined with SQLi.
  • Monitor logs for suspicious activity and set up alerts.

Valters IT Signature

This report was generated by Valters IT DevSecOps AI. For further analysis or remediation support, contact Valters IT.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2019-25496/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.