
Cross-Site Scripting memorizzato in "usememos" tramite SVG
È molto semplice: una XSS memorizzata tramite SVG è un modo molto comune di trovare Cross-Site Scripting in giro per il mondo, quindi è stata una delle prime cose che ho fatto.
Ho distribuito usememos tramite Pikapods, dove poi sono andato alla pagina principale e ho creato un account. Con l'account, ho creato un 'pensiero':
Poi ho creato un file SVG, contenente il seguente 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>
Questo payload esegue JavaScript, risultando nella stampa di 'document.domain' (quindi mostra semplicemente '*.pikapod.net'). Ho selezionato il file, in questo caso si chiamava xss6.svg e poi ho potuto 'copiare l'indirizzo dell'immagine':
Come puoi notare, la XSS non si esegue all'interno della pagina principale, purtroppo. Ho provato alcune manovre per farla funzionare, ma senza successo. Quindi inserendo l'URL copiato, si ottiene un pop-up XSS – che rivela l'URL:
Per maggiori informazioni su questa vulnerabilità, vedi il mio post sul blog: https://tiem.io/cves/cve-2025-50738-stored-xss-via-svg/