
CVE-2026-3844 — Unauthenticated Arbitrary File Upload to RCE in Breeze Cache (WordPress). CVSS 9.8 CRITICAL. Mass scanner + auto shell injector with multi-threading.
╔════════════════════════════════════════════════════════════╗
║ CVE-2026-3844 ║
║ Breeze Cache <= 2.4.4 Arbitrary File Upload ║
║ Unauthenticated RCE | Authorized Lab Use Only ║
╚════════════════════════════════════════════════════════════╝
CVE-2026-3844는 취약한 버전의 Breeze Cache WordPress 플러그인에 영향을 주는 임의 파일 업로드 취약점입니다. 로컬 Gravatar 호스팅이 활성화되면 Breeze는 아바타 URL을 가져와 다운로드한 파일을 파일 형식을 충분히 검증하지 않은 채 웹에서 접근 가능한 캐시 디렉터리에 저장할 수 있습니다.
Attacker-controlled avatar URL
|
v
WordPress renders an avatar
|
v
Breeze Gravatar local-cache handler
|
v
download_url() fetches the remote file
|
v
File is saved under wp-content/cache/breeze-extra/gravatars/
|
v
Web-accessible uploaded file
취약한 동작은 Breeze의 Gravatar 캐싱 흐름에 있습니다:
src URL은 Breeze Gravatar 핸들러에 의해 수락됩니다.download_url()을 통해 다운로드됩니다.관련 취약 영역:
inc/class-breeze-cache-cronjobs.php
fetch_gravatar_from_remote()
대상 요구 사항:
<= 2.4.4를 사용하는 WordPress 사이트.Host Files Locally - Gravatars가 활성화된 상태.로컬 실습 참고 사항:
git clone https://github.com/AnggaTechI/CVE-2026-3844.git
cd CVE-2026-3844
python3 --version
타사 Python 패키지는 필요하지 않습니다. 스크립트는 Python 표준 라이브러리 모듈만 사용합니다.
도구 실행:
python3 exploit.py
단일 대상 예시:
[*] Target URL or file: http://localhost/lab-wp
대상 목록 예시:
[*] Target URL or file: targets.txt
[*] Threads (default 30): 30
[*] Auto-inject on vulnerable? [y/N]: n
출력 예시:
[+] Loaded 1 target(s)
[+] Scanning 1 targets with 30 threads
[+] [1/1] localhost/lab-wp -> v2.4.4 gravatar=ON
[+] VULNERABLE: 1/1
[+] Saved: result.txt
스크립트는 대상이 WordPress로 보이는지 확인하고, Breeze 플러그인 메타데이터를 읽은 다음, 감지된 버전을 취약 범위와 비교합니다.
스크립트는 Breeze의 breeze-extra/gravatars 캐시 참조를 확인하여 로컬 Gravatar 호스팅이 활성화되어 있는지 추론하려고 시도합니다.
자동 주입이 활성화되면 스크립트는 생성된 테스트 페이로드를 배포하고 해당 마커를 확인하여 악용 가능성을 검증하려고 시도합니다.
로컬 실습의 경우 스크립트는 WordPress 루트를 식별할 수 있을 때 직접 파일 시스템 액세스를 사용할 수 있습니다. 원격 승인 테스트의 경우 임시 페이로드 서버를 시작하고 Breeze의 Gravatar 캐싱 흐름을 트리거하려고 시도합니다.
WordPress 설정에 따라 캐시된 파일은 다음 형식 중 하나로 나타날 수 있습니다:
/wp-content/cache/breeze-extra/gravatars/<filename>
/wp-content/cache/breeze-extra/gravatars/1/<filename>
첫 번째 경로는 일반적인 단일 사이트 WordPress 설치에서 흔합니다. 두 번째는 블로그/사이트 ID가 포함된 경우 나타날 수 있습니다.
로컬 WordPress 실습 환경에서 테스트할 때 이 체크리스트를 사용하세요:
2.4.4가 설치되어 있을 것.Host Files Locally - Gravatars가 활성화되어 있을 것.wp-content/cache/breeze-extra/gravatars/ 아래에 캐시 디렉터리가 존재할 것.wp-content 경로에서 파일을 제공할 수 있을 것.gravatar=OFF
플러그인이 활성화되어 있을 수 있지만 Breeze가 아직 로컬 Gravatar 캐시 파일을 생성하지 않았습니다. 아바타를 렌더링하는 페이지를 방문하거나 실습 환경에서 WordPress 아바타 렌더링 경로를 호출하세요.
not vulnerable
일반적인 원인은 패치된 Breeze 버전, Breeze 미설치, URL에서 WordPress가 감지되지 않음, 또는 대상 경로에 /lab-wp와 같은 하위 디렉터리가 누락된 경우입니다.
Injection failed
Gravatar 설정이 비활성화되어 있거나, 사이트가 아바타를 공개적으로 렌더링하지 않거나, 캐시 경로에 쓸 수 없거나, WordPress 서버에서 원격 페이로드 URL에 접근할 수 없을 수 있습니다.
이 저장소는 교육, 로컬 실습 재현, 그리고 승인된 보안 테스트를 위한 것입니다. 소유하지 않았거나 테스트에 대한 명시적 허가가 없는 시스템에 대해 실행하지 마십시오.
| 필드 | 세부 정보 |
|---|
| CVE | CVE-2026-3844 |
| 제품 | Breeze Cache, WordPress Cache Plugin |
| 공급업체 | Cloudways |
| 취약점 유형 | 무제한 파일 업로드 |
| CWE | CWE-434 |
| 심각도 | 치명적, CVSS 9.8 |
| 인증 | 불필요 |
| 영향을 받는 버전 | Breeze Cache <= 2.4.4 |
| 수정 버전 | 2.4.5 이상 |
| 필수 설정 | Host Files Locally - Gravatars 활성화 |