Joomla SP Page Builder の CVE-2026-48908 を検証します。不正なアイコンアップロードによる PHP コード実行につながります。auditd/PCAP エビデンス、イベントタイムライン、防御研究のための SOC 検出推奨事項を含みます。
Joomla SP Page Builder コンポーネントにおけるCVE-2026-48908の実験室検証。技術的証拠、イベント再構築、防御的検知の機会に焦点を当てています。
このリポジトリは、SP Page Builder の asset.uploadCustomIcon エンドポイントが、Joomla のメディアディレクトリ配下にPHPアーティファクトを書き込む結果となるアイコンアーカイブのアップロードを受け入れた、管理下テストを文書化しています。アップロードされたPHPファイルをHTTP経由で呼び出すと、Webサーバープロセスユーザーとしてコマンド実行が発生しました。その結果生じたHTTP、ファイル、プロセス、認証、ネットワークアクティビティは、Apacheコンテナログ、Linux auditd、tcpdump、Dockerテレメトリ、ファイル変更ポーリング、およびWindowsホストからのスクリーンショットを使用してキャプチャされました。
[!IMPORTANT] このリポジトリにはレポートとスクリーンショットのみが含まれています。攻撃的なエクスプロイトコード、ペイロードソース、生のPCAPファイル、生のホスト証拠パッケージは意図的に含まれていません。本資料は、脆弱性検証、SOCエンジニアリング、検知開発、インシデント対応準備、および許可された研究を目的としています。
両レポートには、完全なテスト方法論、証拠抜粋、イベントタイムライン、ファイル変更証拠、ネットワーク指標、緩和策ガイダンス、監査推奨事項、およびSIEMロジックの例が含まれています。
.
├── README.md
├── SHA256SUMS.txt
├── reports/
│ ├── CVE-2026-48908_SP_Page_Builder_detection_EN.pdf
│ └── CVE-2026-48908_SP_Page_Builder_detection_PL.pdf
└── screenshots/
├── 01_poc_upload_and_code_execution.png
├── 02_http_whoami_www_data.png
├── 03_tcp_callback_ncat.png
├── 04_reverse_shell_session.png
└── 05_root_access_and_su_failure_redacted.png
エクスプロイトソース、ペイロードソース、生のPCAP、生のDocker証拠パッケージ、またはDOCXソースファイルは含まれていません。
| 役割 | システム |
|---|---|
| 被害ホスト | Ubuntu 24.04.4 LTS, kernel 6.17.0-35-generic, Docker Engine 29.5.3 |
| 対象アプリケーション | Joomla 5.4.7, PHP 8.3.32, Apache HTTP Server, image joomla:5-php8.3-apache |
| コンポーネント | JoomShaper SP Page Builder |
| コンテナ | joomla5-builders |
| 攻撃者ワークステーション | Microsoft Windows 11 Home 10.0.26200 |
| Joomlaサービス | http://172.20.10.3:8080 |
| Windowsテストアドレス | 172.20.10.2 |
| コンテナアドレス | 172.21.0.3 |
| テスト日 | 2026年7月9日 |
Joomlaのドキュメントルート /var/www/html はDockerボリューム joomla5-builders_joomla_data によってバックアップされていました。これは検知にとって重要です。docker diff はボリューム内のファイル変更に対する詳細な可視性を提供しなかったため、ファイル監視はボリュームを認識したファイル一覧とホスト側の監視ガイダンスに依存する必要がありました。
テストは隔離された許可された実験室環境で実施されました。検証は以下のシーケンスをカバーしました。
asset.uploadCustomIcon エンドポイントは、実験室環境でアップロードされたアイコンアーカイブを受け入れました。/media/com_sppagebuilder/assets/iconfont/ 配下に新しいディレクトリとファイルが作成されました。.PHP 拡張子に対するPHPハンドリングを変更する .htaccess ファイルが含まれていました。/root へのアクセスと su - によるユーザー切り替えの試行は失敗しました。レポートは、再利用可能なエクスプロイトやペイロードの実装を配布することなく、証拠と検知ロジックを意図的に文書化しています。
実験室テストで確認された内容:
asset.uploadCustomIcon エンドポイントを通じた不正なアップロード;.htaccessアーティファクトの作成;www-data としての対話型リバースシェルセッション;コンテナ内での有効なIDは以下の通り:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
特権昇格の試行失敗は以下のように確認されました:
cd root
bash: cd: root: Permission denied
su -
Password:
su: Authentication failure
公開PoCはいくつかの拡張子バリエーションをテストし、実験室環境では大文字小文字が混在したPHP拡張子と.htaccessの組み合わせが実行につながる可能性があることを確認しました。

制御されたHTTPリクエストで whoami を実行し、ブラウザに有効なプロセスユーザーが表示されました。

対話型テストの前に、ターゲット環境からWindowsホストへのTCPポート4444への送信接続を確認するために、より安全な1メッセージコールバックが使用されました。

対話型セッションにより、www-data としての実行、オペレーティングシステムとしてのLinux、およびJoomla SP Page Builderメディアパス配下の作業ディレクトリが確認されました。

/root へのアクセスと su - による認証試行は失敗しました。テストパスワードの公開を避けるため、スクリーンショットは編集されています。

完全なタイムラインは両方のPDFレポートで入手可能です。最も重要なイベントは以下の通り:
| UTC | イベント |
|---|---|
| 19:33:56 | Linux監査、tcpdump、Dockerイベント、ファイル変更ポーリング開始 |
| 19:34:23 | /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon への一連のPOSTリクエスト |
| 19:34:23.291 | 制御された算術コマンドを含むアップロードされた.PHPファイルへのGET |
| 19:34:23.329 | 制御された算術コマンドを含むアップロードされた.pHpファイルへのGET |
| 19:34:23.361 | 制御された算術コマンドを含むアップロードされた.PhpファイルへのGET |
| 19:34:23.398 | 制御された算術コマンドを含む最後の.PHPアーティファクトへのGET |
| 19:34:23.411 | 公開PoCがアップロードされたPHPアーティファクトを通じてidを実行し、HTTP 200を受信 |
| 19:35:05 | 手動whoamiリクエストがwww-dataを返す |
| 19:35:27 | 172.20.10.2:4444 への1回限りのTCPコールバック成功 |
| 19:35:59 | HTTPリクエストが172.20.10.2:4444 へのリバースTCP接続を開始 |
| 19:36:22-19:36:31 | whoami、uname、id、pwd が実行コンテキストを確認 |
| 19:37:13 | cd root が Permission denied を返す |
| 19:37:21-19:37:28 | su - 試行が Authentication failure で失敗 |
| 19:39:25 | 監査コレクション停止、アーティファクトをパッケージ化 |
被害ホストは以下を収集しました:
execve の auditd イベント;tcpdump を使用したパケットキャプチャ;また、テストでは監視の制限も特定されました。/var/www/html がDockerボリュームによってバックアップされていたため、docker diff は /var/www/html/media/com_sppagebuilder/assets/iconfont/ 配下の詳細なファイル作成を表示しませんでした。したがって、ファイル整合性監視はボリュームを支える実際のホストパスをカバーする必要があります。
Windowsホストの証拠は、レポートに関連するスクリーンショットに意図的に限定されました:
whoami のブラウザ出力;/root と su - の試行失敗。以下の組み合わせについて、HTTP、リバースプロキシ、WAF、またはネットワークテレメトリを監視します:
POST /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
User-Agent contains: sppb-rce-poc
Status: 200, 201, or 204
本番環境では、公開PoCのUser-Agentのみに依存しないでください。エンドポイントと予期しないアップロードパターンの方が、User-Agentの値よりも安定した指標です。
.htaccess以下のパターンに一致する新規または変更されたファイルについて、ファイルテレメトリを監視します:
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.php
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.PHP
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.pHp
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.Php
/media/com_sppagebuilder/assets/iconfont/*/fonts/.htaccess
メディアアップロードディレクトリ内に AddType application/x-httpd-php .PHP を含む .htaccess が存在することは、価値の高い指標です。
アップロードアクティビティを、以下のようなパスへの後続のHTTPリクエストと関連付けます:
/media/com_sppagebuilder/assets/iconfont/*/fonts/*
リクエストがPHPのような拡張子を対象とし、t= や c= などのパラメータを含む場合、信頼性が高まります。
価値の高いプロセス指標には以下が含まれます:
user: www-data, apache, or nginx
process: bash, sh, dash, or php
command line contains: /dev/tcp, bash -i, redirection operators, or unusual interpreter execution
Webサーバープロセスによって起動されたシェルまたはインタプリタが、ワークステーションまたは異常な宛先ポートへの送信接続を開始した場合にアラートを発します。実験室のイベントではTCPポート4444が使用されましたが、本番環境での検知は単一のポートに依存すべきではありません。
テストでは失敗した su - 試行が発生しました。unix_chkpwd などの認証ヘルパー、/var/log/btmp への書き込み、およびWebサービスアカウント侵害後の対話型コマンドを監視します。
HTTPアップロード指標が検出された場合、SOCは直ちに以下と相関させるべきです:
/media/com_sppagebuilder/assets/iconfont/ 配下の新しいディレクトリ;.htaccess ファイル;t= や c= などのコマンドライクなクエリパラメータ;whoami、id、uname、hostname、pwd、ip、ifconfig、netstat、ss などの発見コマンド;単一のアップロードイベントだけでは必ずしも十分ではありません。最も強力なアラートは、アップロード、ファイル作成、ファイルアクセス、プロセス実行、および送信ネットワークテレメトリを同じ短い時間枠内で組み合わせます。
/media/com_sppagebuilder/assets/iconfont/ およびJoomlaメディアディレクトリ全体で、PHPライクなファイルと .htaccess アーティファクトを確認する。.htaccess、.phtml、.phar、アーカイブ、または実行可能アーティファクトを削除する。asset.uploadCustomIcon エンドポイントへのアクセスを制限するか、アラートを発する。docker diff だけに依存しない。www-data としてのコード実行でした。rootへの特権昇格は確認されませんでした。この資料は、防御的なセキュリティ研究、脆弱性管理、検知エンジニアリング、インシデント対応準備、および許可されたテストのために提供されています。明示的な許可なしにシステムに対して使用しないでください。