
Gespeichertes Cross-Site-Scripting in "usememos" via SVG
Es ist recht einfach: Ein gespeichertes XSS via SVG ist eine sehr verbreitete Methode, Cross‑Site‑Scripting in der Wildnis zu finden, daher war es eine der ersten Sachen, die ich gemacht habe.
Ich habe das usememos via Pikapods bereitgestellt, dann auf die Startseite navigiert und ein Konto erstellt. Mit dem Konto habe ich einen 'Gedanken' erstellt:
Danach erstellte ich eine SVG‑Datei mit folgendem Payload:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)">
<polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/>
</svg>
Dieser Payload führt JavaScript aus und gibt das document.domain aus (zeigt also nur *.pikapod.net an).
Ich wählte die Datei aus (in diesem Fall hieß sie xss6.svg) und konnte dann die Bildadresse kopieren:
Wie Sie bemerken, wird das XSS leider nicht innerhalb der Hauptseite ausgeführt. Ich habe einige Manöver versucht, um es zum Funktionieren zu bringen, jedoch ohne Erfolg. Das Eingeben der kopierten URL führt zu einem XSS‑Popup – das die URL preisgibt:

Weitere Informationen zu dieser Schwachstelle finden Sie in meinem Blogbeitrag unter: https://tiem.io/cves/cve-2025-50738-stored-xss-via-svg/