CVE-2025-60500 — Unsicherer Datei-Upload / Logikfehler in QDocs Smart School (Smart School 7.1)
Veröffentlichungsdatum: 2025-10-17
Autor / Entdecker: Lebas Vivien
Status: Reserviert
CVE: CVE-2025-60500 (reserviert)
Zusammenfassung
Ein unsicherer Datei-Upload / Logikfehler in QDocs Smart School — School Management System 7.1 ermöglicht es authentifizierten Benutzern mit Rollen wie Buchhalter, Admin oder Superadmin, die Dateityp-Beschränkungen in der Medien-Upload-Funktion zu umgehen, indem die alternative YouTube-URL-Option missbraucht wird. Dieser Fehler erlaubt es einem Angreifer, beliebige PHP-Dateien in einem über das Web zugänglichen Verzeichnis zu speichern, was eine Remote-Codeausführung ermöglicht, wenn die hochgeladene Datei aufgerufen wird.
Betroffenes Produkt: Smart School : School Management System 7.1 (QDocs)
Vom Hersteller bestätigt: Ja
Auswirkungen
- Remote-Codeausführung (RCE) über hochgeladene PHP-Dateien, die in einem über das Web zugänglichen Verzeichnis abgelegt werden.
- Ein authentifizierter Benutzer mit den angegebenen Rollen kann eine beliebige PHP-Datei hochladen, die unter einem vorhersehbaren, über das Web zugänglichen Pfad gespeichert wird.
- Angreifer könnten Systembefehle ausführen oder weiter in die Umgebung vordringen, indem sie die hochgeladene Datei aufrufen.
Betroffene Komponente
- Datei-Upload-Funktion — Download Center > Upload Share Content (Medien-Upload / Share-Content-Ablauf)
Angriffsart / Vektor
- Angriffsart: Remote (erfordert ein authentifiziertes Konto mit der Rolle: Buchhalter/Admin/Superadmin)
- Angriffsvektoren: Upload-Ablauf in Kombination mit der alternativen YouTube-URL-Option; durch das Übermitteln sowohl einer hochgeladenen Datei als auch des YouTube-Link-Felds speichert der Server die hochgeladene Datei mit einer
.php-Erweiterung in einem über das Web zugänglichen Verzeichnis.
Reproduktion (konzeptioneller PoC — kein ausführbares Payload enthalten)
- Melden Sie sich bei Smart School als Benutzer mit der Rolle
accountant, admin oder superadmin an.
- Navigieren Sie zu Download Center → Upload Share Content.
- Fangen Sie die HTTP-Anfrage (z. B. mit einem Proxy wie Burp) während des Upload-/Share-Ablaufs ab.
- Laden Sie eine Datei hoch, deren Dateiname auf
.php endet (die serverseitigen Prüfungen/Filter versuchen, PHP-Uploads über die reguläre Dateityp-Validierung zu blockieren).
- Füllen Sie in derselben Upload-/Übermittlungsanfrage auch das alternative YouTube-URL-Feld aus (der Logikpfad, der die YouTube-Option verarbeitet, erlaubt fälschlicherweise, dass die hochgeladene Datei akzeptiert und gespeichert wird).
- Schließen Sie den Share-/Upload-Ablauf ab; notieren Sie die Serverantwort oder beobachten Sie den zurückgegebenen gespeicherten Dateipfad (die Anwendung gibt den Speicherpfad preis). Beispiel für ein beobachtetes Speicherpfad-Muster: /uploads/school_content/material/media/!file.php
- Rufen Sie die gespeicherte
.php-Datei über die zurückgegebene URL auf, um die Codeausführung auszulösen (wenn die Datei ausführbaren PHP-Code enthält).
Proof-of-Concept (auf hoher Ebene)
- Eine über den anfälligen Ablauf hochgeladene PHP-Datei wird in ein über das Web zugängliches Verzeichnis geschrieben und kann direkt per HTTP aufgerufen werden.
- Die Schwachstelle ist ein Logik-/Validierungs-Bypass (der alternative YouTube-URL-Codepfad erzwingt nicht dieselben strengen Dateityp-Beschränkungen wie der normale Upload-Ablauf).
Gegenmaßnahmen / Empfohlene Korrekturen
Herstellerseitige Korrekturen (empfohlen):
- Beheben Sie den Logikfehler, sodass der alternative YouTube-URL-Pfad und alle anderen Sonderfälle von Upload-Pfaden dieselbe Dateityp-Validierung und -Filterung wie der normale Upload-Ablauf erzwingen. Überprüfen Sie außerdem, ob die YouTube-URL gültig/vorhanden ist.
- Blockieren Sie die Ausführung hochgeladener Dateien, indem Sie hochgeladene Inhalte außerhalb des Webroots speichern oder sicherstellen, dass Uploads über einen sicheren Handler bereitgestellt werden, der niemals serverseitigen Code ausführt.
- Erzwingen Sie serverseitige MIME-Typ- und Erweiterungsprüfungen und validieren Sie anhand einer Whitelist zulässiger Dateitypen statt einer Blacklist.
- Benennen Sie gespeicherte Dateien in sichere Erweiterungen um und/oder randomisieren Sie Namen, ohne die ursprüngliche Erweiterung beizubehalten.
- Legen Sie korrekte Serverberechtigungen fest, sodass hochgeladene Dateien nicht ausführbar sind (z. B.
chmod, um die Ausführungsberechtigung zu entfernen; konfigurieren Sie den Webserver so, dass PHP nicht aus Upload-Verzeichnissen ausgeführt wird).
- Fügen Sie Protokollierung und Überwachung für verdächtige Uploads und Zugriffsversuche auf hochgeladene Dateien hinzu.
- Wenden Sie rollenbasierte Einschränkungen an — verschärfen Sie, welche Rollen Inhalte hochladen dürfen, und verlangen Sie zusätzliche Validierung für privilegierte Rollen.
Workarounds für Administratoren:
- Deaktivieren Sie vorübergehend die problematische Upload-/Share-Funktion, falls möglich.
- Beschränken Sie den Upload-Zugriff auf weniger vertrauenswürdige Konten.
- Konfigurieren Sie den Webserver so, dass die Ausführung von
.php im Verzeichnis /uploads/... nicht erlaubt ist.
Referenzen
- Gemeldete Demo-Instanz:
https://smart-school.in/demo
- MITRE-CVE-ID reserviert: CVE-2025-60500