
Script intersite stocké dans "usememos" via SVG
C'est assez simple : un XSS stocké via SVG est une manière très courante de trouver des failles Cross-Site Scripting dans la nature, donc c'est l'une des premières choses que j'ai faites.
J'ai déployé usememos via Pikapods, puis je me suis rendu sur la page d'accueil et j'ai créé un compte. Avec ce compte, j'ai créé une « pensée » :
Ensuite, j'ai créé un fichier SVG contenant le payload suivant :
<?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>
Ce payload exécute du JavaScript, ce qui affiche le « document.domain » (donc il montre simplement « *.pikapod.net »). J'ai sélectionné le fichier, dans ce cas il s'appelait xss6.svg et je pouvais ensuite « copier l'adresse de l'image » :
Comme vous le remarquez, le XSS ne s'exécute pas dans la page principale, malheureusement. J'ai essayé quelques manœuvres pour le faire fonctionner, mais sans succès. Ainsi, en saisissant l'URL copiée, une pop-up XSS apparaît – révélant l'URL :
Pour en savoir plus sur cette vulnérabilité, consultez mon article de blog à l'adresse : https://tiem.io/cves/cve-2025-50738-stored-xss-via-svg/