
"usememos"におけるSVG経由の格納型クロスサイト・スクリプティング
これは非常にシンプルです。SVGを介した格納型XSSは、実環境でクロスサイトスクリプティング(XSS)を見つける非常に一般的な方法なので、最初に試したことの一つでした。
Pikapods経由でusememosをデプロイし、フロントページに移動してアカウントを作成しました。 そのアカウントで「thought」を作成しました:
そして、以下のペイロードを含むSVGファイルを作成しました:
<?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>
このペイロードはJavaScriptを実行し、「document.domain」を表示します(つまり、単に「*.pikapod.net」と表示されるだけです)。 そのファイル(この場合はxss6.svgという名前でした)を選択すると、「画像アドレスをコピー」ができました:
お気づきのとおり、残念ながらXSSはメインページ内では実行されません。動作させるためにいくつか手法を試しましたが、成功しませんでした。 そこで、コピーしたURLを入力すると、XSSのポップアップが表示され、URLが明らかになります:
この脆弱性の詳細については、私のブログ記事( https://tiem.io/cves/cve-2025-50738-stored-xss-via-svg/ )を参照してください。