CVE-2025-10082
📋 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
- SourceCodester Online Polling System
📦 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.
🎯 Exploit Status
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
allAdd 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
linuxDeploy 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="*#*")