Skip to content

[Security] Multiple SQL Injection + Plaintext Password Storage — Critical Vulnerabilities #83

Description

Security Vulnerability Report

Researcher: Abdurazzoqov Javohir
Date: 2026-06-19
Severity: Critical
Affected Repo: online-shopping-system-advanced


Summary

Multiple critical security vulnerabilities were identified through source code analysis of this repository. The application is affected by SQL Injection in at least 5 endpoints and plaintext password storage/exposure in the admin panel.


Vulnerability 1 — SQL Injection in manageuser.php (Critical)

File: admin/admin/manageuser.php

$user_id = $_GET['user_id'];
mysqli_query($con, "delete from user_info where user_id='$user_id'");

Issue: $user_id is taken directly from $_GET with no sanitization and inserted into a DELETE query.

PoC:

GET /admin/admin/manageuser.php?action=delete&user_id=1'%20OR%20'1'='1

Impact: Attacker can delete all users from the database.


Vulnerability 2 — SQL Injection in edituser.php (Critical)

File: admin/admin/edituser.php

$user_id = $_REQUEST['user_id'];
mysqli_query($con, "update user_info set first_name='$first_name', ..., password='$user_password' where user_id='$user_id'");

Issue: All 5 parameters are unsanitized in an UPDATE query.

PoC:

POST /admin/admin/edituser.php
first_name=admin'-- -&user_id=1

Vulnerability 3 — SQL Injection in orders.php (Critical)

File: admin/admin/orders.php

$order_id = $_GET['order_id'];
mysqli_query($con, "delete from orders where order_id='$order_id'");

PoC:

GET /admin/admin/orders.php?action=delete&order_id=1'%20OR%20'1'='1

Vulnerability 4 — SQL Injection in addsuppliers.php (High)

File: admin/admin/addsuppliers.php

mysqli_query($con, "insert into user_info(first_name,...,password,...) values ('$first_name', ..., '$user_password', ...)");

Vulnerability 5 — SQL Injection in add_products.php (High)

File: admin/admin/add_products.php

mysqli_query($con, "insert into products (...) values ('$product_type','$brand','$product_name','$price','$details','$pic_name','$tags')");

Vulnerability 6 — Plaintext Password Exposure in Admin Panel (Critical)

Files: admin/admin/manageuser.php, admin/admin/index.php

echo "<td>$user_password</td>";

Issue: User passwords rendered directly in admin HTML table — visible to any admin user.


Vulnerability 7 — Plaintext Password Storage (High)

File: admin/admin/addsuppliers.php

Passwords inserted into database with NO hashing whatsoever.


Vulnerability 8 — Weak MD5 Password Hashing (High)

File: admin/server/server.php

$password = md5($password_1);

MD5 is cryptographically broken for passwords. Use password_hash() with bcrypt.


Recommendations

Fix Action
SQLi Use prepared statements (mysqli_prepare()) for ALL queries
Password exposure Remove password column from all admin UI tables
Password storage Hash with password_hash($pass, PASSWORD_BCRYPT)
CSRF Add CSRF tokens to all state-changing forms

Disclosure

This analysis was performed on source code only — no live system was accessed. Reported here for responsible disclosure.

Researcher: abdurazzoqovjavohir700@gmail.com

CVE identifiers will be requested from MITRE for the Critical-severity SQL Injection vulnerabilities after reasonable maintainer response time.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions