[방어] 분석 — CVE-2020-25213
Critical RCE via unauthenticated file upload in wp-file-manager requires immediate blocking of the elFinder connector path and forensic scanning for existing web shells.
📋 요약
- 심각도 critical · CVSS 10.0 · EPSS 0.97328 · 악용난이도 easy · KEV
🔍 공격 기법
본 취약점은 wp-file-manager 플러그인이 안전하지 않은 예제 elFinder 커넥터 파일을 .php 확장자로 노출하여 발생합니다.
- 진입: 인증 없이
/wp-content/plugins/wp-file-manager/lib/elFinder/php/connector.php엔드포인트에 접근합니다. - 업로드:
command=upload,mkfile,put등의 파라미터를 통해 임의의 PHP 코드를 전송합니다. 이때 MIME 타입 우회나 이중 확장자를 사용하여 검증을 무력화할 수 있습니다. - 실행: 업로드된 파일은
/wp-content/plugins/wp-file-manager/lib/files/또는 커넥터 경로 내에 저장되며, 해당 URL로 HTTP 요청을 보내는 순간 서버 권한(추정:www-data)으로 RCE가 수행됩니다.
악용 가능성: 본 취약점은 CVSS 벡터 상 AV:N/AC:L/PR:N/UI:N으로, 인증되지 않은 외부 공격자가 네트워크를 통해 아무런 제약 없이 즉시 공격 가능한 매우 낮은 난이도를 가집니다. 공격 표면은 wp-file-manager 플러그인의 elFinder 커넥터 엔드포인트이며, 특히 안전하지 않은 예제 파일이 .php 확장자로 변경되어 노출된 점이 핵심 트리거 조건입니다. 공격자는 해당 엔드포인트의 upload, mkfile, put 명령을 통해 웹 루트 내 특정 경로(wp-content/plugins/wp-file-manager/lib/files/)에 임의의 PHP 코드를 생성하고 실행할 수 있습니다. 이론적 심각도를 넘어 EPSS 수치가 0.97328로 매우 높고 KEV(Known Exploited Vulnerabilities)에 등재되었다는 점은, 이미 자동화된 스캐너와 익스플로잇 킷이 널리 퍼져 실제 공격 시도가 빈번함을 의미합니다. 따라서 방어자 관점에서 이 취약점은 발견 즉시 RCE(Remote Code Execution)로 이어질 가능성이 극도로 높은 치명적인 위협입니다.
💥 영향 분석
- 서버 완전 제어: 웹쉘 업로드 성공 시 OS 명령어 실행이 가능하여 DB 정보 탈취 및 사이트 변조가 즉시 이루어집니다.
- 권한 상승 및 횡적 이동: 웹 서버 계정 권한을 기반으로 커널 취약점을 이용해 root 권한을 획득하거나 내부망 내 타 시스템으로 침투하는 교두보로 활용됩니다.
🔗 관련 취약점·체이닝
- Unrestricted File Upload: 파일 확장자 및 내용 검증 부재를 이용한 전형적인 업로드 패턴입니다.
- RCE 체이닝: 단순 업로드에서 끝나는 것이 아니라, 웹 서버의 실행 권한을 그대로 이용하여 즉시 코드를 실행하는 파괴적인 체인을 가집니다.
🔎 탐지
다중 소스 데이터 간 일관성이 확인되었으며, 특히 EPSS 0.97328(실측 기반 악용 예측 최고 수준)과 KEV 등재 사실은 자동화된 공격 도구가 이미 널리 퍼져 있음을 뜻하므로 매우 높은 빈도의 탐지가 예상됩니다.
1. 웹 서버 접근 로그 (HTTP Access Log)
- 지표:
request_uri에 elFinder 커넥터 경로가 포함되고,query_string또는POST body에 파일 조작 명령어(upload,put,mkfile)가 포함된 요청. - 탐지 패턴 (정규식):
\/wp-content\/plugins\/wp-file-manager\/lib\/elFinder\/php\/connector\.php.*(command=(upload|put|mkfile))
2. SIEM 탐지 쿼리 (의사코드)
1SELECT source_ip, request_uri, user_agent, http_response_code 2FROM web_logs 3WHERE (request_uri LIKE '%/wp-content/plugins/wp-file-manager/lib/elFinder/php/%' 4 OR request_uri LIKE '%/wp-content/plugins/wp-file-manager/lib/files/%') 5AND (request_body LIKE '%command=upload%' OR request_body LIKE '%command=put%' OR request_body LIKE '%command=mkfile%') 6AND http_response_code IN (200, 201)3. 파일 시스템 무결성 감시 (FIM)
- 지표: 플러그인 내부 경로 및 업로드 경로 내 신규
.php파일 생성 이벤트. - 감시 대상:
/wp-content/plugins/wp-file-manager/lib/files/,/wp-content/plugins/wp-file-manager/lib/elFinder/php/,/wp-content/uploads/ - 조건:
EventID: FileCreateANDFileName: *.php
오탐 튜닝 및 주의사항
- 정상 관리자의 사용 패턴과 구분하기 위해 요청의 세션 쿠키(Session Cookie) 존재 여부를 확인하십시오. 인증 없이(
Unauthenticated) 들어오는 위 경로의 요청은 모두 공격 시도로 간주해도 무방합니다.
🛡️ 완화 방안
CVSS 10.0 및 KEV 등재에 따라 우선순위는 immediate이며, 24시간 내 조치를 권고합니다.
즉시 (긴급 차단)
- 조치: WAF 또는 웹 서버 설정(Nginx/Apache)에서
/wp-content/plugins/wp-file-manager/lib/elFinder/php/경로로의 모든 외부 접근을Deny처리합니다. - 난이도: 낮음 / 운영 영향: 플러그인 기능 전면 중단 / 검증: 해당 URL 접근 시 403 Forbidden 반환 확인.
단기 (완화)
- 조치 1 (포렌식 스캔):
/wp-content/plugins/wp-file-manager/lib/files/및/wp-content/uploads/내에 생성된 비정상적인.php파일이 있는지 전수 조사하고 삭제합니다. (추정: 이미 침투했을 가능성이 매우 높음) - 조치 2 (실행 권한 제거): 웹 서버 설정 또는
.htaccess를 통해 위 디렉터리 내 PHP 엔진 실행을 강제 종료(php_flag engine off)하거나, 파일 시스템 수준에서 Execution bit를 제거합니다. 단, 웹 요청을 통한 RCE는 여전히 가능하므로 접근 차단이 선행되어야 합니다. - 난이도: 중간 / 운영 영향: 낮음 / 검증: 업로드된
.php파일 호출 시 실행되지 않고 소스가 출력되거나 에러가 발생하는지 확인.
근본 (해결)
- 조치:
wp-file-manager플러그인을 6.9 버전 이상으로 업데이트하거나, 불필요할 경우 즉시 삭제합니다. - 난이도: 낮음 / 운영 영향: 매우 낮음 / 검증: 업데이트 후 취약한 커넥터 파일(
connector.php)의 존재 여부 및 접근 가능 여부 재확인.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=10.0 · KEV · EPSS=0.97328 · exploit=easy · in_scope=None