🇰🇷 한글 설명
WWBN AVideo 29.0 이하 버전의 objects/sendEmail.json.php 엔드포인트는 contactForm=1 파라미터가 생략되면 공격자가 지정한 이메일을 수신자로 설정하면서 사이트의 연락처 이메일을 발신자로 사용합니다. 이 엔드포인트는 인증과 CSRF 토큰 없이 접근 가능한 '공개 쓰기 작업'으로 허용되어 있어, 인증되지 않은 공격자가 캡차만 통과하면 사이트의 정상 SMTP 인프라로 임의의 수신자에게 메일을 발송할 수 있습니다.
💡 쉬운 설명
누구나 이 웹사이트의 공식 이메일 주소로 원하는 사람에게 메일을 보낼 수 있는 문제입니다. 해커가 이를 이용해 실제 사이트에서 온 것처럼 보이는 피싱 메일을 대량으로 보낼 수 있습니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions up to and including 29.0, objects/sendEmail.json.php exposes two branches depending on whether contactForm=1 is submitted. When the parameter is omitted, the endpoint sets $sendTo to an attacker-supplied email and, for unauthenticated callers, uses the site's own contact email as the message From:/Reply-To:. The endpoint is explicitly allow-listed as a "public write action" in objects/functionsSecurity.php (line 885), so it requires no authentication or CSRF token. An unauthenticated attacker (solving a captcha) can force the site's own SMTP infrastructure to send attacker-composed emails to arbitrary recipients with the site's legitimate sender address, passing SPF/DKIM/DMARC for the site's domain — ideal for targeted phishing and brand impersonation. Commit 4e3709895857a5857f0edb46b0ee984de0d9e1a2 contains an updated fix.
📍 영향받는 시스템
WWBN AVideo 29.0 이하 버전 (수정 커밋: 4e3709895857a5857f0edb46b0ee984de0d9e1a2)
⚔️ 공격 벡터
인증 없이 sendEmail.json.php에 contactForm 파라미터를 생략하고 공격자 이메일을 지정해 캡차를 풀며 피싱 메일을 발송
🛡️ 대응 방법
AVideo를 수정 커밋 4e3709895857a5857f0edb46b0ee984de0d9e1a2이 포함된 최신 버전으로 업데이트하고, 해당 엔드포인트의 공개 쓰기 허용 목록 설정을 검토
🔧 검증 코드
결과에 sendEmail.json.php가 공개 쓰기 허용 목록에 남아 있고 수정된 코드(인증/캡차 검증 로직)가 반영되지 않았다면 취약한 상태이며, 결과가 없거나 수정 버전 코드가 확인되면 패치가 적용된 것으로 판단합니다.
grep -n 'sendEmail' /var/www/html/objects/functionsSecurity.php 2>/dev/null