🇰🇷 한글 설명
WWBN AVideo 29.0 이하 버전에서 인증된 사용자가 후원 알림 웹훅 URL을 127.0.0.1, 169.254.169.254 등 내부 주소로 설정할 수 있으며, 다른 사용자가 후원하면 서버가 해당 URL로 POST 요청을 보내 블라인드 SSRF가 발생합니다. 입력 검증이 형식 확인에 그치고 리다이렉트 재검증도 없어 내부 자원 접근이 가능합니다.
💡 쉬운 설명
로그인한 사용자가 후원 알림 주소를 서버 내부 주소로 바꿔 놓을 수 있습니다. 누군가 후원하면 서버가 그 내부 주소로 요청을 보내 내부망 정보에 접근할 수 있습니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions up to and including 29.0, an authenticated user can configure their own donation-notification webhook URL to point at internal/loopback/metadata hosts (e.g. http://127.0.0.1:8080/..., http://169.254.169.254/latest/..., RFC1918 addresses). When any other user (including a second account owned by the same attacker) donates even a trivial amount via plugin/CustomizeUser/donate.json.php, the AVideo server issues a curl POST to the attacker-supplied URL, resulting in a blind SSRF. The handler uses only isValidURL() (which is a format check) and does not call the codebase's own isSSRFSafeURL() helper. Additionally, CURLOPT_FOLLOWLOCATION is enabled with no per-hop revalidation, so even if the stored URL were validated, an HTTP 307 from an attacker-controlled host could redirect the POST to internal targets. Commit aaacd48f29f1ff71d1eb5fc81d37605f593cefa9 contains an updated fix.
📍 영향받는 시스템
WWBN AVideo 29.0 이하 버전 (커밋 aaacd48f29f1ff71d1eb5fc81d37605f593cefa9 이전)
⚔️ 공격 벡터
인증된 사용자가 후원 웹훅 URL을 내부 주소로 설정한 뒤 후원 요청을 발생시켜 서버가 내부 대상에 POST 요청을 보내게 함
🛡️ 대응 방법
AVideo를 커밋 aaacd48f29f1ff71d1eb5fc81d37605f593cefa9 이후 버전으로 업데이트하고 웹훅 URL에 isSSRFSafeURL() 검증 및 리다이렉트 재검증을 적용
🔧 검증 코드
donate.json.php 등 후원 처리 코드에서 isSSRFSafeURL 호출이 결과로 나오면 패치가 적용된 것이고, 아무 결과도 없으면 취약 상태일 가능성이 높습니다.
grep -rn 'isSSRFSafeURL' /var/www/html/plugin/CustomizeUser/ 2>/dev/null | head -5