Safeguard
Vulnerability Analysis•

CVE-2025-4875: High SQL Injection in Campcodes Online Shopping Portal

CVE-2025-4875 is a high severity SQL injection in Online Shopping Portal 1.0. No fix is named, so restrict access, fix the query code or retire the app.

Safeguard Security Team
4 min read

CVE-2025-4875 is a high severity SQL injection (CVSS 7.3) in Campcodes Online Shopping Portal 1.0. The email parameter of /forgot-password.php reaches a database query unsafely. The record names no fixed version, so restrict access, fix the query code or retire the application.

What's affected

The record lists Campcodes Online Shopping Portal 1.0. The weak spot is the password reset page, in the file /forgot-password.php. The same coding pattern is likely to repeat in sibling scripts, so review them too.

No fixed version is named in the record or in the report. Check the Campcodes site at https://www.campcodes.com/ for an updated package. If you downloaded Online Shopping Portal as a source code package, you own the patching, because nothing will update it for you.

The public report linked from the record (GitHub issue) says the email value is used directly in SQL queries without proper cleaning or validation, and it was written against version 1.0.

How to check if you're exposed

Start with inventory. Find out whether this application is installed anywhere, including old test servers and forgotten hosting accounts:

find /var/www -type f -path "*/forgot-password.php" 2>/dev/null

Then look at how the parameter is used in the file. A query built by joining strings is the thing to look for:

grep -n "email" /var/www/html/forgot-password.php

If the value is placed straight into a query string, you are exposed. Next, check who can reach the file. The path is outside any admin folder, and the CVSS vector in the record shows no privileges required, which fits a page that visitors can reach before they sign in.

Finally, read your access logs for requests to this file from addresses you do not know:

grep "/forgot-password.php" /var/log/apache2/access.log | tail -n 50

Adjust the log path for your server. Repeated requests with odd values, or database errors in the application log, are worth escalating.

What to do now

  1. Confirm whether Online Shopping Portal 1.0 runs anywhere in your estate, and who owns it.
  2. Check the vendor site for a fixed release. If none exists, plan to replace the application or fix the code yourself.
  3. Until then, put an IP allow list or HTTP basic authentication in front of the whole application, or take it offline if it is not needed.
  4. Change the vulnerable query to use prepared statements with bound parameters. Cast numeric identifiers to integers before use, and review the other scripts in the same folder for the same pattern.
  5. Give the database account the least privilege it needs, and rotate the admin and database passwords if the logs show suspicious activity.

Why it matters

The weakness is SQL injection, tracked as CWE-89 and the broader injection class CWE-74. The application builds a database query using text that a user controls, and the database cannot tell the difference between the intended query and the extra instructions. Depending on the account the application uses, that can expose records, change data or break the app.

The record says the exploit has been disclosed to the public and may be used, which means the barrier to abuse is low. The CVE is not listed in the CISA Known Exploited Vulnerabilities catalogue, so there is no confirmed mass exploitation to point to, but you should still treat it as urgent for anything on the internet.

Small PHP projects like this are a common source of the same bug repeated across many files. Fixing one parameter and leaving the rest is a poor trade. A dependency scan will not see this class of problem, because the flaw is in the application's own code, which is why a code scan or a web scan of a staging copy is the right tool.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Is there a patch for Online Shopping Portal?

The record names no fixed version. Check the vendor site at https://www.campcodes.com/ and plan to replace or fix the code if nothing is available.

Who can reach /forgot-password.php?

The vector in the record shows no privileges required, so assume any visitor who can reach the site can reach this page. Add network level restrictions while you fix it.

Sources

Last reviewed: 18 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.