🇰🇷 한글 설명
WWBN AVideo 26.0 이하 버전의 YPTWallet Stripe 결제 확인 페이지에서 $_REQUEST['plugin'] 파라미터가 인코딩이나 검증 없이 JavaScript 블록에 그대로 출력됩니다. 공격자가 악성 URL을 피해자에게 전달하면 임의의 JavaScript가 실행되어 사용자명과 비밀번호 해시가 탈취될 수 있습니다. 커밋 fa0bc102493a15d79fe03f86c07ab7ca1b5b63e2에서 수정되었습니다.
💡 쉬운 설명
악성 링크를 클릭하면 결제 페이지를 통해 악성 스크립트가 실행될 수 있습니다. 이 스크립트가 로그인한 사용자의 계정 정보를 빼낼 수 있습니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions up to and including 26.0, the YPTWallet Stripe payment confirmation page directly echoes the `$_REQUEST['plugin']` parameter into a JavaScript block without any encoding or sanitization. The `plugin` parameter is not included in any of the framework's input filter lists defined in `security.php`, so it passes through completely raw. An attacker can inject arbitrary JavaScript by crafting a malicious URL and sending it to a victim user. The same script block also outputs the current user's username and password hash via `User::getUserName()` and `User::getUserPass()`, meaning a successful XSS exploitation can immediately exfiltrate these credentials. Commit fa0bc102493a15d79fe03f86c07ab7ca1b5b63e2 fixes the issue.
📍 영향받는 시스템
WWBN AVideo 26.0 이하 버전 (YPTWallet 플러그인 사용 환경)
⚔️ 공격 벡터
조작된 URL의 plugin 파라미터에 악성 JavaScript를 삽입하여 피해자가 클릭하도록 유도 (반사형 XSS)
🛡️ 대응 방법
커밋 fa0bc102493a15d79fe03f86c07ab7ca1b5b63e2가 적용된 최신 버전으로 업데이트
🔧 검증 코드
결과가 출력되지 않거나 해당 값이 htmlspecialchars 등으로 인코딩되어 출력되면 수정된 것이며, 원본 그대로 echo되는 라인이 보이면 취약한 상태입니다.
grep -rn "REQUEST\['plugin'\]" /var/www/html/AVideo/plugin/YPTWallet/ 2>/dev/null