CVE-2025-10082

7.3 HIGH

📋 TL;DR

CVE-2025-10082 is an SQL injection vulnerability in SourceCodester Online Polling System 1.0 that allows remote attackers to execute arbitrary SQL commands via the email parameter in /admin/manage-admins.php. This affects all deployments of version 1.0, potentially compromising the database and admin functionality. Attackers can exploit this without authentication to steal, modify, or delete data.

💻 Affected Systems

Products:
  • SourceCodester Online Polling System
Versions: 1.0
Operating Systems: All platforms running PHP
Default Config Vulnerable: ⚠️ Yes
Notes: Affects all installations of version 1.0. The vulnerability is in the admin interface which may require authentication, but SQL injection can bypass this.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete database compromise leading to data theft, data destruction, admin account takeover, and potential server compromise via SQL injection to RCE techniques.

🟠

Likely Case

Database information disclosure, admin credential theft, and unauthorized data modification in polling system.

🟢

If Mitigated

Limited impact if proper input validation and WAF rules block SQL injection attempts.

🌐 Internet-Facing: HIGH - The vulnerability is remotely exploitable without authentication and affects internet-facing admin interfaces.
🏢 Internal Only: MEDIUM - Internal attackers could exploit this to escalate privileges and compromise the polling system database.

🎯 Exploit Status

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

Exploit details are publicly available on GitHub. SQL injection via email parameter is straightforward to weaponize with common SQL injection tools.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Unknown

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

Restart Required: No

Instructions:

No official patch available. Consider upgrading to a newer version if available, or implement workarounds. Monitor vendor website for updates.

🔧 Temporary Workarounds

Input Validation and Sanitization

all

Add parameterized queries or proper input validation for email parameter in manage-admins.php

Modify /admin/manage-admins.php to use prepared statements: $stmt = $conn->prepare('SELECT * FROM admins WHERE email = ?'); $stmt->bind_param('s', $email);

WAF Rule Implementation

linux

Deploy web application firewall rules to block SQL injection patterns targeting /admin/manage-admins.php

Add ModSecurity rule: SecRule ARGS:email "@detectSQLi" "id:10082,phase:2,deny,status:403,msg:'CVE-2025-10082 SQL Injection Attempt'"
Add nginx rule: location ~* /admin/manage-admins\.php { if ($args ~* "(?i)(union|select|insert|update|delete|drop|--|#|\/\*|\*\/)") { return 403; } }

🧯 If You Can't Patch

  • Restrict access to /admin/manage-admins.php using IP whitelisting or authentication requirements
  • Implement database monitoring to detect unusual SQL queries and admin table access patterns

🔍 How to Verify

Check if Vulnerable:

Test the email parameter in /admin/manage-admins.php with SQL injection payloads like ' OR '1'='1 or time-based blind SQL payloads

Check Version:

Check PHP files for version comments or check project documentation. Common location: includes/config.php or readme files.

Verify Fix Applied:

Verify that SQL injection payloads no longer execute and return proper error handling or rejection

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL errors in web server logs for /admin/manage-admins.php
  • Multiple failed login attempts followed by SQL injection patterns
  • Admin table access from unexpected IP addresses

Network Indicators:

  • HTTP requests to /admin/manage-admins.php with SQL keywords in parameters
  • Unusual database query patterns from web server IP

SIEM Query:

source="web_logs" AND url="/admin/manage-admins.php" AND (email="*union*" OR email="*select*" OR email="*insert*" OR email="*' OR '*" OR email="*--*" OR email="*#*")

🔗 References

📤 Share & Export