🇰🇷 한글 설명
WWBN AVideo 29.0 이하 버전의 locale/save.php에서 $_POST['flag'] 값이 검증 없이 파일 경로에 연결되며, $_POST['code'] 내용이 해당 경로에 그대로 기록됩니다. 관리자 권한을 가진 공격자(또는 CSRF로 관리자를 속인 공격자)가 디렉터리 순회로 임의의 .php 파일을 작성하여 원격 코드 실행이 가능합니다. 커밋 57f89ffbc27d37c9d9dd727212334846e78ac21a에서 수정되었습니다.
💡 쉬운 설명
동영상 플랫폼의 언어 설정 저장 기능에 입력값 검증이 빠져 있어, 관리자 권한을 가진 사람이 서버에 임의의 프로그램 파일을 만들 수 있습니다. 이를 통해 공격자가 서버 전체를 장악할 수 있습니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions 29.0 and prior, the locale save endpoint (`locale/save.php`) constructs a file path by directly concatenating `$_POST['flag']` into the path at line 30 without any sanitization. The `$_POST['code']` parameter is then written verbatim to that path via `fwrite()` at line 40. An admin attacker (or any user who can CSRF an admin, since no CSRF token is checked and cookies use `SameSite=None`) can traverse out of the `locale/` directory and write arbitrary `.php` files to any writable location on the filesystem, achieving Remote Code Execution. Commit 57f89ffbc27d37c9d9dd727212334846e78ac21a fixes the issue.
📍 영향받는 시스템
WWBN AVideo 29.0 이하 버전
⚔️ 공격 벡터
관리자 계정 또는 CSRF로 관리자를 속여 locale/save.php에 조작된 flag 값(경로 순회)과 PHP 코드를 전송하여 임의의 PHP 파일 생성 후 실행
🛡️ 대응 방법
커밋 57f89ffbc27d37c9d9dd727212334846e78ac21a가 적용된 최신 버전으로 AVideo를 업데이트하고, 관리자 계정 보안과 CSRF 방어를 강화
🔧 검증 코드
출력된 코드에서 $_POST['flag']가 basename, realpath 또는 화이트리스트 검증 없이 경로에 직접 연결되어 있으면 취약하며, 검증 로직이 있으면 패치된 것입니다. 파일이 없으면 AVideo가 설치되지 않은 것입니다.
grep -n 'flag' $(find / -path '*/locale/save.php' 2>/dev/null | head -1) 2>/dev/null | head -5