
CVE-2026-73319에 대한 개념 증명 익스플로잇 및 기술 문서로, XenForo 2.3.13 이전 버전의 동일 호스트 `javascript:` URI XSS 취약점을 다루며, 재현 단계와 Python PoC 스크립트를 포함합니다.
XenForo 2.3.13 이전 버전은 동일 호스트의 javascript: URI를 동적 리다이렉트로 허용한 후 이를 window.location에 할당합니다.
서버 측 리다이렉트 검증은 외부 호스트를 거부하지만 HTTP 또는 HTTPS를 요구하지 않습니다. javascript://board-host/%0A... 형태의 URL은 XenForo 호스트로 파싱되어 해당 비교를 통과하고 AJAX 응답에 그대로 남습니다. 브라우저에서 퍼센트 디코딩이 %0A를 줄바꿈으로 변환하여 //host가 도입한 JavaScript 줄 주석을 종료시키고 뒤따르는 페이로드를 노출시킵니다.
저는 XenForo 2.3.12(빌드 2031270)의 공개 Follow 확인 기능에서 이를 재현했습니다. 로그인한 사용자가 조작된 URL을 열고 Follow를 확인했으며, 무해한 페이로드가 XenForo 오리진에서 window.name을 설정했습니다. 공격자는 계정이 필요 없지만, 피해자는 로그인 상태여야 하며 일반적인 작업을 확인해야 합니다. XenForo 2.3.13에 이 수정 사항이 포함되어 있습니다.
python poc.py https://xenforo.example member-name.123
이 스크립트는 단일 요청 루프백 리다이렉트 서버를 시작합니다. 인증된 테스트 세션을 보유한 브라우저에서 출력된 로컬 URL을 열고 window.name을 검사한 후 서버를 종료합니다. 페이로드는 데이터를 읽거나 사용자가 확인한 Follow 외의 작업을 수행하지 않습니다.
발견자: Marco Paciaroni (BomboBombone).