
"usememos"에서 SVG를 통한 저장형 크로스 사이트 스크립팅
아주 간단합니다. SVG를 통한 저장형 XSS는 실제 환경에서 크로스 사이트 스크립팅을 찾는 매우 흔한 방법이므로, 제가 가장 먼저 시도한 것 중 하나였습니다.
Pikapods를 통해 usememos를 배포한 후, 프론트 페이지로 이동하여 계정을 만들었습니다. 해당 계정으로 '생각'을 하나 만들었습니다.
그런 다음 다음 페이로드를 포함하는 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/)을 참조하세요.