🇰🇷 한글 설명
WordPress의 UsersWP 플러그인 1.2.70 이하 버전에서 발생하는 임의 파일 삭제 취약점입니다. AJAX 핸들러의 파일 경로 검증 로직 결함으로 인해, 공격자가 조작된 URL을 사용하여 서버 내의 wp-config.php를 포함한 임의의 파일을 삭제할 수 있습니다.
💡 쉬운 설명
해커가 특수한 주소를 이용해 웹사이트의 중요한 설정 파일이나 데이터를 마음대로 지울 수 있는 보안 구멍입니다. 권한이 있는 사용자가 이 기능을 악용하면 사이트 전체를 망가뜨릴 수 있습니다.
🇺🇸 원문 (English)
The UsersWP plugin for WordPress is vulnerable to Arbitrary File Deletion in versions up to, and including, 1.2.70 via the upload_file_remove() AJAX handler. The plugin stores the value of an account 'file' form field taken directly from $_POST when no real $_FILES upload is provided (process_account() calls uwp_validate_fields() and array_merges the result with the empty output of UsersWP_Files::validate_uploads()). At storage time the value is only checked with validate_file(), which passes any string that does not contain a literal '../'. When the value is later processed by upload_file_remove(), it is again gated with validate_file() and then normalized through uwp_get_file_relative_url(); that helper performs a global str_replace() of the uploads base URL against the stored URL, allowing a crafted URL containing embedded '..<uploads-baseurl>' tokens to collapse into '../../' traversal sequences after the last validation. The transformed value is then appended to the uploads base directory and passed to wp_delete_file() without any canonical containment check. This makes it possible for authenticated attackers, with Subscriber-level access and above, to delete arbitrary files on the affected site's server (including wp-config.
📍 영향받는 시스템
WordPress UsersWP plugin versions up to and including 1.2.70
⚔️ 공격 벡터
인증된 사용자(Subscriber 권한 이상)가 조작된 'file' 필드 값을 포함한 AJAX 요청을 전송하여 경로 탐색 공격 수행
🛡️ 대응 방법
UsersWP 플러그인을 최신 보안 패치가 적용된 버전으로 즉시 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 1.2.70과 같거나 그보다 낮으면 취약한 상태입니다.
wp-cli plugin list --name=userswp --format=json | grep -oP '(?<=version":")[^"]+'