
Detaillierte Offenlegung einer gespeicherten XSS-Schwachstelle in VaahCMS durch unsichere Handhabung von SVG-Datei-Uploads, einschließlich Exploit-Ablauf, betroffener Endpunkte und Abwehrstrategien für Sicherheitsforscher.
Eine Schwachstelle in Bezug auf gespeichertes Cross-Site Scripting (XSS) wurde im vaahcms identifiziert, insbesondere in der Interaktion zwischen der Datei-Upload-Logik in MediaController.php und der Methode storeAvatar() in UserBase.php, die es einem niedrig privilegierten registrierten Benutzer ermöglicht, eine bösartige SVG-Datei mit eingebettetem JavaScript hochzuladen. Die Schwachstelle entsteht dadurch, dass die Dateispeicherung vor der Inhalts- oder MIME-Typ-Validierung erfolgt, wodurch bösartige Dateien auf einem vorhersagbaren, öffentlich zugänglichen Pfad auf dem Server verbleiben.
Die Schwachstelle rührt von der Methode upload() in MediaController.php her
$path = $request->file($input_file_name) ->storeAs($request->folder_path, $upload_file_name); was es einem Angreifer ermöglicht, den Verzeichnispfad zu bestimmen und bösartige Dateien (wie ein XSS-beladenes SVG) direkt in das public/-Verzeichnis zu platzieren, wodurch die Payload sofort über einen Webbrowser zugänglich wird.
Bei erfolgreicher Ausnutzung kann ein Angreifer den Inhalt und Dateinamen einer Datei steuern, die auf einen öffentlichen Speicherpfad (/storage/media/YYYY/MM/<controlled-filename>.svg) geschrieben wird. Wenn dieses öffentlich zugängliche SVG anschließend im Browser eines Benutzers über ein ``, <object> oder einen manipulierten Link gerendert wird, wird das eingebettete Skript ausgeführt, was zu persistentem XSS führt.
POST /backend/vaah/manage/media/upload
/storage/media/YYYY/MM/<controlled-filename>.svg.{"success": false, "errors": ["Unable to decode input"]}).POC.svg).xss.svg)./storage/media/2025/08/xss.svg.
enshrined/svg-sanitize für PHP)Forscher: Thaw Phone Nyo
Datum der Offenlegung: 2025/10/8